/// <summary> /// 事件处理 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> //private void ScheduleMessageBuffer_QueueItemProcessEvent(object sender, // QueueItemHandleEventArg<OrderCacheMessageAccpetItem> e) //{ // //开市处理 // if (e.Item.Args.TimeType == Entity.Contants.Types.TradingTimeType.MacthBeginWork // //||e.Item.Args.TimeType == Types.TradingTimeType.Open // ) // { // string code = e.Item.Commodity.CommodityCode; // //现货 // if (e.Item.BreedClassType == Types.BreedClassTypeEnum.Stock) // { // if (this._XHOrderContainer.ContainsKey(code)) // { // if (IsTimeDone(code)) // { // var xHList = this._XHOrderContainer[code]; // foreach (var value in xHList.Values) // { // SendXHValue(value); // } // } // } // //商品期货 // } // else if (e.Item.BreedClassType == Types.BreedClassTypeEnum.CommodityFuture) // { // if (this._QHOrderContainer.ContainsKey(code)) // { // if (IsTimeDone(code)) // { // var xHList = this._QHOrderContainer[code]; // foreach (var value in xHList.Values) // { // SendSPQHValue(value); // } // } // } // } //股指期货 // else if (e.Item.BreedClassType == Types.BreedClassTypeEnum.StockIndexFuture) // { // if (this._GZQHOrderContainer.ContainsKey(code)) // { // if (IsTimeDone(code)) // { // var xHList = this._GZQHOrderContainer[code]; // foreach (var value in xHList.Values) // { // SendGZQHValue(value); // } // } // } // } // } // //收市处理,清除委托缓存 // if (e.Item.Args.TimeType == Entity.Contants.Types.TradingTimeType.MatchEndWork) // { // //LogHelper.WriteDebug("OrderCache:收市处理,清除委托缓存"); // _XHOrderContainer.Clear(); // _QHOrderContainer.Clear(); // _GZQHOrderContainer.Clear(); // } //} #region Cache Order /// <summary> /// 缓存现货 /// </summary> /// <param name="orderRequest"></param> public bool CacheStockOrder(XhTodayEntrustTableEx orderRequest) { bool result = false; if (orderRequest != null && orderRequest.OriginalEntity != null) { if (orderRequest.IsCacheOrder) { return(true); } try { orderRequest.IsCacheOrder = true; string strCode = orderRequest.OriginalEntity.SpotCode; string strOrderId = orderRequest.OriginalEntity.EntrustNumber; if (_XHOrderContainer.ContainsKey(strCode)) { var levelOneItem = _XHOrderContainer[strCode]; if (levelOneItem == null) { levelOneItem = new Dictionary <string, XhTodayEntrustTableEx>(); } if (levelOneItem.ContainsKey(strOrderId)) { LogHelper.WriteDebug("OrderCache.CacheStockOrder:已经缓存委托单" + strOrderId); } else { levelOneItem.Add(strOrderId, orderRequest); } } else { var levelOneItem = new Dictionary <string, XhTodayEntrustTableEx>(); levelOneItem.Add(strOrderId, orderRequest); _XHOrderContainer.Add(strCode, levelOneItem); } result = true; } catch (Exception ex) { string strMessage = "GT-2114:[现货报盘]缓存未开市委托异常。"; orderRequest.OriginalEntity.OrderMessage = strMessage; OrderOfferDataLogic.UpdateStockOrderMessage(orderRequest.OriginalEntity); LogHelper.WriteError(strMessage, ex); result = false; } } return(result); }
private void SendXHValue(XhTodayEntrustTableEx value) { if (value.HasSendCacheOrder) { return; } //if(!IsTimeDone(value.OriginalEntity.SpotCode)) // return; try { value.HasSendCacheOrder = true; this.XHOfferWakeupEvent(this, new WakeupEventArgs <XhTodayEntrustTableEx>(value)); } catch (Exception ex) { string strMessage = "GT-2111:[现货报盘]缓存未开市委托唤醒异常"; value.OriginalEntity.OrderMessage = strMessage; OrderOfferDataLogic.UpdateStockOrderMessage(value.OriginalEntity); LogHelper.WriteError(ex.Message, ex); } }