/// <summary> /// 更新期货委托单状态,撤单专用,当前状态为最终状态时不更新 /// </summary> /// <param name="order">委托单</param> public static void UpdateFutureOrderStatus_Cancel(QH_TodayEntrustTableInfo order) { //如果状态时废单,部撤,已撤,已成,那么代表是最终状态 int a = (int)Types.OrderStateType.DOSCanceled; int b = (int)Types.OrderStateType.DOSPartRemoved; int c = (int)Types.OrderStateType.DOSRemoved; int d = (int)Types.OrderStateType.DOSDealed; //如果状态是已报待撤、部成待撤,那么也不需要更新状态 int e = (int)Types.OrderStateType.DOSRequiredRemoveSoon; int f = (int)Types.OrderStateType.DOSPartDealRemoveSoon; try { string format = "update qh_todayentrusttable set orderstatusid={0} where entrustnumber='{1}'"; format += " and OrderStatusId<>{2} and OrderStatusId<>{3} and OrderStatusId<>{4} and OrderStatusId<>{5}"; format += " and OrderStatusId<>{6} and OrderStatusId<>{7}"; string sql = string.Format(format, order.OrderStatusId, order.EntrustNumber, a, b, c, d, e, f); DbHelperSQL.ExecuteSql(sql); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 更新一条数据 /// </summary> public void UpdateRecord(QH_TodayEntrustTableInfo model, ReckoningTransaction tm) { StringBuilder strSql = new StringBuilder(); strSql.Append("update QH_TodayEntrustTable set "); strSql.Append("PortfolioLogo=@PortfolioLogo,"); strSql.Append("EntrustPrice=@EntrustPrice,"); strSql.Append("EntrustAmount=@EntrustAmount,"); strSql.Append("TradeAmount=@TradeAmount,"); strSql.Append("TradeAveragePrice=@TradeAveragePrice,"); strSql.Append("CancelAmount=@CancelAmount,"); strSql.Append("CancelLogo=@CancelLogo,"); strSql.Append("BuySellTypeId=@BuySellTypeId,"); strSql.Append("CurrencyTypeId=@CurrencyTypeId,"); strSql.Append("OpenCloseTypeId=@OpenCloseTypeId,"); strSql.Append("TradeUnitId=@TradeUnitId,"); strSql.Append("OrderStatusId=@OrderStatusId,"); strSql.Append("ContractCode=@ContractCode,"); strSql.Append("TradeAccount=@TradeAccount,"); strSql.Append("CapitalAccount=@CapitalAccount,"); strSql.Append("IsMarketValue=@IsMarketValue,"); strSql.Append("OrderMessage=@OrderMessage,"); strSql.Append("CallbackChannelId=@CallbackChannelId,"); strSql.Append("McOrderId=@McOrderId,"); strSql.Append("CloseFloatProfitLoss=@CloseFloatProfitLoss,"); strSql.Append("CloseMarketProfitLoss=@CloseMarketProfitLoss,"); strSql.Append("OfferTime=@OfferTime,"); strSql.Append("EntrustTime=@EntrustTime"); strSql.Append(" where EntrustNumber=@EntrustNumber "); Database db = tm.Database; DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "EntrustNumber", DbType.AnsiString, model.EntrustNumber); db.AddInParameter(dbCommand, "PortfolioLogo", DbType.AnsiString, model.PortfolioLogo); db.AddInParameter(dbCommand, "EntrustPrice", DbType.Decimal, model.EntrustPrice); db.AddInParameter(dbCommand, "EntrustAmount", DbType.Int32, model.EntrustAmount); db.AddInParameter(dbCommand, "TradeAmount", DbType.Int32, model.TradeAmount); db.AddInParameter(dbCommand, "TradeAveragePrice", DbType.Decimal, model.TradeAveragePrice); db.AddInParameter(dbCommand, "CancelAmount", DbType.Int32, model.CancelAmount); db.AddInParameter(dbCommand, "CancelLogo", DbType.Boolean, model.CancelLogo); db.AddInParameter(dbCommand, "BuySellTypeId", DbType.Int32, model.BuySellTypeId); db.AddInParameter(dbCommand, "CurrencyTypeId", DbType.Int32, model.CurrencyTypeId); db.AddInParameter(dbCommand, "OpenCloseTypeId", DbType.Int32, model.OpenCloseTypeId); db.AddInParameter(dbCommand, "TradeUnitId", DbType.Int32, model.TradeUnitId); db.AddInParameter(dbCommand, "OrderStatusId", DbType.Int32, model.OrderStatusId); db.AddInParameter(dbCommand, "ContractCode", DbType.AnsiString, model.ContractCode); db.AddInParameter(dbCommand, "TradeAccount", DbType.AnsiString, model.TradeAccount); db.AddInParameter(dbCommand, "CapitalAccount", DbType.AnsiString, model.CapitalAccount); db.AddInParameter(dbCommand, "IsMarketValue", DbType.Boolean, model.IsMarketValue); db.AddInParameter(dbCommand, "OrderMessage", DbType.AnsiString, model.OrderMessage); db.AddInParameter(dbCommand, "CallbackChannelId", DbType.AnsiString, model.CallbackChannelId); db.AddInParameter(dbCommand, "McOrderId", DbType.AnsiString, model.McOrderId); db.AddInParameter(dbCommand, "CloseFloatProfitLoss", DbType.Decimal, model.CloseFloatProfitLoss); db.AddInParameter(dbCommand, "CloseMarketProfitLoss", DbType.Decimal, model.CloseMarketProfitLoss); db.AddInParameter(dbCommand, "OfferTime", DbType.DateTime, model.OfferTime); db.AddInParameter(dbCommand, "EntrustTime", DbType.DateTime, model.EntrustTime); db.ExecuteNonQuery(dbCommand, tm.Transaction); }
/// <summary> /// 依据期货委托单号获取委托单实体 /// </summary> /// <param name="strEntrustId"></param> /// <param name="tm"></param> /// <returns></returns> public static QH_TodayEntrustTableInfo GetQHEntrustEntity(string strEntrustId, ReckoningTransaction tm) { QH_TodayEntrustTableInfo result = null; QH_TodayEntrustTableDal qhtodayEntrustTabledDal = new QH_TodayEntrustTableDal(); result = qhtodayEntrustTabledDal.GetModel(strEntrustId); return(result); }
/// <summary> /// 依据期货委托单号获取委托单实体 /// </summary> /// <param name="strEntrustId"></param> /// <returns></returns> public static QH_TodayEntrustTableInfo GetQHEntrustEntity(string strEntrustId) { QH_TodayEntrustTableInfo result = null; //var tetp = new SqlQhTodayEntrustTableProvider(TransactionFactory.RC_ConnectionString, true, string.Empty); QH_TodayEntrustTableDal qhtodayEntrustTabledDal = new QH_TodayEntrustTableDal(); result = qhtodayEntrustTabledDal.GetModel(strEntrustId); return(result); }
/// <summary> /// 检查是否有超过数据库限制长度的字段 /// </summary> /// <param name="tet"></param> private static void CheckEntrustLength(QH_TodayEntrustTableInfo tet) { if (tet.PortfolioLogo.Length > 25) { string format1 = "CheckEntrustLength[PortfolioLogo={0}]"; string desc1 = string.Format(format1, tet.PortfolioLogo); LogHelper.WriteDebug(desc1); tet.PortfolioLogo = tet.PortfolioLogo.Substring(0, 25); } if (tet.TradeAccount.Length > 20) { string format1 = "CheckEntrustLength[StockAccount={0}]"; string desc1 = string.Format(format1, tet.TradeAccount); LogHelper.WriteDebug(desc1); tet.TradeAccount = tet.TradeAccount.Substring(0, 20); } if (tet.CapitalAccount.Length > 20) { string format1 = "CheckEntrustLength[CapitalAccount={0}]"; string desc1 = string.Format(format1, tet.CapitalAccount); LogHelper.WriteDebug(desc1); tet.CapitalAccount = tet.CapitalAccount.Substring(0, 20); } if (tet.OrderMessage.Length > 100) { string format1 = "CheckEntrustLength[OrderMessage={0}]"; string desc1 = string.Format(format1, tet.OrderMessage); LogHelper.WriteDebug(desc1); tet.OrderMessage = tet.OrderMessage.Substring(0, 100); } if (tet.CallbackChannelId.Length > 50) { string format1 = "CheckEntrustLength[CallbackChannlId={0}]"; string desc1 = string.Format(format1, tet.CallbackChannelId); LogHelper.WriteDebug(desc1); tet.CallbackChannelId = tet.CallbackChannelId.Substring(0, 50); } if (tet.McOrderId.Length > 100) { string format1 = "CheckEntrustLength[McOrderId={0}]"; string desc1 = string.Format(format1, tet.McOrderId); LogHelper.WriteDebug(desc1); tet.McOrderId = tet.McOrderId.Substring(0, 100); } }
/// <summary> /// 更新期货委托单 /// </summary> /// <param name="stockOrder">委托单</param> public static void UpdateFutureOrder(QH_TodayEntrustTableInfo stockOrder) { try { //var sxtetp = new SqlQhTodayEntrustTableProvider(TransactionFactory.RC_ConnectionString, true, //string.Empty); // sxtetp.Update(stockOrder); QH_TodayEntrustTableDal dal = new QH_TodayEntrustTableDal(); dal.Update(stockOrder); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 更新委托表 /// </summary> /// <param name="tet">委托表</param> /// <param name="rt">事务包装类</param> /// <returns>是否成功</returns> public static bool UpdateEntrustTable(QH_TodayEntrustTableInfo tet, ReckoningTransaction rt) { try { QH_TodayEntrustTableDal dal = new QH_TodayEntrustTableDal(); dal.Update(tet, rt); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); return(false); } return(true); }
/// <summary> /// 增加一条数据 /// </summary> public bool Add(QH_TodayEntrustTableInfo model, ReckoningTransaction tm) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into QH_TodayEntrustTable("); strSql.Append("EntrustNumber,PortfolioLogo,EntrustPrice,EntrustAmount,TradeAmount,TradeAveragePrice,CancelAmount,CancelLogo,BuySellTypeId,CurrencyTypeId,OpenCloseTypeId,TradeUnitId,OrderStatusId,ContractCode,TradeAccount,CapitalAccount,IsMarketValue,OrderMessage,CallbackChannelId,McOrderId,CloseFloatProfitLoss,CloseMarketProfitLoss,OfferTime,EntrustTime)"); strSql.Append(" values ("); strSql.Append("@EntrustNumber,@PortfolioLogo,@EntrustPrice,@EntrustAmount,@TradeAmount,@TradeAveragePrice,@CancelAmount,@CancelLogo,@BuySellTypeId,@CurrencyTypeId,@OpenCloseTypeId,@TradeUnitId,@OrderStatusId,@ContractCode,@TradeAccount,@CapitalAccount,@IsMarketValue,@OrderMessage,@CallbackChannelId,@McOrderId,@CloseFloatProfitLoss,@CloseMarketProfitLoss,@OfferTime,@EntrustTime)"); Database db = tm.Database; DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "EntrustNumber", DbType.AnsiString, model.EntrustNumber); db.AddInParameter(dbCommand, "PortfolioLogo", DbType.AnsiString, model.PortfolioLogo); db.AddInParameter(dbCommand, "EntrustPrice", DbType.Decimal, model.EntrustPrice); db.AddInParameter(dbCommand, "EntrustAmount", DbType.Int32, model.EntrustAmount); db.AddInParameter(dbCommand, "TradeAmount", DbType.Int32, model.TradeAmount); db.AddInParameter(dbCommand, "TradeAveragePrice", DbType.Decimal, model.TradeAveragePrice); db.AddInParameter(dbCommand, "CancelAmount", DbType.Int32, model.CancelAmount); db.AddInParameter(dbCommand, "CancelLogo", DbType.Boolean, model.CancelLogo); db.AddInParameter(dbCommand, "BuySellTypeId", DbType.Int32, model.BuySellTypeId); db.AddInParameter(dbCommand, "CurrencyTypeId", DbType.Int32, model.CurrencyTypeId); db.AddInParameter(dbCommand, "OpenCloseTypeId", DbType.Int32, model.OpenCloseTypeId); db.AddInParameter(dbCommand, "TradeUnitId", DbType.Int32, model.TradeUnitId); db.AddInParameter(dbCommand, "OrderStatusId", DbType.Int32, model.OrderStatusId); db.AddInParameter(dbCommand, "ContractCode", DbType.AnsiString, model.ContractCode); db.AddInParameter(dbCommand, "TradeAccount", DbType.AnsiString, model.TradeAccount); db.AddInParameter(dbCommand, "CapitalAccount", DbType.AnsiString, model.CapitalAccount); db.AddInParameter(dbCommand, "IsMarketValue", DbType.Boolean, model.IsMarketValue); db.AddInParameter(dbCommand, "OrderMessage", DbType.AnsiString, model.OrderMessage); db.AddInParameter(dbCommand, "CallbackChannelId", DbType.AnsiString, model.CallbackChannelId); db.AddInParameter(dbCommand, "McOrderId", DbType.AnsiString, model.McOrderId); db.AddInParameter(dbCommand, "CloseFloatProfitLoss", DbType.Decimal, model.CloseFloatProfitLoss); db.AddInParameter(dbCommand, "CloseMarketProfitLoss", DbType.Decimal, model.CloseMarketProfitLoss); db.AddInParameter(dbCommand, "OfferTime", DbType.DateTime, model.OfferTime); db.AddInParameter(dbCommand, "EntrustTime", DbType.DateTime, model.EntrustTime); try { db.ExecuteNonQuery(dbCommand, tm.Transaction); return(true); } catch { return(false); } }
/// <summary> /// 根据委托单号获取今日委托 /// </summary> /// <param name="entrustNumber">委托单号</param> /// <returns>今日委托</returns> public static QH_TodayEntrustTableInfo GetEntrustTable(string entrustNumber) { QH_TodayEntrustTableInfo tet = null; QH_TodayEntrustTableDal dal = new QH_TodayEntrustTableDal(); try { tet = dal.GetModel(entrustNumber); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } return(tet); }
/// <summary> /// 更新期货委托单状态 /// </summary> /// <param name="order">委托单</param> public static void UpdateFutureOrderStatus(QH_TodayEntrustTableInfo order) { try { string format = "update qh_todayentrusttable set orderstatusid={0} where entrustnumber='{1}'"; string sql = string.Format(format, order.OrderStatusId, order.EntrustNumber); //DataRepository.Provider.ExecuteNonQuery(CommandType.Text, sql); DbHelperSQL.ExecuteSql(sql); //var sxtetp = new SqlXhTodayEntrustTableProvider(TransactionFactory.RC_ConnectionString, true, // string.Empty); //sxtetp.Update(order); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 得到一个对象实体 /// </summary> public QH_TodayEntrustTableInfo GetModel(string EntrustNumber) { StringBuilder strSql = new StringBuilder(); strSql.Append("select EntrustNumber,PortfolioLogo,EntrustPrice,EntrustAmount,TradeAmount,TradeAveragePrice,CancelAmount,CancelLogo,BuySellTypeId,CurrencyTypeId,OpenCloseTypeId,TradeUnitId,OrderStatusId,ContractCode,TradeAccount,CapitalAccount,IsMarketValue,OrderMessage,CallbackChannelId,McOrderId,CloseFloatProfitLoss,CloseMarketProfitLoss,OfferTime,EntrustTime from QH_TodayEntrustTable "); strSql.Append(" where EntrustNumber=@EntrustNumber "); Database db = DatabaseFactory.CreateDatabase(); DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "EntrustNumber", DbType.AnsiString, EntrustNumber); QH_TodayEntrustTableInfo model = null; using (IDataReader dataReader = db.ExecuteReader(dbCommand)) { if (dataReader.Read()) { model = ReaderBind(dataReader); } } return(model); }
/// <summary> /// 检查是否存在对应的委托单号 /// </summary> /// <param name="errMsg">错误信息</param> /// <returns>校验结果</returns> private bool CheckDelegateExist(ref string errMsg) { bool result = false; errMsg = ""; QH_TodayEntrustTableDal dal = new QH_TodayEntrustTableDal(); //qhTodayEntrustTable = DataRepository.QhTodayEntrustTableProvider.GetByEntrustNumber(this.orderNo); qhTodayEntrustTable = dal.GetModel(this.orderNo); if (qhTodayEntrustTable != null) { result = true; } else { string errCode = "GT-1600"; errMsg = "委托不存在。"; errMsg = errCode + ":" + errMsg; LogHelper.WriteInfo(errMsg); } return(result); }
public static void ProcessCancelOrderStatus(QH_TodayEntrustTableInfo tet) { //未报,待报,已报的单,做废单处理 if (tet.OrderStatusId == (int)Types.OrderStateType.DOSUnRequired || tet.OrderStatusId == (int)Types.OrderStateType.DOSRequiredSoon || tet.OrderStatusId == (int)Types.OrderStateType.DOSIsRequired) { tet.OrderStatusId = (int)Types.OrderStateType.DOSCanceled; } //已报待撤的单:默认撤单成功,改状态为已撤 else if (tet.OrderStatusId == (int)Types.OrderStateType.DOSRequiredRemoveSoon) { tet.OrderStatusId = (int)Types.OrderStateType.DOSRemoved; } //部成,部成待撤的单:默认撤单成功,改状态为部撤 else if (tet.OrderStatusId == (int)Types.OrderStateType.DOSPartDealRemoveSoon || tet.OrderStatusId == (int)Types.OrderStateType.DOSPartDealed) { tet.OrderStatusId = (int)Types.OrderStateType.DOSPartRemoved; } //其他的保持原有状态 }
/// <summary> /// 构造器 /// </summary> /// <param name="original"></param> public QhTodayEntrustTableEx(QH_TodayEntrustTableInfo original) { OriginalEntity = original; }
/// <summary> /// 对象实体绑定数据 /// </summary> public QH_TodayEntrustTableInfo ReaderBind(IDataReader dataReader) { QH_TodayEntrustTableInfo model = new QH_TodayEntrustTableInfo(); object ojb; model.EntrustNumber = dataReader["EntrustNumber"].ToString(); model.PortfolioLogo = dataReader["PortfolioLogo"].ToString(); ojb = dataReader["EntrustPrice"]; if (ojb != null && ojb != DBNull.Value) { model.EntrustPrice = (decimal)ojb; } ojb = dataReader["EntrustAmount"]; if (ojb != null && ojb != DBNull.Value) { model.EntrustAmount = (int)ojb; } ojb = dataReader["TradeAmount"]; if (ojb != null && ojb != DBNull.Value) { model.TradeAmount = (int)ojb; } ojb = dataReader["TradeAveragePrice"]; if (ojb != null && ojb != DBNull.Value) { model.TradeAveragePrice = (decimal)ojb; } ojb = dataReader["CancelAmount"]; if (ojb != null && ojb != DBNull.Value) { model.CancelAmount = (int)ojb; } ojb = dataReader["CancelLogo"]; if (ojb != null && ojb != DBNull.Value) { model.CancelLogo = (bool)ojb; } ojb = dataReader["BuySellTypeId"]; if (ojb != null && ojb != DBNull.Value) { model.BuySellTypeId = (int)ojb; } ojb = dataReader["CurrencyTypeId"]; if (ojb != null && ojb != DBNull.Value) { model.CurrencyTypeId = (int)ojb; } ojb = dataReader["OpenCloseTypeId"]; if (ojb != null && ojb != DBNull.Value) { model.OpenCloseTypeId = (int)ojb; } ojb = dataReader["TradeUnitId"]; if (ojb != null && ojb != DBNull.Value) { model.TradeUnitId = (int)ojb; } ojb = dataReader["OrderStatusId"]; if (ojb != null && ojb != DBNull.Value) { model.OrderStatusId = (int)ojb; } model.ContractCode = dataReader["ContractCode"].ToString(); model.TradeAccount = dataReader["TradeAccount"].ToString(); model.CapitalAccount = dataReader["CapitalAccount"].ToString(); ojb = dataReader["IsMarketValue"]; if (ojb != null && ojb != DBNull.Value) { model.IsMarketValue = (bool)ojb; } model.OrderMessage = dataReader["OrderMessage"].ToString(); model.CallbackChannelId = dataReader["CallbackChannelId"].ToString(); model.McOrderId = dataReader["McOrderId"].ToString(); ojb = dataReader["CloseFloatProfitLoss"]; if (ojb != null && ojb != DBNull.Value) { model.CloseFloatProfitLoss = (decimal)ojb; } ojb = dataReader["CloseMarketProfitLoss"]; if (ojb != null && ojb != DBNull.Value) { model.CloseMarketProfitLoss = (decimal)ojb; } ojb = dataReader["OfferTime"]; if (ojb != null && ojb != DBNull.Value) { model.OfferTime = (DateTime)ojb; } ojb = dataReader["EntrustTime"]; if (ojb != null && ojb != DBNull.Value) { model.EntrustTime = (DateTime)ojb; } return(model); }
/// <summary> /// 构建股指期货成交回报 /// </summary> /// <param name="tet"></param> /// <param name="sdbe"></param> /// <param name="qhcr"></param> /// <param name="dMargin"></param> /// <param name="tm"></param> /// <param name="marketProfitLoss"></param> /// <param name="dealRptType">成交类型</param> /// <returns></returns> public static QH_TodayTradeTableInfo BuildGZQHDealRpt(QH_TodayEntrustTableInfo tet, FutureDealBackEntity sdbe, QHCostResult qhcr, decimal dMargin, decimal marketProfitLoss, ReckoningTransaction tm, Types.DealRptType dealRptType) { string result = string.Empty; //成交回报实体 var qhDealrpt = new QH_TodayTradeTableInfo(); //xhDealrpt.TradeNumber = this.BuildXHDealOrderNo(); qhDealrpt.TradeNumber = sdbe.Id; //不再自己构建id,使用成交回报的id,一一对应 //成交时间 qhDealrpt.TradeTime = sdbe.DealTime; //成交价 qhDealrpt.TradePrice = sdbe.DealPrice; //成交量 qhDealrpt.TradeAmount = Convert.ToInt32(sdbe.DealAmount); //成交单位 qhDealrpt.TradeUnitId = tet.TradeUnitId; //股东代码 qhDealrpt.TradeAccount = tet.TradeAccount; //资金帐户 qhDealrpt.CapitalAccount = tet.CapitalAccount; //成交回报类型 // qhDealrpt.TradeTypeId = (int)Types.DealRptType.DRTDealed; qhDealrpt.TradeTypeId = (int)dealRptType; //现货名称 qhDealrpt.ContractCode = tet.ContractCode; //现货代码 //qhDealrpt = tet.ContractName; //交易手续费 qhDealrpt.TradeProceduresFee = qhcr.Cosing; //保证金 //qhDealrpt.Margin = 0; // dMargin; //update date 2009-12-03 不管开平仓都记录保证金 //if (tet.OpenCloseTypeId == (int) Types.FutureOpenCloseType.OpenPosition) qhDealrpt.Margin = dMargin; //============= //委托价格 qhDealrpt.EntrustPrice = tet.EntrustPrice; //委托单号 qhDealrpt.EntrustNumber = tet.EntrustNumber; //投组标识 qhDealrpt.PortfolioLogo = tet.PortfolioLogo; //货币类型 qhDealrpt.CurrencyTypeId = tet.CurrencyTypeId; qhDealrpt.BuySellTypeId = tet.BuySellTypeId; qhDealrpt.OpenCloseTypeId = tet.OpenCloseTypeId; //add 李健华 增加每笔盯市盈亏 qhDealrpt.MarketProfitLoss = marketProfitLoss; //========== QH_TodayTradeTableDal qhTodayTradeTableDal = new QH_TodayTradeTableDal(); if (qhTodayTradeTableDal.Exists(qhDealrpt.TradeNumber)) { string format = "BuildGZQHDealRpt数据库已经存在TradeNumber={0}"; string desc = string.Format(format, qhDealrpt.TradeNumber); LogHelper.WriteDebug(desc); return(null); } try { qhTodayTradeTableDal.Add(qhDealrpt, tm); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); qhDealrpt = null; } return(qhDealrpt); }
/// <summary> /// 构建期货撤单回报 /// </summary> /// <param name="tet"></param> /// <param name="rde"></param> /// <param name="tm"></param> /// <param name="isInternalCancelOrder"></param> /// <returns></returns> public static QH_TodayTradeTableInfo BuildQHCancelRpt(QH_TodayEntrustTableInfo tet, CancelOrderEntity rde, ReckoningTransaction tm, bool isInternalCancelOrder) { string result = string.Empty; //当为价格错误的撤单时,直接作为废单,不记录到数据库中。 if (rde.OrderVolume == -1) { return(null); } //成交回报实体 var qhDealrpt = new QH_TodayTradeTableInfo(); qhDealrpt.TradeNumber = rde.Id; //不再自己构建id,使用撤单回报的id,一一对应 //成交时间 qhDealrpt.TradeTime = DateTime.Now; //成交价 qhDealrpt.TradePrice = 0; //成交量 qhDealrpt.TradeAmount = Convert.ToInt32(rde.OrderVolume); //股东代码 qhDealrpt.TradeAccount = tet.TradeAccount; //资金帐户 qhDealrpt.CapitalAccount = tet.CapitalAccount; //成交回报类型 if (isInternalCancelOrder) { qhDealrpt.TradeTypeId = (int)Types.DealRptType.DRTInternalCanceled; } else { qhDealrpt.TradeTypeId = (int)Types.DealRptType.DRTCanceled; } //现货名称 qhDealrpt.ContractCode = tet.ContractCode; //交易手续费 qhDealrpt.TradeProceduresFee = 0; //保证金 qhDealrpt.Margin = 0; //委托价格 qhDealrpt.EntrustPrice = tet.EntrustPrice; //委托单号 qhDealrpt.EntrustNumber = tet.EntrustNumber; //投组标识 qhDealrpt.PortfolioLogo = tet.PortfolioLogo; //货币类型 qhDealrpt.CurrencyTypeId = tet.CurrencyTypeId; //开平方向 qhDealrpt.OpenCloseTypeId = tet.OpenCloseTypeId; //买卖方向 qhDealrpt.BuySellTypeId = tet.BuySellTypeId; //成交单位 qhDealrpt.TradeUnitId = tet.TradeUnitId; //2009-12-03 add 李健华 qhDealrpt.MarketProfitLoss = 0; //========== QH_TodayTradeTableDal qh_TodayTradeTableDal = new QH_TodayTradeTableDal(); // var provider = new SqlQhTodayTradeTableProvider(TransactionFactory.RC_ConnectionString, true, string.Empty); //provider.Insert(tm, qhDealrpt); qh_TodayTradeTableDal.Add(qhDealrpt, tm); return(qhDealrpt); }
/// <summary> /// 构造股指期货委托单 /// </summary> public static string BuildGZQHOrder(ref QH_TodayEntrustTableInfo order, StockIndexFuturesOrderRequest originalOrder, string strHoldingAccount, string strCapitalAccount, int iCurType, ref string strMessage) { //bool result = false; order = new QH_TodayEntrustTableInfo(); order.EntrustNumber = BuildQHOrderNo(); order.EntrustAmount = Convert.ToInt32(originalOrder.OrderAmount); order.EntrustPrice = Convert.ToDecimal(originalOrder.OrderPrice); order.EntrustTime = DateTime.Now; order.OfferTime = DateTime.Now; order.IsMarketValue = originalOrder.OrderWay == Types.OrderPriceType.OPTMarketPrice ? true : false; order.BuySellTypeId = (int)originalOrder.BuySell; order.OrderStatusId = (int)Types.OrderStateType.DOSUnRequired; if (strHoldingAccount == null) { strHoldingAccount = ""; } order.TradeAccount = strHoldingAccount; if (strCapitalAccount == null) { strCapitalAccount = ""; } order.CapitalAccount = strCapitalAccount; if (originalOrder.PortfoliosId == null) { originalOrder.PortfoliosId = ""; } order.PortfolioLogo = originalOrder.PortfoliosId; if (originalOrder.Code == null) { originalOrder.Code = ""; } order.ContractCode = originalOrder.Code; order.TradeAmount = 0; order.TradeAveragePrice = 0; order.CancelAmount = 0; order.CancelLogo = true; if (originalOrder.ChannelID == null) { originalOrder.ChannelID = ""; } order.CallbackChannelId = originalOrder.ChannelID; order.IsMarketValue = originalOrder.OrderWay == Types.OrderPriceType.OPTMarketPrice ? true : false; order.OpenCloseTypeId = (int)originalOrder.OpenCloseType; order.TradeUnitId = (int)originalOrder.OrderUnitType; order.CurrencyTypeId = iCurType; order.OrderMessage = ""; order.McOrderId = ""; CheckEntrustLength(order); QH_TodayEntrustTableDal dal = new QH_TodayEntrustTableDal(); dal.Add(order); return(order.EntrustNumber); }