public void SubscribeIncompleteOrder(String type, String code, string orderSysId, String orientation, int VolumeTotalOriginal, decimal price, int OrderRef, int orderStatus, int ComboOffsetFlag, string user) { RecordItem _record = new RecordItem(); _record = this.GetOrAdd(OrderRef, _record); _record.OrderTime_Start = DateTime.Now; _record.Code = code; _record.Orientation = orientation; _record.VolumeTotalOriginal = VolumeTotalOriginal; _record.VolumeTotal = 0; _record.Price = price; _record.AveragePrice = 0; _record.VolumeTraded = 0; _record.ErrMsg = String.Empty; _record.OrderRef = OrderRef; _record.OrderStatus = orderStatus; _record.Trades = new List <TradeItem>(); _record.CombOffsetFlag = ComboOffsetFlag; _record.Status = TradeDealStatus.PREORDER; _record.CombOffsetFlag = ComboOffsetFlag; _record.OrderSysID = orderSysId; _record.User = user; this.AddOrUpdate(OrderRef, _record, (key, oldValue) => oldValue = _record ); OrderViewItem order = new OrderViewItem(_record.OrderRef.ToString(), _record.OrderSysID, _record.Code, _record.Orientation, _record.CombOffsetFlag.ToString(), _record.VolumeTotalOriginal.ToString(), _record.VolumeTotal.ToString(), _record.Price.ToString(), _record.ErrMsg, _record.OrderTime_Start.ToString()); TradeMonitor.Instance.updateOrderList(_record.User, order); }
/// <summary> /// 更新委托信息 /// </summary> /// <param name="volumeTraded"></param> /// <param name="OrderRef"></param> /// <param name="OrderSysID"></param> /// <param name="StatusMsg"></param> /// <param name="OrderStatus"></param> /// <param name="VolumeTotal"></param> /// <param name="ExchangeID">退货使用</param> public void UpdateOrder(int volumeTraded, int OrderRef, String OrderSysID, String StatusMsg, int OrderStatus, int VolumeTotal, String ExchangeID) { RecordItem _record = new RecordItem(); _record = this.GetOrAdd(OrderRef, _record); _record.VolumeTraded = volumeTraded; _record.VolumeTotal = VolumeTotal; _record.ErrMsg = StatusMsg; _record.OrderStatus = OrderStatus; _record.OrderSysID = OrderSysID; _record.ExchangeID = ExchangeID; _record.Status = TradeDealStatus.ORDERING; if (_record.OrderSysID.Trim() == "0" && _record.OrderSysID != String.Empty) { QueryEntrustOrderStruct_M record = new QueryEntrustOrderStruct_M() { Code = _record.Code, User = _record.User, OrderRef = _record.OrderRef, Direction = Convert.ToInt32(_record.Orientation), ExchangeID = ExchangeID, OrderPrice = Convert.ToDouble(_record.Price), OrderSysID = _record.OrderSysID.Trim(), SecurityType = Convert.ToSByte(_record.Type), StrategyId = _record.StrategyId, OffsetFlag = _record.CombOffsetFlag, Amount = _record.VolumeTotalOriginal }; ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.CreateFutureERRecord), ((object)record)); } //若交易已撤单 或者 全部成交则标记该委托完成 if (OrderStatus == 53 || _record.VolumeTotalOriginal == _record.VolumeTraded) { _record.OrderTime_Completed = DateTime.Now; _record.Status = TradeDealStatus.ORDERCOMPLETED; } this.AddOrUpdate(OrderRef, _record, (key, oldValue) => oldValue = _record ); if (UserRequestMap.GetInstance().Count == 0) { return; } String USERNAME = string.Empty; try { USERNAME = UserRequestMap.GetInstance()[OrderRef]; } catch (Exception ex) { DBAccessLayer.LogSysInfo("TradeAdditionalClass->UpdateOrder", ex.ToString()); } OrderViewItem order = new OrderViewItem(_record.OrderRef.ToString(), _record.OrderSysID, _record.Code, _record.Orientation, _record.CombOffsetFlag.ToString(), _record.VolumeTotalOriginal.ToString(), _record.VolumeTotal.ToString(), _record.Price.ToString(), _record.ErrMsg, _record.OrderTime_Start.ToString()); TradeMonitor.Instance.updateOrderList(USERNAME, order); if (_record.Status == TradeDealStatus.ORDERCOMPLETED) { CompletedTradeRecord.GetInstance().Update(_record.OrderRef, _record); } }