/// <summary>
 /// 从限价挂单列表中移除指定的限价挂单
 /// </summary>
 /// <param name="orderData">要移除的限价挂单</param>
 private void RemovePendingOrderData(PendingOrderData orderData)
 {
     if (_dpObj.CheckAccess())
         TradeHoldOrderInfo.TdHoldOrderList.Remove(orderData);
     else
         _dpObj.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
             new PendingOrderDataDelegate(RemovePendingOrderData),
             orderData);
 }
        /// <summary>
        /// 添加一个限价挂单到限价挂单列表,并为其赋值它所属的商品信息类
        /// </summary>
        /// <param name="orderData">要添加的限价挂单</param>
        private void AddPendingOrderData(PendingOrderData orderData)
        {
            ProductInformation productInfo = GetProductInfoByName(orderData.ProductName);
            orderData.OwnedProduct = productInfo;

            if (_dpObj.CheckAccess())
                PendingOrderList.Add(orderData);
            else
                _dpObj.Dispatcher.BeginInvoke(DispatcherPriority.Normal,
                    new PendingOrderDataDelegate(AddPendingOrderData),
                    orderData);
        }
        /// <summary>
        /// 撤销限价挂单
        /// </summary>
        /// <param name="loginID">登陆标识</param>
        /// <param name="userType">用户类型,0:交易用户,1:管理员,2:金商</param>
        /// <param name="orderData">要撤销的限价挂单</param>
        /// <returns>ErrType</returns>
        public ErrType RevocationPendingOrder(string loginID, int userType, PendingOrderData orderData)
        {
            try
            {
                DelHoldInfo delHoldInfo = TradeConverter.ToDelHoldInfo(loginID, userType, orderData);
                MarDelivery marDel = TradeService.DelHoldOrder(delHoldInfo);
                if (!marDel.Result)
                    return new ErrType(ERR.SERVICE, marDel.Desc);

                return GeneralErr.Success;
            }
            catch (TimeoutException te)
            {
                FileLog.WriteLog("", Assembly.GetExecutingAssembly().GetName().Name, this.GetType().Name, new StackTrace().GetFrame(0).GetMethod().Name, te.Message); 
                return new ErrType(ERR.EXEPTION, ErrorText.TimeoutException);
            }
            catch (Exception ex)
            {
                FileLog.WriteLog("", Assembly.GetExecutingAssembly().GetName().Name, this.GetType().Name, new StackTrace().GetFrame(0).GetMethod().Name, ex.Message);
                return new ErrType(ERR.EXEPTION, ErrorText.OperationError);
            }
        }
 /// <summary>
 /// 撤销指定的限价挂单
 /// </summary>
 /// <param name="selectedPendingOrder">要撤销的限价挂单</param>
 public void RevocationPendingOrder(PendingOrderData selectedPendingOrder)
 {
     string msg = string.Format("确定要撤销该挂单:{0}?", selectedPendingOrder.OrderID);
     MessageBoxResult mbResult = MessageBox.Show(msg, "请确认撤销操作", MessageBoxButton.YesNo, MessageBoxImage.Question);
     if (mbResult == MessageBoxResult.Yes)
     {
         int userType = ToUserType(_accType);
         ErrType err = _tradeService.RevocationPendingOrder(_loginID, userType, selectedPendingOrder);
         if (err == GeneralErr.Success)
         {
             RemovePendingOrderData(selectedPendingOrder);
             msg = string.Format("撤销挂单成功:{0}", selectedPendingOrder.OrderID);
             MessageBox.Show(msg, "提示", MessageBoxButton.OK, MessageBoxImage.Information);
         }
         else
         {
             msg = string.Format("撤销挂单失败:{0},原因:\r\n{1}", selectedPendingOrder.OrderID, err.ErrMsg);
             MessageBox.Show(msg, err.ErrTitle, MessageBoxButton.OK, MessageBoxImage.Warning);
         }
     }
 }
        internal static DelHoldInfo ToDelHoldInfo( string loginID, int userType, PendingOrderData orderData ) {
            return new DelHoldInfo {
                CurrentTime = orderData.OwnedProduct.RealTimeTime,
                HoldOrderID = orderData.OrderID,
                LoginID = loginID,
                ReasonType = "1",//0为自动撤销,1为用户撤销   { 考虑是否增加  2 金商撤销,3,管理员撤销 }
                RtimePrices = orderData.RealTimePrice,
                TradeAccount = orderData.TradeAccount,
                //Todo:用户类型待处理
                //UserType = userType,
            };


        }