Example #1
0
        /// <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
        }
Example #2
0
        /// <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);
            }
        }
Example #4
0
        //void IOrderDealRptCallback.ModifyHKStockOrderRpt(HKModifyBackEntity model)
        //{
        //    throw new NotImplementedException();
        //}

        IAsyncResult IOrderDealRptCallback.BeginModifyHKStockOrderRpt(HKModifyBackEntity model, AsyncCallback callback, object asyncState)
        {
            throw new NotImplementedException();
        }