private OrderViewItem OrderMap(Order order) { var status = (OrderStatus)order.Status; var orderView = new OrderViewItem { Address = order.Address, Brand = order.Brand.Title, ClockType = order.ClockType.Title, Comments = order.Comments, DeadLine = order.DeadLine.Date, Delivery = order.Delivery.Title, Id = order.Id, Name = $"{order.User.FirstName} {order.User.LastName}", Payment = order.Payment.Title, Phone = order.PhoneNumber, Status = status.ToString(), ImagesUrl = new List <string>(), Cost = order.Cost }; foreach (var clockPhoto in order.ClockPhotos) { orderView.ImagesUrl.Add(clockPhoto.ImageUrl); } return(orderView); }
/// <summary> /// 页面股票/期货委托信息更新 /// 股票通过Entrust_query查询最新委托状态并更新 /// 期货通过UpdateOrder 函数更新最新状态 /// 该函数传入参数中的JsonString,是单只股票期货的状态,本地维护OrderList来保存之前交易的状态。 /// </summary> /// <param name="name"></param> /// <param name="JsonString"></param> public void updateOrderList(String name, OrderViewItem item) { try { if (item != null) { if (!OrderLists.Keys.Contains(name)) { List <OrderViewItem> ss = new List <OrderViewItem>(); ss.Add(item); OrderLists.Add(name, ss); } List <OrderViewItem> orders = OrderLists[name]; OrderViewItem order = orders.Find( delegate(OrderViewItem record) { return(record.OrderRef == item.OrderRef); } ); if (order == null) { OrderLists[name].Add(item); } else { order.MSG = item.MSG; order.VolumeTotal = item.VolumeTotal; } if (!UserConnectionRelation.ContainsKey(name)) { return; } _context.Clients.Client(UserConnectionRelation[name]).updateOrderList(JsonConvert.SerializeObject(orders)); } else { if (!UserConnectionRelation.ContainsKey(name)) { return; } if (!OrderLists.Keys.Contains(name)) { List <OrderViewItem> ss = new List <OrderViewItem>(); OrderLists.Add(name, ss); } List <OrderViewItem> orders = OrderLists[name]; _context.Clients.Client(UserConnectionRelation[name]).updateOrderList(JsonConvert.SerializeObject(orders)); } } catch (Exception ex) { DBAccessLayer.LogSysInfo("TradeMonitorHub-updateOrderList", ex.ToString()); GlobalErrorLog.LogInstance.LogEvent(ex.ToString()); } }
public void UpdateOrder(OrderViewItem orderViewItem) { var order = _orderRepository.GetById(orderViewItem.Id); order.Comments = orderViewItem.Comments; order.DeadLine = orderViewItem.DeadLine; order.Address = orderViewItem.Address; order.Cost = orderViewItem.Cost; _orderRepository.Update(order); }
private void threadproc() { while (true) { Thread.Sleep(1); if ((DateTime.Now - GlobalHeartBeat.GetGlobalTime()).TotalMinutes > 5) { log.LogEvent("由于供血不足,委托查询线程即将退出。"); break; } //单次循环最多查询100个交易的委托情况 int maxCount = 100; if (!_classTradeStock.getConnectStatus()) { _classTradeStock.Init(login, ErrorMsg); } if (lastmessagetime.Second != DateTime.Now.Second) { KeyValuePair<string, object> message1 = new KeyValuePair<string, object>("THREAD_ENTRUST_WORKER", (object)(DateTime.Now)); queue_system_status.GetQueue().Enqueue((object)message1); lastmessagetime = DateTime.Now; } while (maxCount > 0 && queue_query_entrust.GetQueueNumber() > 0) { maxCount--; //获取新委托 QueryEntrustOrderStruct_M item = (QueryEntrustOrderStruct_M)queue_query_entrust.GetQueue().Dequeue(); string err = string.Empty; //查询委托及获取实例 managedEntrustreturnstruct ret = new managedEntrustreturnstruct(); //ordersysid 首字母 为 'T' 是测试交易 if (item.OrderSysID.Length > 0 && item.OrderSysID[0] == 'T') { var temps = test.QueryEntrust(item); ret = temps; } else { var temps = _classTradeStock.QueryEntrust(item, err); if (temps.Length == 0) continue; ret = temps.ToList()[0]; } if (ret == null) continue; String USERNAME = UserRequestMap.GetInstance()[item.OrderRef]; if (ret == null) continue; OrderViewItem order = new OrderViewItem( item.OrderRef.ToString(), ret.cOrderSysID, ret.cSecurity_code, item.Direction.ToString(), "NA", ret.nVolumeTotalOriginal.ToString(), ret.nVolumeTotal.ToString(), item.OrderPrice.ToString(), GetStatusWord(ret.cOrderStatus), ret.cInsertTime); String JSONString = JsonConvert.SerializeObject(order); TradeMonitor.Instance.updateOrderList(USERNAME, JSONString); //目前仅考虑 1对1 返回的情况,不考虑出现1对多 ,类似基金交易的情况 //将委托变动返回更新数据库 if (DBAccessLayer.DBEnable == true) { //更新数据,记录入数据库 ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.UpdateERRecord), (object)(ret)); //此处判断,相应代码的委托是否完成 //此处逻辑需要待返回报文内容确认后修改 //测试使用 if ((ret.cOrderStatus.ToString() != ((int)(EntrustStatus.Dealed)).ToString()) && (!(ret.cOrderStatus.ToString() == ((int)EntrustStatus.Canceled).ToString() && ret.nVolumeTotal == 0))) { queue_query_entrust.GetQueue().Enqueue((object)item); continue; } //委托已经完成,进入成交状态查询 managedBargainreturnstruct bargin = new managedBargainreturnstruct(); if (item.OrderSysID.Length > 0 && item.OrderSysID[0] == 'T') { bargin = test.QueryTrader(item); } else { var retbargin = _classTradeStock.QueryTrader(item, err).ToList(); //将查询信息记录成交表 if (retbargin.Count > 0) { bargin = retbargin.ToList()[0]; } } bargin.strategyId = item.StrategyId; bargin.direction = item.Direction; ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.CreateDLRecord), (object)bargin); //更新持仓列表 //ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.UpdateCCRecords), (object)bargin); } } } }
private void threadproc() { while (true) { Thread.Sleep(1); if ((DateTime.Now - GlobalHeartBeat.GetGlobalTime()).TotalMinutes > 5) { log.LogEvent("由于供血不足,委托查询线程即将退出。"); break; } //单次循环最多查询100个交易的委托情况 int maxCount = 100; if (!_classTradeStock.getConnectStatus()) { _classTradeStock.Init(login, ErrorMsg); } if (lastmessagetime.Second != DateTime.Now.Second) { KeyValuePair <string, object> message1 = new KeyValuePair <string, object>("THREAD_ENTRUST_WORKER", (object)(DateTime.Now)); queue_system_status.GetQueue().Enqueue((object)message1); lastmessagetime = DateTime.Now; } while (maxCount > 0 && queue_query_entrust.GetQueueNumber() > 0) { maxCount--; //获取新委托 QueryEntrustOrderStruct_M item = (QueryEntrustOrderStruct_M)queue_query_entrust.GetQueue().Dequeue(); string err = string.Empty; //查询委托及获取实例 managedEntrustreturnstruct ret = new managedEntrustreturnstruct(); //ordersysid 首字母 为 'T' 是测试交易 if (item.OrderSysID.Length > 0 && item.OrderSysID[0] == 'T') { var temps = test.QueryEntrust(item); ret = temps; } else { var temps = _classTradeStock.QueryEntrust(item, err); if (temps.Length == 0) { continue; } ret = temps.ToList()[0]; } if (ret == null) { continue; } OrderViewItem order = new OrderViewItem( item.OrderRef.ToString(), ret.cOrderSysID, ret.cSecurity_code, item.Direction.ToString(), "NA", ret.nVolumeTotalOriginal.ToString(), ret.nVolumeTotal.ToString(), item.OrderPrice.ToString(), GetStatusWord(ret.cOrderStatus), ret.cInsertTime); if (!UserRequestMap.GetInstance().Keys.Contains(item.OrderRef)) { UserRequestMap.GetInstance().AddOrUpdate(item.OrderRef, item.User, (key, oldValue) => oldValue = item.User); } String USERNAME = UserRequestMap.GetInstance()[item.OrderRef]; TradeMonitor.Instance.updateOrderList(USERNAME, order); //目前仅考虑 1对1 返回的情况,不考虑出现1对多 ,类似基金交易的情况 //将委托变动返回更新数据库 if (DBAccessLayer.DBEnable == true) { //更新数据,记录入数据库 ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.UpdateERRecord), (object)(ret)); //修改委托缓存数据 EntrustRecord.ModifyEntrustPosition(item.OrderRef, Convert.ToInt32(ret.frozen_amount), Convert.ToDouble(ret.frozen_money)); //此处判断,相应代码的委托是否完成 //此处逻辑需要待返回报文内容确认后修改 //测试使用 if ((ret.cOrderStatus.ToString() != ((int)(EntrustStatus.Dealed)).ToString()) && (!(ret.cOrderStatus.ToString() == ((int)EntrustStatus.Canceled).ToString() && ret.nVolumeTotal == 0))) { queue_query_entrust.GetQueue().Enqueue((object)item); continue; } //委托已经完成,进入成交状态查询 managedBargainreturnstruct bargin = new managedBargainreturnstruct(); if (item.OrderSysID.Length > 0 && item.OrderSysID[0] == 'T') { bargin = test.QueryTrader(item); } else { var retbargin = _classTradeStock.QueryTrader(item, err).ToList(); //将查询信息记录成交表 if (retbargin.Count > 0) { bargin = retbargin.ToList()[0]; } } bargin.strategyId = item.StrategyId; bargin.direction = item.Direction; bargin.User = USERNAME; bargin.OrderType = Convert.ToSByte("49"); if (ret.cOrderStatus.ToString() == ((int)(EntrustStatus.Dealed)).ToString()) { bargin.OrderMark = Deal_Status.DEAL; } else if (ret.cOrderStatus.ToString() == ((int)EntrustStatus.Canceled).ToString()) { bargin.OrderMark = Deal_Status.CANCELED; } else if (ret.nVolumeTotal == 0) { bargin.OrderMark = Deal_Status.PARTIALDEAL; } ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.CreateDLRecord), (object)bargin); EntrustRecord.DeleteEntrustRecord(item.OrderRef); ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.DeleteERRecord), (object)(item.OrderRef)); //更新持仓列表 if (ret.nVolumeTraded != 0) { //需要修改数据 //仅存在成交记录时才更改持仓 ThreadPool.QueueUserWorkItem(new WaitCallback(DBAccessLayer.UpdateCCRecords), (object)bargin); } } } } }
public ActionResult Edit(OrderViewItem orderViewItem) { _orderService.UpdateOrder(orderViewItem); return(RedirectToAction("Details", new { orderViewItem.Id })); }
private void UpdateListView(ListView view, ExecutionReport rpt, OrderInfo ord) { try { string key = null; NewOrderSingle order = ord.Order; char exec = rpt.getExecType().getValue(); if (exec == ExecType.PENDING_CANCEL || exec == ExecType.CANCELED || exec == ExecType.PENDING_REPLACE || exec == ExecType.REPLACE) { if (rpt.isSetOrigClOrdID())//�Ӵ��̶�ȡ�����ָ��û�б���origclordid { key = rpt.getOrigClOrdID().getValue(); } else { key = rpt.getClOrdID().getValue(); } } else { key = rpt.getClOrdID().getValue(); } OrderViewItem item = (OrderViewItem)view.Items[key]; if (item == null) { if (view.Name == "listView1") { OrderViewItem item1 = new OrderViewItem(order); view.Items.Insert(0, item1); item1.UpdateValues(order, rpt); } } else { if (view.Name == "listView1") { item.UpdateValues(order, rpt); } } } catch (IncorrectDataFormat e) { Console.WriteLine(e.TargetSite); } }