/// <summary> /// 保存撮合中心回报 /// </summary> /// <param name="model">回报实体</param> public void SaveModifyBack(HKModifyBackEntity model) { #region 通道号或者成交实体不能为空 if (model == null || string.IsNullOrEmpty(model.ChannelNo)) { return; } #endregion #region 步撤单实体 lock (((ICollection)MatchCenterManager.Instance.ModifyBackEntitys).SyncRoot) { if (MatchCenterManager.Instance.ModifyBackEntitys.ContainsKey(model.ChannelNo)) { Queue <HKModifyBackEntity> queue = MatchCenterManager.Instance.ModifyBackEntitys[model.ChannelNo]; queue.Enqueue(model); //MatchCenter.Instance.CancelBackEntitys.Remove(model.ChannelNo); //MatchCenter.Instance.CancelBackEntitys[model.ChannelNo] = queue; } else { var queue = new Queue <HKModifyBackEntity>(); queue.Enqueue(model); MatchCenterManager.Instance.ModifyBackEntitys[model.ChannelNo] = queue; } } #endregion }
/// <summary> /// 港股改单减量委托回报 /// </summary> /// <param name="model"></param> public void ModifyHKStockOrderRpt(HKModifyBackEntity model) { if (string.IsNullOrEmpty(model.Id)) { model.Id = Guid.NewGuid().ToString(); } string format = "M<---港股改单回报接收(类型2改单)DoCallbackProcess.ModifyHKStockOrderRpt[ID={0},IsSuccess={1},OrderNo={2}]"; string desc = string.Format(format, model.Id, model.IsSuccess, model.OrderNo); LogHelper.WriteDebug(desc); //回推改单结果到前台 HKModifyOrderPushBack pushBack = new HKModifyOrderPushBack(); pushBack.IsSuccess = model.IsSuccess; pushBack.Message = model.Message; //这是撮合队列的委托ID //pushBack.OriginalRequestNumber = model.OrderNo; //这里撮合回推回来的回推通道ID不是前台的ID //pushBack.CallbackChannlId = model.ChannelNo; string entrustNumber = ""; string channelID = HKDataAccess.GetModifyOrderChannelIDByMacID(model.OrderNo, out entrustNumber); pushBack.OriginalRequestNumber = entrustNumber; pushBack.NewRequestNumber = entrustNumber; pushBack.CallbackChannlId = channelID; //pushBack.TradeID = model. CounterOrderService.Instance.AcceptHKModifyOrder(pushBack); string message = ""; //如果改单成功的话,那么发送内部的撤单回报 if (model.IsSuccess) { var cancelEntity = model.CanleOrderEntity; message = "类型2改单成功-" + cancelEntity.Message; cancelEntity.Message = ""; CancelHKStockOrderRpt(cancelEntity); } else { message = "类型2改单失败-" + model.Message; } // var tet = HKDataAccess.GetTodayEntrustTable(model.OrderNo); //更新委托信息 //if (tet != null) //{ // tet.OrderMessage = message; // HKDataAccess.UpdateEntrustTable(tet); //} HKDataAccess.UpdateEntrustOrderMessage(entrustNumber, message); }
/// <summary> /// 撤消委托单 /// </summary> /// <param name="model">委托实体</param> public void ModifyOrder(HKModifyEntity model) { LogHelper.WriteDebug("[撮合单元运行撤销委托单方法]"); //委托实体为空 if (model == null) { return; } //bool cancel = false; string code = Guid.NewGuid().ToString(); var dataEntity = new HKModifyBackEntity(); //id dataEntity.Id = code; //委托单号码 dataEntity.OrderNo = model.OldOrderNo; //通道号码 dataEntity.ChannelNo = model.ChannelNo; decimal cancount = 0.00m; dataEntity.IsSuccess = false; dataEntity.Message = "改单失败,委托单不存在。"; OperationContext context = null; //通道号码不能为空 if (model.ChannelNo != null) { if (MatchCenterManager.Instance.OperationContexts.ContainsKey((model.ChannelNo))) { context = MatchCenterManager.Instance.OperationContexts[model.ChannelNo]; } } //上下文不能为空 if (context == null) { return; } try { var callback = context.GetCallbackChannel <IDoOrderCallback>(); if (callback != null) { callback.ModifyHKStockOrderRpt(dataEntity); } LogHelper.WriteDebug(" 改单单失败[" + "委托id=" + code + "委托代码=" + model.StockCode + ",撤单时间=" + DateTime.Now + ",委托单号码=" + model.OldOrderNo + ",撤单数量=" + cancount + "]"); } catch (Exception ex) { LogHelper.WriteError("CH-100:撤单wcf服务通道异常", ex); //TradePushBackImpl.Instanse.SaveCanceBack(dataEntity); } }
//void IOrderDealRptCallback.ModifyHKStockOrderRpt(HKModifyBackEntity model) //{ // throw new NotImplementedException(); //} IAsyncResult IOrderDealRptCallback.BeginModifyHKStockOrderRpt(HKModifyBackEntity model, AsyncCallback callback, object asyncState) { throw new NotImplementedException(); }