/// <summary> /// 检查是否存在对应的委托单号 /// </summary> /// <param name="errMsg">错误信息</param> /// <returns>校验结果</returns> private bool CheckDelegateExist(ref string errMsg) { bool result = false; errMsg = ""; try { XH_TodayEntrustTableDal dal = new XH_TodayEntrustTableDal(); //todayEntrustTable = DataRepository.XhTodayEntrustTableProvider.GetByEntrustNumber(this.orderNo); todayEntrustTable = dal.GetModel(this.orderNo); } catch (System.Exception ex) { LogHelper.WriteError(ex.Message, ex); } if (todayEntrustTable != null) { result = true; } else { string errCode = "GT-1500"; errMsg = "委托不存在。"; errMsg = errCode + ":" + errMsg; LogHelper.WriteInfo(errMsg); } return(result); }
/// <summary> /// 创建一个今日委托记录 /// </summary> /// <param name="registerTable">登记表实体</param> /// <param name="intNum">分红过户量</param>里 /// <returns>今日委托实体</returns> private static XH_TodayEntrustTableInfo GetHistoryEntrustTable(XH_MelonCutRegisterTableInfo registerTable, int intNum) { XH_TodayEntrustTableInfo todayEntrustTable = new XH_TodayEntrustTableInfo(); todayEntrustTable.EntrustNumber = XHCommonLogic.BuildXHOrderNo(); todayEntrustTable.CurrencyTypeId = registerTable.TradeCurrencyType; todayEntrustTable.TradeUnitId = MCService.GetPriceUnit(registerTable.Code); todayEntrustTable.EntrustAmount = intNum; todayEntrustTable.EntrustPrice = 0; todayEntrustTable.EntrustTime = DateTime.Now; todayEntrustTable.OfferTime = DateTime.Now; todayEntrustTable.BuySellTypeId = (int)GTA.VTS.Common.CommonObject.Types.TransactionDirection.Buying; todayEntrustTable.OrderStatusId = (int)Types.OrderStateType.DOSDealed; todayEntrustTable.StockAccount = registerTable.UserAccountDistributeLogo;//持仓账号,在分红记录中都是持仓账号 //====通过持仓账号查询相关联的资金账号 UA_UserAccountAllocationTableDal dal = new UA_UserAccountAllocationTableDal(); UA_UserAccountAllocationTableInfo uaUser = dal.GetUserHoldAccountByUserCapitalAccount(registerTable.UserAccountDistributeLogo); todayEntrustTable.CapitalAccount = uaUser.UserAccountDistributeLogo; //===== todayEntrustTable.PortfolioLogo = ""; todayEntrustTable.SpotCode = registerTable.Code; todayEntrustTable.TradeAmount = intNum; todayEntrustTable.TradeAveragePrice = 0; todayEntrustTable.CancelAmount = 0; todayEntrustTable.IsMarketValue = false; todayEntrustTable.OrderMessage = "股票分红生成委托记录"; todayEntrustTable.McOrderId = Guid.NewGuid().ToString(); return(todayEntrustTable); }
/// <summary> /// 更新期货委托单状态和信息 /// </summary> /// <param name="order">委托单</param> public static void UpdateFutureOrderStatusAndMessage(XH_TodayEntrustTableInfo order) { try { string msg = order.OrderMessage; if (msg.Length > 50) { msg = msg.Substring(0, 49); } string format = "update qh_todayentrusttable set orderstatusid={0}, OrderMessage='{1}' where entrustnumber='{2}'"; string sql = string.Format(format, order.OrderStatusId, msg, 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> /// <param name="stockOrder">委托单</param> public static void UpdateStockOrderStatus_Cancel(XH_TodayEntrustTableInfo stockOrder) { //如果状态时废单,部撤,已撤,已成,那么代表是最终状态 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 xh_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, stockOrder.OrderStatusId, stockOrder.EntrustNumber, a, b, c, d, e, f); DbHelperSQL.ExecuteSql(sql); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
private static XH_TodayEntrustTableInfo ConvertHistoryEntrustTable(XH_HistoryEntrustTableInfo tet) { XH_TodayEntrustTableInfo tet2 = new XH_TodayEntrustTableInfo(); tet2.BuySellTypeId = tet.BuySellTypeId; //tet2.CallbackChannlId = tet. tet2.CancelAmount = tet.CancelAmount; //tet2.CancelLogo = tet.ca tet2.CapitalAccount = tet.CapitalAccount; tet2.CurrencyTypeId = tet.CurrencyTypeId; tet2.EntrustAmount = tet.EntrustMount; tet2.EntrustNumber = tet.EntrustNumber; tet2.EntrustPrice = tet.EntrustPrice; tet2.EntrustTime = tet.EntrustTime; tet2.HasDoneProfit = tet.HasDoneProfit; tet2.IsMarketValue = tet.IsMarketValue; tet2.McOrderId = tet.McOrderId; tet2.OfferTime = tet.OfferTime; tet2.OrderMessage = tet.OrderMessage; tet2.OrderStatusId = tet.OrderStatusId; tet2.PortfolioLogo = tet.PortfolioLogo; tet2.SpotCode = tet.SpotCode; tet2.StockAccount = tet.StockAccount; tet2.TradeAmount = tet.TradeAmount; tet2.TradeAveragePrice = tet.TradeAveragePrice; tet2.TradeUnitId = tet.TradeUnitId; return(tet2); }
/// <summary> /// 增加一条数据 /// </summary> public void Add(XH_TodayEntrustTableInfo model, Database db, DbTransaction transaction) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into XH_TodayEntrustTable("); strSql.Append("EntrustNumber,PortfolioLogo,EntrustPrice,EntrustAmount,SpotCode,TradeAmount,TradeAveragePrice,CancelAmount,CancelLogo,BuySellTypeId,StockAccount,CapitalAccount,OrderStatusId,IsMarketValue,OrderMessage,CurrencyTypeId,TradeUnitId,CallbackChannlId,McOrderId,HasDoneProfit,OfferTime,EntrustTime)"); strSql.Append(" values ("); strSql.Append("@EntrustNumber,@PortfolioLogo,@EntrustPrice,@EntrustAmount,@SpotCode,@TradeAmount,@TradeAveragePrice,@CancelAmount,@CancelLogo,@BuySellTypeId,@StockAccount,@CapitalAccount,@OrderStatusId,@IsMarketValue,@OrderMessage,@CurrencyTypeId,@TradeUnitId,@CallbackChannlId,@McOrderId,@HasDoneProfit,@OfferTime,@EntrustTime)"); 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, "SpotCode", DbType.AnsiString, model.SpotCode); 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, "StockAccount", DbType.AnsiString, model.StockAccount); db.AddInParameter(dbCommand, "CapitalAccount", DbType.AnsiString, model.CapitalAccount); db.AddInParameter(dbCommand, "OrderStatusId", DbType.Int32, model.OrderStatusId); db.AddInParameter(dbCommand, "IsMarketValue", DbType.Boolean, model.IsMarketValue); db.AddInParameter(dbCommand, "OrderMessage", DbType.AnsiString, model.OrderMessage); db.AddInParameter(dbCommand, "CurrencyTypeId", DbType.Int32, model.CurrencyTypeId); db.AddInParameter(dbCommand, "TradeUnitId", DbType.Int32, model.TradeUnitId); db.AddInParameter(dbCommand, "CallbackChannlId", DbType.AnsiString, model.CallbackChannlId); db.AddInParameter(dbCommand, "McOrderId", DbType.AnsiString, model.McOrderId); db.AddInParameter(dbCommand, "HasDoneProfit", DbType.Decimal, model.HasDoneProfit); db.AddInParameter(dbCommand, "OfferTime", DbType.DateTime, model.OfferTime); db.AddInParameter(dbCommand, "EntrustTime", DbType.DateTime, model.EntrustTime); db.ExecuteNonQuery(dbCommand, transaction); }
/// <summary> /// 更新一条数据 /// </summary> public bool UpRecord(XH_TodayEntrustTableInfo model, Database db, DbTransaction transaction) { StringBuilder strSql = new StringBuilder(); strSql.Append("update XH_TodayEntrustTable set "); strSql.Append("PortfolioLogo=@PortfolioLogo,"); strSql.Append("EntrustPrice=@EntrustPrice,"); strSql.Append("EntrustAmount=@EntrustAmount,"); strSql.Append("SpotCode=@SpotCode,"); strSql.Append("TradeAmount=@TradeAmount,"); strSql.Append("TradeAveragePrice=@TradeAveragePrice,"); strSql.Append("CancelAmount=@CancelAmount,"); strSql.Append("CancelLogo=@CancelLogo,"); strSql.Append("BuySellTypeId=@BuySellTypeId,"); strSql.Append("StockAccount=@StockAccount,"); strSql.Append("CapitalAccount=@CapitalAccount,"); strSql.Append("OrderStatusId=@OrderStatusId,"); strSql.Append("IsMarketValue=@IsMarketValue,"); strSql.Append("OrderMessage=@OrderMessage,"); strSql.Append("CurrencyTypeId=@CurrencyTypeId,"); strSql.Append("TradeUnitId=@TradeUnitId,"); strSql.Append("CallbackChannlId=@CallbackChannlId,"); strSql.Append("McOrderId=@McOrderId,"); strSql.Append("HasDoneProfit=@HasDoneProfit,"); strSql.Append("OfferTime=@OfferTime,"); strSql.Append("EntrustTime=@EntrustTime"); strSql.Append(" where EntrustNumber=@EntrustNumber "); 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, "SpotCode", DbType.AnsiString, model.SpotCode); 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, "StockAccount", DbType.AnsiString, model.StockAccount); db.AddInParameter(dbCommand, "CapitalAccount", DbType.AnsiString, model.CapitalAccount); db.AddInParameter(dbCommand, "OrderStatusId", DbType.Int32, model.OrderStatusId); db.AddInParameter(dbCommand, "IsMarketValue", DbType.Boolean, model.IsMarketValue); db.AddInParameter(dbCommand, "OrderMessage", DbType.AnsiString, model.OrderMessage); db.AddInParameter(dbCommand, "CurrencyTypeId", DbType.Int32, model.CurrencyTypeId); db.AddInParameter(dbCommand, "TradeUnitId", DbType.Int32, model.TradeUnitId); db.AddInParameter(dbCommand, "CallbackChannlId", DbType.AnsiString, model.CallbackChannlId); db.AddInParameter(dbCommand, "McOrderId", DbType.AnsiString, model.McOrderId); db.AddInParameter(dbCommand, "HasDoneProfit", DbType.Decimal, model.HasDoneProfit); db.AddInParameter(dbCommand, "OfferTime", DbType.DateTime, model.OfferTime); db.AddInParameter(dbCommand, "EntrustTime", DbType.DateTime, model.EntrustTime); if (db.ExecuteNonQuery(dbCommand, transaction) != -1) { return(true); } return(false); }
/// <summary> /// 依据现货委托单号获取委托单对象 /// </summary> /// <param name="strEntrustId"></param> /// <returns></returns> public static XH_TodayEntrustTableInfo GetXHEntrustEntity(string strEntrustId) { XH_TodayEntrustTableInfo result = null; XH_TodayEntrustTableDal xh_TodayEntrustTableDal = new XH_TodayEntrustTableDal(); result = xh_TodayEntrustTableDal.GetModel(strEntrustId); return(result); }
/// <summary> /// 依据现货委托单号获取委托单对象 /// </summary> /// <param name="strEntrustId"></param> /// <param name="tm"></param> /// <returns></returns> public static XH_TodayEntrustTableInfo GetXHEntrustEntity(string strEntrustId, ReckoningTransaction tm) { XH_TodayEntrustTableInfo result = null; XH_TodayEntrustTableDal xh_TodayEntrustTableDal = new XH_TodayEntrustTableDal(); result = xh_TodayEntrustTableDal.GetModel(strEntrustId, tm); return(result); }
/// <summary> /// 双击列表中委托单号显示在对应的委托单号文本框中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void daXHTodayEntrust_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { foreach (DataGridViewRow row in this.daXHTodayEntrust.SelectedRows) { XH_TodayEntrustTableInfo TodayEntrust = row.DataBoundItem as XH_TodayEntrustTableInfo; if (TodayEntrust == null) { return; } this.txtQueryXHNumber.Text = TodayEntrust.EntrustNumber; } }
/// <summary> /// 更新现货委托单状态 /// </summary> /// <param name="stockOrder">委托单</param> public static void UpdateStockOrderStatus(XH_TodayEntrustTableInfo stockOrder) { try { string format = "update xh_todayentrusttable set orderstatusid={0} where entrustnumber='{1}'"; string sql = string.Format(format, stockOrder.OrderStatusId, stockOrder.EntrustNumber); DbHelperSQL.ExecuteSql(sql); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 更新现货委托单 /// </summary> /// <param name="stockOrder">委托单</param> public static bool UpdateStockOrder(XH_TodayEntrustTableInfo stockOrder) { bool isSuccess = false; XH_TodayEntrustTableDal dal = new XH_TodayEntrustTableDal(); try { // var sxtetp = new SqlXhTodayEntrustTableProvider(TransactionFactory.RC_ConnectionString, true, // string.Empty); //sxtetp.Update(stockOrder); dal.Update(stockOrder); isSuccess = true; } catch (Exception ex) { LogHelper.WriteDebug("OrderOfferDataLogic.UpdateStockOrder改使用企业库执行第1次" + ex.Message); } //使用企业库执行第1次 if (!isSuccess) { try { // XhTodayEntrustTableDao.Update(stockOrder); dal.Update(stockOrder); isSuccess = true; } catch (Exception ex) { LogHelper.WriteDebug("OrderOfferDataLogic.UpdateStockOrder使用企业库执行第2次" + ex.Message); } } //使用企业库执行第2次 if (!isSuccess) { try { // XhTodayEntrustTableDao.Update(stockOrder); dal.Update(stockOrder); isSuccess = true; } catch (Exception ex) { LogHelper.WriteError("OrderOfferDataLogic.UpdateStockOrder彻底失败!", ex); } } return(isSuccess); }
/// <summary> /// 检查是否有超过数据库限制长度的字段 /// </summary> /// <param name="tet"></param> private static void CheckEntrustLength(XH_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.StockAccount.Length > 20) { string format1 = "CheckEntrustLength[StockAccount={0}]"; string desc1 = string.Format(format1, tet.StockAccount); LogHelper.WriteDebug(desc1); tet.StockAccount = tet.StockAccount.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.CallbackChannlId.Length > 50) { string format1 = "CheckEntrustLength[CallbackChannlId={0}]"; string desc1 = string.Format(format1, tet.CallbackChannlId); LogHelper.WriteDebug(desc1); tet.CallbackChannlId = tet.CallbackChannlId.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="tet">委托表</param> /// <param name="db"></param> /// <param name="transaction"></param> /// <returns>是否成功</returns> public static bool UpdateEntrustTable(XH_TodayEntrustTableInfo tet, Database db, DbTransaction transaction) { try { XH_TodayEntrustTableDal dal = new XH_TodayEntrustTableDal(); dal.Update(tet, db, transaction); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); return(false); } return(true); }
/// <summary> /// 根据委托单号获取今日委托 /// </summary> /// <param name="entrustNumber">委托单号</param> /// <returns>今日委托</returns> public static XH_TodayEntrustTableInfo GetTodayEntrustTable(string entrustNumber) { XH_TodayEntrustTableInfo tet = null; XH_TodayEntrustTableDal dal = new XH_TodayEntrustTableDal(); try { tet = dal.GetModel(entrustNumber); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } return(tet); }
/// <summary> /// 根据委托单号获取委托,先在当日中查找,找不到再到历史中查找,转换成当日委托实体 /// </summary> /// <param name="entrustNumber">委托单号</param> /// <returns>今日委托</returns> public static XH_TodayEntrustTableInfo GetAllEntrustTable(string entrustNumber) { XH_TodayEntrustTableInfo tet = null; tet = GetTodayEntrustTable(entrustNumber); if (tet == null) { var tet2 = GetHistoryEntrustTable(entrustNumber); if (tet2 != null) { tet = ConvertHistoryEntrustTable(tet2); } } return(tet); }
/// <summary> /// 得到一个对象实体 /// </summary> public XH_TodayEntrustTableInfo GetModel(string EntrustNumber, ReckoningTransaction tm) { StringBuilder strSql = new StringBuilder(); strSql.Append("select EntrustNumber,PortfolioLogo,EntrustPrice,EntrustAmount,SpotCode,TradeAmount,TradeAveragePrice,CancelAmount,CancelLogo,BuySellTypeId,StockAccount,CapitalAccount,OrderStatusId,IsMarketValue,OrderMessage,CurrencyTypeId,TradeUnitId,CallbackChannlId,McOrderId,HasDoneProfit,OfferTime,EntrustTime from XH_TodayEntrustTable "); strSql.Append(" where EntrustNumber=@EntrustNumber "); Database db = tm.Database; DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "EntrustNumber", DbType.AnsiString, EntrustNumber); XH_TodayEntrustTableInfo model = null; using (IDataReader dataReader = db.ExecuteReader(dbCommand, tm.Transaction)) { if (dataReader.Read()) { model = ReaderBind(dataReader); } } return(model); }
/// <summary> /// 处理撤单委托状态 /// </summary> /// <param name="tet">委托表</param> public static void ProcessCancelOrderStatus(XH_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 XhTodayEntrustTableEx(XH_TodayEntrustTableInfo original) { OriginalEntity = original; }
/// <summary> /// 对象实体绑定数据 /// </summary> public XH_TodayEntrustTableInfo ReaderBind(IDataReader dataReader) { XH_TodayEntrustTableInfo model = new XH_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; } model.SpotCode = dataReader["SpotCode"].ToString(); 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; } model.StockAccount = dataReader["StockAccount"].ToString(); model.CapitalAccount = dataReader["CapitalAccount"].ToString(); ojb = dataReader["OrderStatusId"]; if (ojb != null && ojb != DBNull.Value) { model.OrderStatusId = (int)ojb; } ojb = dataReader["IsMarketValue"]; if (ojb != null && ojb != DBNull.Value) { model.IsMarketValue = (bool)ojb; } model.OrderMessage = dataReader["OrderMessage"].ToString(); ojb = dataReader["CurrencyTypeId"]; if (ojb != null && ojb != DBNull.Value) { model.CurrencyTypeId = (int)ojb; } ojb = dataReader["TradeUnitId"]; if (ojb != null && ojb != DBNull.Value) { model.TradeUnitId = (int)ojb; } model.CallbackChannlId = dataReader["CallbackChannlId"].ToString(); model.McOrderId = dataReader["McOrderId"].ToString(); ojb = dataReader["HasDoneProfit"]; if (ojb != null && ojb != DBNull.Value) { model.HasDoneProfit = (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="tm">TransactionManager</param> /// <param name="cash">分红信息</param> /// <param name="tables">登记列表</param> private static bool UpdateStockCut(ReckoningTransaction tm, List <XH_MelonCutRegisterTableInfo> tables) { #region old code 李健华 2010-06-11 改为因为在每天开市时处理那么生成为当日委托我成交 //List<XH_AccountHoldTableInfo> accountHoldList = new List<XH_AccountHoldTableInfo>(); //List<XH_HistoryTradeTableInfo> historyTradeList = new List<XH_HistoryTradeTableInfo>(); ////add 2010-1-15 因为数据库表有的成交记录是根据委托编号有外键关系,所以这里要生成委托记录 //List<XH_HistoryEntrustTableInfo> historyEntrustList = new List<XH_HistoryEntrustTableInfo>(); ////======== //foreach (XH_MelonCutRegisterTableInfo registerTable in tables) //{ // //更新持仓表 // List<XH_AccountHoldTableInfo> accountHoldTables = GetAccountHoldList( // registerTable.UserAccountDistributeLogo, // registerTable.TradeCurrencyType, registerTable.Code); // if (Utils.IsNullOrEmpty(accountHoldTables)) // continue; // //过户的量 // decimal num = registerTable.RegisterAmount; // //四舍五入 // num = Math.Round(num); // int intNum = decimal.ToInt32(num); // XH_AccountHoldTableInfo accountTable = accountHoldTables[0]; // SetAccountTable(accountTable, intNum); // accountHoldList.Add(accountTable); // //更新委托记录表 // XH_HistoryEntrustTableInfo historyEntrustTable = GetHistoryEntrustTable(registerTable, intNum); // historyEntrustList.Add(historyEntrustTable); // //更新历史成交表 // XH_HistoryTradeTableInfo historyTradeTable = GetHistoryTradeTable(registerTable, intNum); // historyTradeTable.EntrustNumber = historyEntrustTable.EntrustNumber; // historyTradeTable.CapitalAccount = historyEntrustTable.CapitalAccount; // historyTradeList.Add(historyTradeTable); // string format = "MelonCutService.UpdateStockCut进行股票分红[商品代码={0},持仓帐号={1},分红金额={2}]"; // string desc = string.Format(format, registerTable.Code, registerTable.UserAccountDistributeLogo, num); // LogHelper.WriteDebug(desc); //} //XH_AccountHoldTableDal xh_AccountHoldTableDal = new XH_AccountHoldTableDal(); //if (accountHoldList.Count > 0) //{ // foreach (var holdTableInfo in accountHoldList) // { // xh_AccountHoldTableDal.Update(holdTableInfo, tm.Database, tm.Transaction); // } //} ////先添加委托记录 //XH_HistoryEntrustTableDal xh_HistoryEntrustTableDal = new XH_HistoryEntrustTableDal(); //if (historyEntrustList.Count > 0) //{ // foreach (XH_HistoryEntrustTableInfo item in historyEntrustList) // { // xh_HistoryEntrustTableDal.Add(item, tm.Database, tm.Transaction); // } //} ////添加成交记录 ////DataRepository.XhAccountHoldTableProvider.Update(tm, accountHoldList); ////DataRepository.XhHistoryTradeTableProvider.BulkInsert(historyTradeList); //XH_HistoryTradeTableDal xh_HistoryTradeTableDal = new XH_HistoryTradeTableDal(); //if (historyTradeList.Count > 0) //{ // foreach (XH_HistoryTradeTableInfo historyTradeTable in historyTradeList) // { // //DataRepository.XhHistoryTradeTableProvider.Insert(tm, historyTradeTable); // xh_HistoryTradeTableDal.Add(historyTradeTable, tm.Database, tm.Transaction); // } //} ////删除对应的登记记录 ////DataRepository.XhMelonCutRegisterTableProvider.Delete(tm, tables); //XH_MelonCutRegisterTableDal xh_MelonCutRegisterTableDal = new XH_MelonCutRegisterTableDal(); //if (tables.Count > 0) //{ // foreach (var data in tables) // { // xh_MelonCutRegisterTableDal.Delete(data, tm.Database, tm.Transaction); // } //} #endregion #region new code 李健华 2010-06-11 改为因为在每天开市时处理那么生成为当日委托我成交 bool issuc = true; try { List <XH_AccountHoldTableInfo> accountHoldList = new List <XH_AccountHoldTableInfo>(); List <XH_TodayTradeTableInfo> todayTradeList = new List <XH_TodayTradeTableInfo>(); //add 2010-1-15 因为数据库表有的成交记录是根据委托编号有外键关系,所以这里要生成委托记录 List <XH_TodayEntrustTableInfo> todayEntrustList = new List <XH_TodayEntrustTableInfo>(); UA_UserAccountAllocationTableDal dal = new UA_UserAccountAllocationTableDal(); //======== foreach (XH_MelonCutRegisterTableInfo registerTable in tables) { //更新持仓表 List <XH_AccountHoldTableInfo> accountHoldTables = GetAccountHoldList(registerTable.UserAccountDistributeLogo, registerTable.TradeCurrencyType, registerTable.Code); if (Utils.IsNullOrEmpty(accountHoldTables)) { continue; } //过户的量 decimal num = registerTable.RegisterAmount; //四舍五入 num = Math.Round(num); int intNum = decimal.ToInt32(num); XH_AccountHoldTableInfo accountTable = accountHoldTables[0]; SetAccountTable(accountTable, intNum); accountHoldList.Add(accountTable); //更新委托记录表 XH_TodayEntrustTableInfo todayEntrustTable = GetHistoryEntrustTable(registerTable, intNum); todayEntrustList.Add(todayEntrustTable); //更新历史成交表 XH_TodayTradeTableInfo todayTradeTable = GetTodayTradeTable(registerTable, intNum); todayTradeTable.EntrustNumber = todayEntrustTable.EntrustNumber; todayTradeTable.CapitalAccount = todayEntrustTable.CapitalAccount; todayTradeList.Add(todayTradeTable); UA_UserAccountAllocationTableInfo userModel = dal.GetModel(registerTable.UserAccountDistributeLogo); #region 回推相关成交记录信息 ReckonEndObject <XH_TodayEntrustTableInfo, XH_TodayTradeTableInfo> reckonEndObject = new ReckonEndObject <XH_TodayEntrustTableInfo, XH_TodayTradeTableInfo>(); reckonEndObject.IsSuccess = true; reckonEndObject.EntrustTable = todayEntrustTable; List <XH_TodayTradeTableInfo> tradeModels = new List <XH_TodayTradeTableInfo>(); tradeModels.Add(todayTradeTable); reckonEndObject.TradeTableList = tradeModels; if (userModel != null) { reckonEndObject.TradeID = userModel.UserID; } reckonEndObject.Message = "分红委托成交"; CounterOrderService.Instance.AcceptStockDealOrder(reckonEndObject); #endregion string format = "MelonCutService.UpdateStockCut进行股票分红[商品代码={0},持仓帐号={1},分红金额={2}]"; string desc = string.Format(format, registerTable.Code, registerTable.UserAccountDistributeLogo, num); LogHelper.WriteDebug(desc); } XH_AccountHoldTableDal xh_AccountHoldTableDal = new XH_AccountHoldTableDal(); if (accountHoldList.Count > 0) { foreach (var holdTableInfo in accountHoldList) { xh_AccountHoldTableDal.Update(holdTableInfo, tm.Database, tm.Transaction); } } //先添加委托记录 XH_TodayEntrustTableDal xh_HistoryEntrustTableDal = new XH_TodayEntrustTableDal(); if (todayEntrustList.Count > 0) { foreach (XH_TodayEntrustTableInfo item in todayEntrustList) { xh_HistoryEntrustTableDal.Add(item, tm.Database, tm.Transaction); } } //添加成交记录 //DataRepository.XhAccountHoldTableProvider.Update(tm, accountHoldList); //DataRepository.XhHistoryTradeTableProvider.BulkInsert(historyTradeList); XH_TodayTradeTableDal xh_todayTradeTableDal = new XH_TodayTradeTableDal(); if (todayTradeList.Count > 0) { foreach (XH_TodayTradeTableInfo todayTradeTable in todayTradeList) { //DataRepository.XhHistoryTradeTableProvider.Insert(tm, historyTradeTable); xh_todayTradeTableDal.Add(todayTradeTable, tm); } } //删除对应的登记记录 //DataRepository.XhMelonCutRegisterTableProvider.Delete(tm, tables); XH_MelonCutRegisterTableDal xh_MelonCutRegisterTableDal = new XH_MelonCutRegisterTableDal(); if (tables.Count > 0) { foreach (var data in tables) { xh_MelonCutRegisterTableDal.Delete(data, tm.Database, tm.Transaction); } } } catch (Exception ex) { LogHelper.WriteError("过户分红异常" + ex.Message, ex); issuc = false; } return(issuc); #endregion }
/// <summary> /// 构建现货委托单 /// </summary> /// <param name="order"></param> /// <param name="originalOrder"></param> /// <param name="strHoldingAccount"></param> /// <param name="strCapitalAccount"></param> /// <param name="iCurType"></param> /// <param name="strMessage"></param> /// <returns></returns> public static string BuildXhOrder(ref XH_TodayEntrustTableInfo order, StockOrderRequest originalOrder, string strHoldingAccount, string strCapitalAccount, int iCurType, ref string strMessage) { if (order == null) { order = new XH_TodayEntrustTableInfo(); } order.EntrustNumber = BuildXHOrderNo(); order.CurrencyTypeId = iCurType; order.TradeUnitId = (int)originalOrder.OrderUnitType; order.EntrustAmount = (int)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.StockAccount = strHoldingAccount.Trim(); if (strCapitalAccount == null) { strCapitalAccount = ""; } order.CapitalAccount = strCapitalAccount.Trim(); if (originalOrder.PortfoliosId == null) { originalOrder.PortfoliosId = ""; } order.PortfolioLogo = originalOrder.PortfoliosId.Trim(); if (originalOrder.Code == null) { originalOrder.Code = ""; } order.SpotCode = originalOrder.Code.Trim(); order.TradeAmount = 0; order.TradeAveragePrice = 0; order.CancelAmount = 0; order.CancelLogo = true; if (originalOrder.ChannelID == null) { originalOrder.ChannelID = ""; } order.CallbackChannlId = originalOrder.ChannelID.Trim(); order.IsMarketValue = originalOrder.OrderWay == Types.OrderPriceType.OPTMarketPrice ? true : false; order.OrderMessage = ""; order.McOrderId = ""; CheckEntrustLength(order); #if (DEBUG) LogHelper.WriteDebug("XHCommonLogic.BuildXhOrder:" + order); #endif XH_TodayEntrustTableDal dal = new XH_TodayEntrustTableDal(); dal.Add(order); return(order.EntrustNumber); }
/// <summary> /// 构建现货成交回报 /// </summary> /// <param name="tet"></param> /// <param name="sdbe"></param> /// <param name="xhcr"></param> /// <param name="dealCapital"></param> /// <param name="tm"></param> /// <returns></returns> public static XH_TodayTradeTableInfo BuildXHDealRpt(XH_TodayEntrustTableInfo tet, StockDealBackEntity sdbe, XHCostResult xhcr, decimal dealCapital, ReckoningTransaction tm) { string result = string.Empty; //成交回报实体 var xhDealrpt = new XH_TodayTradeTableInfo(); //xhDealrpt.TradeNumber = this.BuildXHDealOrderNo(); xhDealrpt.TradeNumber = sdbe.Id; //不再自己构建id,使用成交回报的id,一一对应 //成交时间 xhDealrpt.TradeTime = sdbe.DealTime; //成交价 xhDealrpt.TradePrice = sdbe.DealPrice; //成交单位 xhDealrpt.TradeUnitId = tet.TradeUnitId; //成交量 xhDealrpt.TradeAmount = Convert.ToInt32(sdbe.DealAmount); //股东代码 xhDealrpt.StockAccount = tet.StockAccount; //资金帐户 xhDealrpt.CapitalAccount = tet.CapitalAccount; //成交回报类型 xhDealrpt.TradeTypeId = (int)Types.DealRptType.DRTDealed; //现货名称 xhDealrpt.SpotCode = tet.SpotCode; //印花税 xhDealrpt.StampTax = xhcr.StampDuty; //佣金 xhDealrpt.Commission = xhcr.Commision; //过户费 xhDealrpt.TransferAccountFee = xhcr.TransferToll; //交易系统使用费 xhDealrpt.TradingSystemUseFee = xhcr.TradeSystemFees; //监管费 xhDealrpt.MonitoringFee = xhcr.MonitoringFee; //结算费 xhDealrpt.ClearingFee = xhcr.ClearingFees; //委托价格 xhDealrpt.EntrustPrice = tet.EntrustPrice; //成交金额 xhDealrpt.TradeCapitalAmount = dealCapital; // xhDealrpt.TradePrice*xhDealrpt.TradeAmount;//TODO:是否正确?没有算比例 //投组标识 xhDealrpt.PortfolioLogo = tet.PortfolioLogo; //货币类型 xhDealrpt.CurrencyTypeId = tet.CurrencyTypeId; //买卖方向 xhDealrpt.BuySellTypeId = tet.BuySellTypeId; xhDealrpt.EntrustNumber = tet.EntrustNumber; XH_TodayTradeTableDal xhTodayTradeTableDal = new XH_TodayTradeTableDal(); if (xhTodayTradeTableDal.Exists(xhDealrpt.TradeNumber)) { string format = "BuildXHDealRpt数据库已经存在TradeNumber={0}"; string desc = string.Format(format, xhDealrpt.TradeNumber); LogHelper.WriteDebug(desc); //xhDealrpt = xhTodayTradeTableDal.GetModel(xhDealrpt.TradeNumber); return(null); } try { xhTodayTradeTableDal.Add(xhDealrpt, tm); } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); xhDealrpt = null; } return(xhDealrpt); }
/// <summary> /// 构建现货撤单成交回报 /// </summary> /// <param name="tet"></param> /// <param name="rde"></param> /// <param name="tm"></param> /// <param name="trade"></param> /// <param name="isInternalCancel"></param> /// <returns></returns> public static string BuildXHCancelRpt(XH_TodayEntrustTableInfo tet, CancelOrderEntity rde, ReckoningTransaction tm, out XH_TodayTradeTableInfo trade, bool isInternalCancel) { string result = string.Empty; //当为价格错误的撤单时,直接作为废单,不记录到数据库中。 if (rde.OrderVolume == -1) { trade = null; return(result); } //成交回报实体 var xhDealrpt = new XH_TodayTradeTableInfo(); //xhDealrpt.TradeNumber = this.BuildXHDealOrderNo(); xhDealrpt.TradeNumber = rde.Id; //不再自己构建id,使用撤单回报的id,一一对应 //成交时间 xhDealrpt.TradeTime = DateTime.Now; //成交价 xhDealrpt.TradePrice = 0; //成交单位 xhDealrpt.TradeUnitId = tet.TradeUnitId; //成交量 xhDealrpt.TradeAmount = Convert.ToInt32(rde.OrderVolume); //股东代码 xhDealrpt.StockAccount = tet.StockAccount; //资金帐户 xhDealrpt.CapitalAccount = tet.CapitalAccount; //成交回报类型 if (isInternalCancel) { xhDealrpt.TradeTypeId = (int)Types.DealRptType.DRTInternalCanceled; } else { xhDealrpt.TradeTypeId = (int)Types.DealRptType.DRTCanceled; } //现货名称 xhDealrpt.SpotCode = tet.SpotCode; //印花税 xhDealrpt.StampTax = 0; //佣金 xhDealrpt.Commission = 0; //过户费 xhDealrpt.TransferAccountFee = 0; //交易系统使用费 xhDealrpt.TradingSystemUseFee = 0; //监管费 xhDealrpt.MonitoringFee = 0; xhDealrpt.ClearingFee = 0; //委托价格 xhDealrpt.EntrustPrice = tet.EntrustPrice; //成交金额 xhDealrpt.TradeCapitalAmount = xhDealrpt.TradePrice * xhDealrpt.TradeAmount; //投组标识 xhDealrpt.PortfolioLogo = tet.PortfolioLogo; //货币类型 xhDealrpt.CurrencyTypeId = tet.CurrencyTypeId; //买卖方向 xhDealrpt.BuySellTypeId = tet.BuySellTypeId; xhDealrpt.EntrustNumber = tet.EntrustNumber; XH_TodayTradeTableDal xhTodayTradeTableDal = new XH_TodayTradeTableDal(); xhTodayTradeTableDal.Add(xhDealrpt, tm); result = xhDealrpt.TradeNumber; trade = xhDealrpt; return(result); }