//更新订单状态 public async Task FutureOrderUpdate(Initials Init) { int interval = int.Parse(Funs.CONFIG.interval); void LongTask() { FutureentrustQry_Input objFutureentrustQry_Input; foreach (RequestClass order in MQServer.AlivedOrder.GetConsumingEnumerable()) { try { string userKey = order.queue_name.Replace(Funs.CONFIG.ReplyName, ""); //if (Initials.UserDicts[userKey].token != null) //{ if (order.entrust_no != "0") { objFutureentrustQry_Input = new FutureentrustQry_Input(); objFutureentrustQry_Input.in_user_token = Funs.CONFIG.token; objFutureentrustQry_Input.in_asset_no = Initials.UserDicts[userKey].asset_no; objFutureentrustQry_Input.in_account_code = Initials.UserDicts[userKey].account_code; objFutureentrustQry_Input.in_combi_no = Initials.UserDicts[userKey].combi_no; objFutureentrustQry_Input.in_entrust_no = order.entrust_no; List <FutureentrustQry_Output> ordersQueues = Init.hsPack.Fun32003_FutureentrustQry(objFutureentrustQry_Input); FutureentrustQry_Output orderTemp = ordersQueues[0]; if (orderTemp.out_stock_code != null) { // 状态发生变化 if (orderTemp.out_entrust_state != order.orderState) { order.error_info = orderTemp.out_error_info + orderTemp.out_withdraw_cause; order.entrust_no = orderTemp.out_entrust_no; order.orderState = orderTemp.out_entrust_state; order.deal_amount = orderTemp.out_deal_amount; order.deal_balance = orderTemp.out_deal_balance; order.deal_price = orderTemp.out_deal_price; // 发布变化状态 PublishMsg(order, channel, Init); } else if (orderTemp.out_entrust_state == "6" && orderTemp.out_deal_amount != order.deal_amount) { // 部分成交 order.error_info = orderTemp.out_error_info + orderTemp.out_withdraw_cause; order.entrust_no = orderTemp.out_entrust_no; order.orderState = orderTemp.out_entrust_state; order.deal_amount = orderTemp.out_deal_amount; order.deal_balance = orderTemp.out_deal_balance; order.deal_price = orderTemp.out_deal_price; // 发布变化状态 PublishMsg(order, channel, Init); } bool IsFinished = FinishedState.Contains(orderTemp.out_entrust_state); // 订单生命周期未结束,添加回队列 if (!IsFinished) { MQServer.AlivedOrder.Add(order); } } else { // 没查询到数据,将该条数据添加回队列 MQServer.AlivedOrder.Add(order); } } //} //else //{ // order.error_info = "O32密码错误"; // MQServer.AlivedOrder.Add(order); // //PublishMsg(order, channel, Init); //} Thread.Sleep(100); } catch (Exception ex) { Console.WriteLine(ex.ToString()); Thread.Sleep(interval); } } } await Task.Factory.StartNew(() => LongTask(), TaskCreationOptions.LongRunning); }
/// <summary> /// 心跳、成交、委托流水读取线程 /// </summary> /// <param name="Init"></param> /// <returns></returns> public async static Task AsyHSWorker(Initials Init) { string account_code = ConfigurationManager.AppSettings["account_code"]; string asset_no = ConfigurationManager.AppSettings["asset_no"]; int interval = int.Parse(ConfigurationManager.AppSettings["interval"]); void LongTask() { while (true) { try { // 发送心跳 Init.hsPack.Fun10000_heartBeat(Init.logOut.out_user_token); // 查询持仓 FuturepositionQry_Input objFuturepositionQry_Input = new FuturepositionQry_Input(); objFuturepositionQry_Input.in_user_token = Init.logOut.out_user_token; objFuturepositionQry_Input.in_asset_no = asset_no; objFuturepositionQry_Input.in_account_code = account_code; //objFuturepositionQry_Input.in_position_str = "0"; List <FuturepositionQry_Output> pos = Init.hsPack.Fun31003_FuturepositionQry(objFuturepositionQry_Input); if (pos.Count > 0) { if (pos[0].out_stock_code != null) { positionsQueues = new ConcurrentBag <FuturepositionQry_Output>(pos); } } //positionsQueues // 查询成交 FuturedealQry_Input objFuturedealQry_Input = new FuturedealQry_Input(); objFuturedealQry_Input.in_user_token = Init.logOut.out_user_token; objFuturedealQry_Input.in_asset_no = asset_no; objFuturedealQry_Input.in_account_code = account_code; objFuturedealQry_Input.in_position_str = "0"; List <FuturedealQry_Output> deals = Init.hsPack.Fun33003_FuturedealQry(objFuturedealQry_Input); // 查询委托 FutureentrustQry_Input objFutureentrustQry_Input = new FutureentrustQry_Input(); objFutureentrustQry_Input.in_user_token = Init.logOut.out_user_token; objFutureentrustQry_Input.in_asset_no = asset_no; objFutureentrustQry_Input.in_account_code = account_code; List <FutureentrustQry_Output> orders = Init.hsPack.Fun32003_FutureentrustQry(objFutureentrustQry_Input); if (orders.Count > 0) { if (orders[0].out_stock_code != null) { ordersQueues = new ConcurrentBag <FutureentrustQry_Output>(orders); } } } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { Thread.Sleep(interval); } } } await Task.Factory.StartNew(() => LongTask(), TaskCreationOptions.LongRunning); }