private void OnReturnOrder(PBOrderInfo rsp) { lock (OrderVMCollection) { if (!OrderVMCollection.Any(order => (rsp.OrderSysID != 0 && rsp.OrderSysID == order.OrderSysID) || (rsp.OrderID == order.OrderID && rsp.SessionID == order.SessionID))) { var orderVM = new OrderVM(this) { OrderID = rsp.OrderID, OrderSysID = rsp.OrderSysID, Portfolio = rsp.Portfolio, SessionID = rsp.SessionID, Direction = (DirectionType)rsp.Direction, LimitPrice = rsp.LimitPrice, Volume = rsp.Volume, VolumeTraded = rsp.VolumeTraded, VolumeRemain = rsp.VolumeRemain, ExecType = (OrderExecType)rsp.ExecType, TIF = (OrderTIFType)rsp.Tif, VolCondition = (OrderVolType)rsp.VolumeCondition, TradingType = (TradingType)rsp.TradingType, Active = rsp.Active, Status = (OrderStatus)rsp.OrderStatus, OpenClose = (OrderOpenCloseType)rsp.Openclose, InsertTime = rsp.InsertTime, UpdateTime = rsp.UpdateTime, CancelTime = rsp.CancelTime, Exchange = rsp.Exchange, Contract = rsp.Contract, Message = Encoding.UTF8.GetString(rsp.Message.ToByteArray()), InvestorID = rsp.InvestorID, //rsp.InsertDate //rsp.Message //rsp.OrderType //rsp.StopPrice //rsp.TradingDay }; OrderVMCollection.Add(orderVM); } } }
private void OnUpdateOrder(PBOrderInfo rsp) { lock (OrderVMCollection) { var orderVM = OrderVMCollection.FirstOrDefault(order => (rsp.OrderSysID != 0 && rsp.OrderSysID == order.OrderSysID) || (rsp.OrderID == order.OrderID && rsp.SessionID == order.SessionID)); if (orderVM != null) { orderVM.Active = rsp.Active; orderVM.Status = (OrderStatus)rsp.OrderStatus; orderVM.OrderSysID = rsp.OrderSysID; orderVM.UpdateTime = rsp.UpdateTime; orderVM.Message = Encoding.UTF8.GetString(rsp.Message.ToByteArray()); } else { OnReturnOrder(rsp); } } }