private int DataHandlerCallback(CallerToken token, DataParser dataParser) { int ret = -1; var errorResponse = T2ErrorHandler.Handle(dataParser); token.ErrorResponse = errorResponse; List <UFXMultipleHoldingResponse> responseItems = new List <UFXMultipleHoldingResponse>(); if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { responseItems = UFXDataSetHelper.ParseData <UFXMultipleHoldingResponse>(dataParser); var futures = responseItems.Where(p => p.MarketNo == "7").ToList(); var validItems = responseItems.Where(p => p.CurrentAmount > 0).ToList(); } else { ret = -1; } if (token.WaitEvent != null) { token.WaitEvent.Set(); } return(ret); }
private int WithdrawBasketCallback(CallerToken token, DataParser dataParser) { var errorResponse = T2ErrorHandler.Handle(dataParser); List <UFXBasketWithdrawResponse> responseItems = new List <UFXBasketWithdrawResponse>(); var dataFieldMap = UFXDataBindingHelper.GetProperty <UFXBasketWithdrawResponse>(); for (int i = 1, count = dataParser.DataSets.Count; i < count; i++) { var dataSet = dataParser.DataSets[i]; foreach (var dataRow in dataSet.Rows) { UFXBasketWithdrawResponse p = new UFXBasketWithdrawResponse(); UFXDataSetHelper.SetValue <UFXBasketWithdrawResponse>(ref p, dataRow.Columns, dataFieldMap); responseItems.Add(p); } } List <EntrustSecurityItem> entrustSecuItems = new List <EntrustSecurityItem>(); int ret = -1; if (token.SubmitId > 0) { if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { foreach (var responseItem in responseItems) { var entrustItem = new EntrustSecurityItem { SubmitId = token.SubmitId, CommandId = token.CommandId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, }; entrustSecuItems.Add(entrustItem); } ret = _entrustdao.UpdateSecurityEntrustStatus(entrustSecuItems, Model.EnumType.EntrustStatus.CancelSuccess); ret = _entrustcmddao.UpdateEntrustCommandStatus(token.SubmitId, Model.EnumType.EntrustStatus.CancelSuccess); ret = _tradecmddao.UpdateTargetNumBySubmitId(token.SubmitId, token.CommandId); } } if (token.Caller != null) { token.Caller(token, entrustSecuItems, errorResponse); } if (token.WaitEvent != null) { token.WaitEvent.Set(); } return(ret); }
private int WithdrawDataHandler(CallerToken token, DataParser dataParser) { List <UFXBasketWithdrawResponse> responseItems = new List <UFXBasketWithdrawResponse>(); var errorResponse = T2ErrorHandler.Handle(dataParser); token.ErrorResponse = errorResponse; //Verify the dataParser before reading the data. if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { responseItems = UFXDataSetHelper.ParseData <UFXBasketWithdrawResponse>(dataParser); } int ret = -1; List <EntrustSecurity> entrustSecuItems = new List <EntrustSecurity>(); if (token.SubmitId > 0) { //TODO: check the withdraw status foreach (var responseItem in responseItems) { var entrustItem = new EntrustSecurity { SubmitId = token.SubmitId, CommandId = token.CommandId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, }; entrustSecuItems.Add(entrustItem); } if (entrustSecuItems.Count > 0) { ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(entrustSecuItems, Model.EnumType.EntrustStatus.CancelSuccess); } } try { if (token.Caller != null) { token.Caller(token, entrustSecuItems, errorResponse); } } finally { if (token.WaitEvent != null) { token.WaitEvent.Set(); } } return(ret); }
private int WithdrawDataHandler(CallerToken token, DataParser dataParser) { var errorResponse = T2ErrorHandler.Handle(dataParser); token.ErrorResponse = errorResponse; List <UFXBasketWithdrawResponse> responseItems = UFXDataSetHelper.ParseData <UFXBasketWithdrawResponse>(dataParser); //TODO: It needs to verify the response data. Only the can set cancel successfully in those without no error. int ret = -1; List <EntrustSecurity> entrustSecuItems = new List <EntrustSecurity>(); if (token.SubmitId > 0) { foreach (var responseItem in responseItems) { var entrustItem = new EntrustSecurity { SubmitId = token.SubmitId, CommandId = token.CommandId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, }; entrustSecuItems.Add(entrustItem); } if (entrustSecuItems.Count > 0) { ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(entrustSecuItems, Model.EnumType.EntrustStatus.CancelSuccess); ret = _entrustCommandBLL.UpdateEntrustCommandStatus(token.SubmitId, Model.EnumType.EntrustStatus.CancelSuccess); } } try { if (token.Caller != null) { token.Caller(token, entrustSecuItems, errorResponse); } } finally { if (token.WaitEvent != null) { token.WaitEvent.Set(); } } return(ret); }
private int DataHandlerCallback(CallerToken token, DataParser dataParser) { int ret = -1; var errorResponse = T2ErrorHandler.Handle(dataParser); token.ErrorResponse = errorResponse; List <UFXHoldingResponse> responseItems = new List <UFXHoldingResponse>(); if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { responseItems = UFXDataSetHelper.ParseData <UFXHoldingResponse>(dataParser); var futures = responseItems.Where(p => p.MarketNo == "7").ToList(); var validItems = responseItems.Where(p => p.CurrentAmount > 0).ToList(); if (validItems != null && validItems.Count > 0 && token.OutArgs != null && token.OutArgs is List <UFXHoldingResponse> ) { ((List <UFXHoldingResponse>)token.OutArgs).AddRange(validItems); } } else { ret = -1; } if (token.Caller != null) { token.Caller(token, null, errorResponse); } if (token.WaitEvent != null) { token.WaitEvent.Set(); } return(ret); }
private int QueryDataHandler(CallerToken token, DataParser dataParser) { List <UFXQueryFuturesEntrustResponse> responseItems = new List <UFXQueryFuturesEntrustResponse>(); var errorResponse = T2ErrorHandler.Handle(dataParser); token.ErrorResponse = errorResponse; if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { responseItems = UFXDataSetHelper.ParseData <UFXQueryFuturesEntrustResponse>(dataParser); } try { if (token.Caller != null) { var entrustFlowItems = GetFlowItems(token, responseItems); if (token.OutArgs != null && token.OutArgs is List <EntrustFlowItem> && entrustFlowItems != null && entrustFlowItems.Count > 0 ) { ((List <EntrustFlowItem>)token.OutArgs).AddRange(entrustFlowItems); } token.Caller(token, entrustFlowItems, errorResponse); } } finally { if (token.WaitEvent != null) { token.WaitEvent.Set(); } } return(responseItems.Count()); }
private List <EntrustFlowItem> GetFlowItems(CallerToken token, List <UFXQueryFuturesEntrustResponse> responseItems) { var entrustFlowItems = new List <EntrustFlowItem>(); if (responseItems == null || responseItems.Count == 0) { return(entrustFlowItems); } Portfolio portfolio = (Portfolio)token.InArgs; string portfolioCode = string.Empty; string portfolioName = string.Empty; string fundCode = string.Empty; string fundName = string.Empty; if (portfolio != null) { portfolioCode = portfolio.PortfolioNo; portfolioName = portfolio.PortfolioName; fundCode = portfolio.FundCode; fundName = portfolio.FundName; } Dictionary <int, Model.UI.TradeInstance> cmdInstMap = new Dictionary <int, Model.UI.TradeInstance>(); foreach (var responseItem in responseItems) { int commandId = 0; int submitId = 0; int requestId = 0; int temp1, temp2, temp3; if (EntrustRequestHelper.TryParseThirdReff(responseItem.ThirdReff, out temp1, out temp2, out temp3)) { commandId = temp1; submitId = temp2; requestId = temp3; } int instanceId = 0; string instanceCode = string.Empty; if (!cmdInstMap.ContainsKey(commandId)) { var tradeInstance = _tradeCommandBLL.GetTradeInstance(commandId); if (tradeInstance != null) { instanceId = tradeInstance.InstanceId; instanceCode = tradeInstance.InstanceCode; cmdInstMap.Add(commandId, tradeInstance); } } else { instanceId = cmdInstMap[commandId].InstanceId; instanceCode = cmdInstMap[commandId].InstanceCode; } var entrustDirection = UFXTypeConverter.GetEntrustDirection(responseItem.EntrustDirection); var futuresDirection = UFXTypeConverter.GetFuturesDirection(responseItem.FuturesDirection); EntrustDirection eDirection = EntrustDirectionConverter.GetFuturesEntrustDirection(entrustDirection, futuresDirection); EntrustFlowItem efItem = new EntrustFlowItem { CommandNo = token.CommandId, SubmitId = token.SubmitId, //Market = responseItem.MarketNo, SecuCode = responseItem.StockCode, //EntrustDirection = responseItem.EntrustDirection, EEntrustPriceType = EntrustPriceTypeConverter.GetPriceType(responseItem.PriceType), EntrustPrice = responseItem.EntrustPrice, EntrustAmount = responseItem.EntrustAmount, //EntrustStatus = responseItem.EntrustState, DealAmount = responseItem.DealAmount, DealMoney = responseItem.DealBalance, DealTimes = responseItem.DealTimes, DEntrustDate = DateUtil.GetDateTimeFromInt(responseItem.EntrustDate, responseItem.EntrustTime), EntrustBatchNo = responseItem.BatchNo, EntrustNo = responseItem.EntrustNo, DeclareSeat = responseItem.ReportSeat, DeclareNo = Convert.ToInt32(responseItem.ReportNo), RequestId = responseItem.ExtSystemId, FundCode = responseItem.AccountCode, FundName = fundName, PortfolioCode = portfolioCode, PortfolioName = portfolioName, EDirection = eDirection, //EEntrustDirection = UFXTypeConverter.GetEntrustDirection(responseItem.EntrustDirection), EMarketCode = UFXTypeConverter.GetMarketCode(responseItem.MarketNo), EEntrustState = UFXTypeConverter.GetEntrustState(responseItem.EntrustState), WithdrawCause = responseItem.WithdrawCause, InstanceId = instanceId, InstanceNo = instanceCode, }; if (responseItem.FirstDealTime > 0) { efItem.DFirstDealDate = DateUtil.GetDateTimeFromInt(responseItem.EntrustDate, responseItem.FirstDealTime); } efItem.ExchangeCode = UFXTypeConverter.GetMarketCode(efItem.EMarketCode); efItem.CommandNo = commandId; efItem.SubmitId = submitId; efItem.RequestId = requestId; entrustFlowItems.Add(efItem); } return(entrustFlowItems); }
private List <DealFlowItem> GetDealItems(CallerToken token, List <UFXQueryDealResponse> responseItems) { List <DealFlowItem> dealItems = new List <DealFlowItem>(); if (responseItems == null || responseItems.Count == 0) { return(dealItems); } Portfolio portfolio = (Portfolio)token.InArgs; string portfolioCode = string.Empty; string portfolioName = string.Empty; string fundCode = string.Empty; string fundName = string.Empty; if (portfolio != null) { portfolioCode = portfolio.PortfolioNo; portfolioName = portfolio.PortfolioName; fundCode = portfolio.FundCode; fundName = portfolio.FundName; } Dictionary <int, Model.UI.TradeInstance> cmdInstMap = new Dictionary <int, Model.UI.TradeInstance>(); foreach (var responseItem in responseItems) { int commandId = 0; int submitId = 0; int requestId = 0; int temp1, temp2, temp3; if (EntrustRequestHelper.TryParseThirdReff(responseItem.ThirdReff, out temp1, out temp2, out temp3)) { commandId = temp1; submitId = temp2; requestId = temp3; } int instanceId = 0; string instanceCode = string.Empty; if (!cmdInstMap.ContainsKey(commandId)) { var tradeInstance = _tradeCommandBLL.GetTradeInstance(commandId); if (tradeInstance != null) { instanceId = tradeInstance.InstanceId; instanceCode = tradeInstance.InstanceCode; cmdInstMap.Add(commandId, tradeInstance); } } else { instanceId = cmdInstMap[commandId].InstanceId; instanceCode = cmdInstMap[commandId].InstanceCode; } var marketCode = UFXTypeConverter.GetMarketCode(responseItem.MarketNo); var entrustDirection = UFXTypeConverter.GetEntrustDirection(responseItem.EntrustDirection); DealFlowItem efItem = new DealFlowItem { CommandNo = commandId, SecuCode = responseItem.StockCode, FundNo = responseItem.AccountCode, FundName = fundName, PortfolioCode = responseItem.CombiNo, PortfolioName = portfolioName, EDirection = EntrustDirectionConverter.GetSecurityEntrustDirection(entrustDirection), DealPrice = responseItem.DealPrice, DealAmount = responseItem.DealAmount, DealMoney = responseItem.DealBalance, DealTime = string.Format("{0}", responseItem.DealTime), ShareHolderCode = responseItem.StockHolderId, EntrustNo = string.Format("{0}", responseItem.EntrustNo), DealNo = string.Format("{0}", responseItem.DealNo), ExchangeCode = UFXTypeConverter.GetMarketCode(marketCode), InstanceId = instanceId.ToString(), InstanceNo = instanceCode, }; dealItems.Add(efItem); } return(dealItems); }
private int EntrustDataHandler(CallerToken token, DataParser dataParser) { var errorResponse = T2ErrorHandler.Handle(dataParser); token.ErrorResponse = errorResponse; List <UFXBasketEntrustResponse> responseItems = UFXDataSetHelper.ParseData <UFXBasketEntrustResponse>(dataParser); int ret = -1; List <EntrustSecurity> entrustSecuItems = new List <EntrustSecurity>(); foreach (var responseItem in responseItems) { var entrustItem = new EntrustSecurity { SubmitId = token.SubmitId, RequestId = responseItem.ExtSystemId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, BatchNo = responseItem.BatchNo, EntrustFailCode = responseItem.EntrustFailCode, EntrustFailCause = responseItem.FailCause, }; entrustSecuItems.Add(entrustItem); } ret = _entrustCombineBLL.UpdateSecurityEntrustResponseByRequestId(entrustSecuItems); if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { int batchNo = 0; var batchNos = responseItems.Select(p => p.BatchNo).Distinct().ToList(); if (batchNos.Count == 1) { batchNo = batchNos[0]; } ret = _entrustCommandBLL.UpdateEntrustCommandBatchNo(token.SubmitId, batchNo, Model.EnumType.EntrustStatus.Completed, errorResponse.ErrorCode, errorResponse.ErrorMessage); } else { ret = _entrustCommandBLL.UpdateEntrustCommandBatchNo(token.SubmitId, 0, Model.EnumType.EntrustStatus.EntrustFailed, errorResponse.ErrorCode, errorResponse.ErrorMessage); //TODO: string msg = string.Format("The SubmitId [{0}] fail to entrust. ErrorCode: {1}, ErrorMessage: {2}, MessageDetail: {3}", token.SubmitId, errorResponse.ErrorCode, errorResponse.ErrorMessage, errorResponse.MessageDetail); logger.Error(msg); } try { if (token.Caller != null) { token.Caller(token, entrustSecuItems, errorResponse); } } finally { if (token.WaitEvent != null) { token.WaitEvent.Set(); } } return(ret); }
private int EntrustBasketCallback(CallerToken token, DataParser dataParser) { int ret = -1; List <EntrustSecurityItem> entrustSecuItems = new List <EntrustSecurityItem>(); var errorResponse = T2ErrorHandler.Handle(dataParser); token.OutArgs = errorResponse; if (T2ErrorHandler.Success(errorResponse.ErrorCode)) { List <UFXBasketEntrustResponse> responseItems = new List <UFXBasketEntrustResponse>(); var dataFieldMap = UFXDataBindingHelper.GetProperty <UFXBasketEntrustResponse>(); for (int i = 1, count = dataParser.DataSets.Count; i < count; i++) { var dataSet = dataParser.DataSets[i]; foreach (var dataRow in dataSet.Rows) { UFXBasketEntrustResponse p = new UFXBasketEntrustResponse(); UFXDataSetHelper.SetValue <UFXBasketEntrustResponse>(ref p, dataRow.Columns, dataFieldMap); responseItems.Add(p); } } foreach (var responseItem in responseItems) { var entrustItem = new EntrustSecurityItem { SubmitId = token.SubmitId, RequestId = responseItem.ExtSystemId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, BatchNo = responseItem.BatchNo, EntrustFailCode = responseItem.EntrustFailCode, EntrustFailCause = responseItem.FailCause, }; entrustSecuItems.Add(entrustItem); } ret = _entrustdao.UpdateSecurityEntrustResponseByRequestId(entrustSecuItems); if (token.InArgs != null && token.InArgs is EntrustCommandItem) { var cmdItem = token.InArgs as EntrustCommandItem; ret = _tradecmddao.UpdateTargetNum(cmdItem.CommandId, cmdItem.Copies); } var batchNos = responseItems.Select(p => p.BatchNo).Distinct().ToList(); if (batchNos.Count == 1) { int batchNo = batchNos[0]; ret = _entrustcmddao.UpdateEntrustCommandBatchNo(token.SubmitId, batchNo, Model.EnumType.EntrustStatus.Completed, errorResponse.ErrorCode, errorResponse.ErrorMessage); } else { //TODO: string msg = string.Format("The SubmitId [{0}] was split into several batch no", token.SubmitId); logger.Warn(msg); } } else { ret = -1; } if (token.Caller != null) { token.Caller(token, entrustSecuItems, errorResponse); } if (token.WaitEvent != null) { token.WaitEvent.Set(); } return(ret); }