private List <EntrustSecurity> ExecuteEntrustSecurity(DbCommand dbCommand) { List <EntrustSecurity> items = new List <EntrustSecurity>(); var reader = _dbHelper.ExecuteReader(dbCommand); if (reader.HasRows) { while (reader.Read()) { EntrustSecurity item = new EntrustSecurity(); item.RequestId = (int)reader["RequestId"]; item.SubmitId = (int)reader["SubmitId"]; item.CommandId = (int)reader["CommandId"]; item.SecuCode = (string)reader["SecuCode"]; item.SecuType = (SecurityType)(int)reader["SecuType"]; item.EntrustAmount = (int)reader["EntrustAmount"]; item.EntrustPrice = (double)(decimal)reader["EntrustPrice"]; item.EntrustDirection = (EntrustDirection)reader["EntrustDirection"]; item.EntrustStatus = (EntrustStatus)reader["EntrustStatus"]; item.EntrustPriceType = (EntrustPriceType)reader["EntrustPriceType"]; item.PriceType = (PriceType)reader["PriceType"]; item.EntrustNo = (int)reader["EntrustNo"]; item.BatchNo = (int)reader["BatchNo"]; item.DealStatus = (DealStatus)reader["DealStatus"]; item.TotalDealAmount = (int)reader["TotalDealAmount"]; item.TotalDealBalance = (double)(decimal)reader["TotalDealBalance"]; item.TotalDealFee = (double)(decimal)reader["TotalDealFee"]; if (reader["EntrustDate"] != null && reader["EntrustDate"] != DBNull.Value) { item.EntrustDate = (DateTime)reader["EntrustDate"]; } if (reader["CreatedDate"] != null && reader["CreatedDate"] != DBNull.Value) { item.CreatedDate = (DateTime)reader["CreatedDate"]; } if (reader["ModifiedDate"] != null && reader["ModifiedDate"] != DBNull.Value) { item.ModifiedDate = (DateTime)reader["ModifiedDate"]; } if (reader["EntrustFailCode"] != null && reader["EntrustFailCode"] != DBNull.Value) { item.EntrustFailCode = (int)reader["EntrustFailCode"]; } if (reader["EntrustFailCause"] != null && reader["EntrustFailCause"] != DBNull.Value) { item.EntrustFailCause = (string)reader["EntrustFailCause"]; } items.Add(item); } } reader.Close(); return(items); }
public BLLResponse SubmitOne(Model.Database.EntrustCommand cmdItem, List <CancelRedoItem> cancelItems, CallerCallback callback) { //TODO: adjust the EntrustAmount List <EntrustSecurity> entrustItems = new List <EntrustSecurity>(); DateTime now = DateTime.Now; //merge the same security in with the same commandId var uniqueSecuCodes = cancelItems.Select(p => p.SecuCode).Distinct().ToList(); foreach (var secuCode in uniqueSecuCodes) { EntrustSecurity item = new EntrustSecurity { CommandId = cmdItem.CommandId, SecuCode = secuCode, EntrustDate = now, }; var originSecuItems = cancelItems.Where(p => p.SecuCode.Equals(secuCode)).ToList(); if (originSecuItems != null && originSecuItems.Count > 0) { item.SecuType = originSecuItems[0].SecuType; item.EntrustPrice = originSecuItems[0].EntrustPrice; item.EntrustDirection = originSecuItems[0].EDirection; item.EntrustPriceType = originSecuItems[0].EEntrustPriceType; item.PriceType = originSecuItems[0].EPriceSetting; item.EntrustAmount = originSecuItems.Sum(o => o.LeftAmount); entrustItems.Add(item); } } return(SubmitSync(cmdItem, entrustItems, callback)); }
private BLLResponse GetResponse(int submitId, int commandId, List <UFXBasketWithdrawResponse> responseItems) { BLLResponse bllResponse = null; List <EntrustSecurity> successCancelSecuItems = new List <EntrustSecurity>(); List <EntrustSecurity> failCancelSecuItems = new List <EntrustSecurity>(); int ret = -1; if (submitId > 0) { //TODO: check the withdraw status foreach (var responseItem in responseItems) { var entrustItem = new EntrustSecurity { SubmitId = submitId, CommandId = commandId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, }; if (FailFlag.Equals(responseItem.SuccessFlag)) { failCancelSecuItems.Add(entrustItem); } else { successCancelSecuItems.Add(entrustItem); } } if (successCancelSecuItems.Count > 0) { ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(successCancelSecuItems, Model.EnumType.EntrustStatus.CancelSuccess); } if (failCancelSecuItems.Count > 0) { ret = _entrustCombineBLL.UpdateSecurityEntrustStatus(successCancelSecuItems, Model.EnumType.EntrustStatus.CancelFail); } } //var successItems = responseItems.Where(p => SuccessFlag.Equals(p.SuccessFlag)).ToList(); //var failItems = responseItems.Where(p => FailFlag.Equals(p.SuccessFlag)).ToList(); if (successCancelSecuItems.Count == responseItems.Count) { bllResponse = new BLLResponse { Code = Model.ConnectionCode.Success, Message = "Withdraw success!" }; } else { bllResponse = new BLLResponse { Code = Model.ConnectionCode.FailWithdraw, Message = "Withdraw failure!" }; } return(bllResponse); }
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 EntrustSecurity Convert(UFXEntrustCompletedResponse responseItem) { var entrustItem = new EntrustSecurity { RequestId = responseItem.ExtSystemId, SecuCode = responseItem.StockCode, EntrustNo = responseItem.EntrustNo, BatchNo = responseItem.BatchNo, }; return(entrustItem); }
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 CancelRedoItem Convert(EntrustSecurity p, Model.Database.TradeCommand tradeCommand) { CancelRedoItem cancelRedoItem = new CancelRedoItem { Selection = true, CommandId = tradeCommand.CommandId, EDirection = p.EntrustDirection, EntrustPrice = p.EntrustPrice, SecuCode = p.SecuCode, SecuType = p.SecuType, EntrustNo = p.EntrustNo, ECommandPrice = p.PriceType, ReportPrice = p.EntrustPrice, EOriginPriceType = p.EntrustPriceType, LeftAmount = p.EntrustAmount - p.TotalDealAmount, ReportAmount = p.EntrustAmount, DealAmount = p.TotalDealAmount, EntrustDate = p.EntrustDate, SubmitId = p.SubmitId, EntrustBatchNo = p.BatchNo, PortfolioName = tradeCommand.PortfolioName, FundName = tradeCommand.AccountName, }; cancelRedoItem.EntrustAmount = cancelRedoItem.LeftAmount; if (cancelRedoItem.SecuType == Model.SecurityInfo.SecurityType.Stock && cancelRedoItem.EDirection == EntrustDirection.BuySpot) { if (cancelRedoItem.LeftAmount % 100 > 0) { cancelRedoItem.EntrustAmount = AmountRoundUtil.Round(cancelRedoItem.LeftAmount); } } var secuInfo = SecurityInfoManager.Instance.Get(p.SecuCode, p.SecuType); if (secuInfo != null) { cancelRedoItem.SecuName = secuInfo.SecuName; cancelRedoItem.ExchangeCode = secuInfo.ExchangeCode; } else { cancelRedoItem.ExchangeCode = SecurityItemHelper.GetExchangeCode(p.SecuCode, p.SecuType); } return(cancelRedoItem); }
private EntrustSecurity ConvertBack(CancelSecurityItem cancelItem) { var entrustItem = new EntrustSecurity { CommandId = cancelItem.CommandId, SubmitId = cancelItem.SubmitId, SecuCode = cancelItem.SecuCode, SecuType = cancelItem.SecuType, EntrustNo = cancelItem.EntrustNo, BatchNo = cancelItem.EntrustBatchNo, PriceType = cancelItem.ECommandPrice, EntrustPriceType = cancelItem.EOriginPriceType, EntrustDirection = cancelItem.EDirection, EntrustAmount = cancelItem.ReportAmount, DealTimes = cancelItem.DealTimes, EntrustPrice = cancelItem.ReportPrice, }; return(entrustItem); }
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); }