/// <summary> /// 开启事务更新数据 /// Create BY:李健华 /// Create date:2009-07-16 /// </summary> /// <param name="model">要更新的实体</param> /// <param name="db"></param> /// <param name="trm">如果为null不开启事务</param> public void Update(XH_CapitalAccountTableInfo model, Database db, DbTransaction trm) { StringBuilder strSql = new StringBuilder(); strSql.Append("update XH_CapitalAccountTable set "); strSql.Append("AvailableCapital=@AvailableCapital,"); strSql.Append("UserAccountDistributeLogo=@UserAccountDistributeLogo,"); strSql.Append("BalanceOfTheDay=@BalanceOfTheDay,"); strSql.Append("TodayOutInCapital=@TodayOutInCapital,"); strSql.Append("FreezeCapitalTotal=@FreezeCapitalTotal,"); //strSql.Append("CapitalBalance=@CapitalBalance,"); strSql.Append("TradeCurrencyType=@TradeCurrencyType,"); strSql.Append("HasDoneProfitLossTotal=@HasDoneProfitLossTotal"); strSql.Append(" where CapitalAccountLogo=@CapitalAccountLogo "); DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "AvailableCapital", DbType.Decimal, model.AvailableCapital); db.AddInParameter(dbCommand, "CapitalAccountLogo", DbType.Int32, model.CapitalAccountLogo); db.AddInParameter(dbCommand, "UserAccountDistributeLogo", DbType.AnsiString, model.UserAccountDistributeLogo); db.AddInParameter(dbCommand, "BalanceOfTheDay", DbType.Decimal, model.BalanceOfTheDay); db.AddInParameter(dbCommand, "TodayOutInCapital", DbType.Decimal, model.TodayOutInCapital); db.AddInParameter(dbCommand, "FreezeCapitalTotal", DbType.Decimal, model.FreezeCapitalTotal); //db.AddInParameter(dbCommand, "CapitalBalance", DbType.Decimal, model.CapitalBalance); db.AddInParameter(dbCommand, "TradeCurrencyType", DbType.Int32, model.TradeCurrencyType); db.AddInParameter(dbCommand, "HasDoneProfitLossTotal", DbType.Decimal, model.HasDoneProfitLossTotal); if (trm != null) { db.ExecuteNonQuery(dbCommand, trm); } else { db.ExecuteNonQuery(dbCommand); } }
/// <summary> /// 初始化现货资金账户 /// </summary> /// <param name="account">账户实体对象</param> /// <param name="outMessage"></param> /// <param name="db"></param> /// <param name="tm">开启事务对象,如果为null不开启事务</param> public void InitializationXHCapitalAccount(AccountEntity account, out string outMessage, Database db, DbTransaction tm) { outMessage = string.Empty; if (account == null) { outMessage = "现货资金账户对象为空!"; return; } //var _XhCapitalAccount = new SqlXhCapitalAccountTableProvider(TransactionFactory.RC_ConnectionString, true, ""); XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); XH_CapitalAccountTableInfo model = new XH_CapitalAccountTableInfo(); model.AvailableCapital = 0; model.BalanceOfTheDay = 0; model.FreezeCapitalTotal = 0; model.TodayOutInCapital = 0; model.UserAccountDistributeLogo = account.Account; model.CapitalBalance = 0; model.TradeCurrencyType = (int)GTA.VTS.Common.CommonObject.Types.CurrencyType.RMB; dal.Add(model, db, tm); model.TradeCurrencyType = (int)GTA.VTS.Common.CommonObject.Types.CurrencyType.HK; dal.Add(model, db, tm); model.TradeCurrencyType = (int)GTA.VTS.Common.CommonObject.Types.CurrencyType.US; dal.Add(model, db, tm); }
/// <summary> /// 构造函数 /// </summary> public SpotCapitalEntity() { GTCapitalObj = null; MarketValue = 0; AssetAmount = 0; NotDoneProfitLossTotal = 0; CurrencyName = string.Empty; }
/// <summary> /// 构造函数重载 /// </summary> /// <param name="gTCapitalObj">现货资金账号信息实体</param> /// <param name="dMarketValue">现所有持仓总市值</param> /// <param name="currencyName">当前交易货币类型</param> /// <param name="notDoneProfitLossTotal">未实现盈亏</param> public SpotCapitalEntity(XH_CapitalAccountTableInfo gTCapitalObj, decimal dMarketValue, string currencyName, decimal notDoneProfitLossTotal) { GTCapitalObj = gTCapitalObj; MarketValue = dMarketValue; AssetAmount = MarketValue + GTCapitalObj.CapitalBalance; NotDoneProfitLossTotal = notDoneProfitLossTotal; ProfitLossTotal = gTCapitalObj.HasDoneProfitLossTotal + notDoneProfitLossTotal; CurrencyName = currencyName; }
private static bool func(XH_CapitalAccountTableInfo baseData, XH_CapitalAccountTable_DeltaInfo delta) { Console.WriteLine("base:" + baseData.AvailableCapital + " delta:" + delta.AvailableCapitalDelta); if (baseData.AvailableCapital < 0) { return(false); } return(baseData.AvailableCapital + delta.AvailableCapitalDelta >= 0); }
/// <summary> /// 对象实体绑定数据 /// </summary> public XH_CapitalAccountTableInfo ReaderBind(IDataReader dataReader) { XH_CapitalAccountTableInfo model = new XH_CapitalAccountTableInfo(); object ojb; ojb = dataReader["AvailableCapital"]; if (ojb != null && ojb != DBNull.Value) { model.AvailableCapital = (decimal)ojb; } ojb = dataReader["CapitalAccountLogo"]; if (ojb != null && ojb != DBNull.Value) { model.CapitalAccountLogo = (int)ojb; } model.UserAccountDistributeLogo = dataReader["UserAccountDistributeLogo"].ToString(); ojb = dataReader["BalanceOfTheDay"]; if (ojb != null && ojb != DBNull.Value) { model.BalanceOfTheDay = (decimal)ojb; } ojb = dataReader["TodayOutInCapital"]; if (ojb != null && ojb != DBNull.Value) { model.TodayOutInCapital = (decimal)ojb; } ojb = dataReader["FreezeCapitalTotal"]; if (ojb != null && ojb != DBNull.Value) { model.FreezeCapitalTotal = (decimal)ojb; } ojb = dataReader["CapitalBalance"]; if (ojb != null && ojb != DBNull.Value) { model.CapitalBalance = (decimal)ojb; } ojb = dataReader["TradeCurrencyType"]; if (ojb != null && ojb != DBNull.Value) { model.TradeCurrencyType = (int)ojb; } ojb = dataReader["HasDoneProfitLossTotal"]; if (ojb != null && ojb != DBNull.Value) { model.HasDoneProfitLossTotal = (decimal)ojb; } return(model); }
private bool CapitalCheck(XH_CapitalAccountTableInfo capital, XH_CapitalAccountTable_DeltaInfo change) { //只有买时才检查 if (Request.BuySell == GTA.VTS.Common.CommonObject.Types.TransactionDirection.Buying) { if (capital.AvailableCapital <= 0) { return(false); } return(capital.AvailableCapital + change.AvailableCapitalDelta >= 0); } //卖时只要成交额大于费用即可,前面已经检查过,此处不再检查 return(true); }
/// <summary> /// 得到一个对象实体 /// </summary> public XH_CapitalAccountTableInfo GetModel(int CapitalAccountLogo) { StringBuilder strSql = new StringBuilder(); strSql.Append( "select AvailableCapital,CapitalAccountLogo,UserAccountDistributeLogo,BalanceOfTheDay,TodayOutInCapital,FreezeCapitalTotal,CapitalBalance,TradeCurrencyType,HasDoneProfitLossTotal from XH_CapitalAccountTable "); strSql.Append(" where CapitalAccountLogo=@CapitalAccountLogo "); Database db = DatabaseFactory.CreateDatabase(); DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "CapitalAccountLogo", DbType.Int32, CapitalAccountLogo); XH_CapitalAccountTableInfo model = null; using (IDataReader dataReader = db.ExecuteReader(dbCommand)) { if (dataReader.Read()) { model = ReaderBind(dataReader); } } return(model); }
/// <summary> /// 开是否开启事务增加一条数据 /// <param name="model">要插入的用户账号对象</param> /// <param name="db">操作数据对象</param> /// <param name="trm">开启事务对象,如果为null不开启</param> /// </summary> public int Add(XH_CapitalAccountTableInfo model, Database db, DbTransaction trm) { StringBuilder strSql = new StringBuilder(); strSql.Append("insert into XH_CapitalAccountTable("); strSql.Append( "AvailableCapital,UserAccountDistributeLogo,BalanceOfTheDay,TodayOutInCapital,FreezeCapitalTotal,TradeCurrencyType,HasDoneProfitLossTotal)"); strSql.Append(" values ("); strSql.Append( "@AvailableCapital,@UserAccountDistributeLogo,@BalanceOfTheDay,@TodayOutInCapital,@FreezeCapitalTotal,@TradeCurrencyType,@HasDoneProfitLossTotal)"); strSql.Append(";select @@IDENTITY"); DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString()); db.AddInParameter(dbCommand, "AvailableCapital", DbType.Decimal, model.AvailableCapital); db.AddInParameter(dbCommand, "UserAccountDistributeLogo", DbType.AnsiString, model.UserAccountDistributeLogo); db.AddInParameter(dbCommand, "BalanceOfTheDay", DbType.Decimal, model.BalanceOfTheDay); db.AddInParameter(dbCommand, "TodayOutInCapital", DbType.Decimal, model.TodayOutInCapital); db.AddInParameter(dbCommand, "FreezeCapitalTotal", DbType.Decimal, model.FreezeCapitalTotal); //db.AddInParameter(dbCommand, "CapitalBalance", DbType.Decimal, model.CapitalBalance);//数据库统计值不用附值 db.AddInParameter(dbCommand, "TradeCurrencyType", DbType.Int32, model.TradeCurrencyType); db.AddInParameter(dbCommand, "HasDoneProfitLossTotal", DbType.Decimal, model.HasDoneProfitLossTotal); int result; object obj = null; if (trm == null) { obj = db.ExecuteScalar(dbCommand); } else { obj = db.ExecuteScalar(dbCommand, trm); } if (!int.TryParse(obj.ToString(), out result)) { return(0); } return(result); }
/// <summary> /// 更新分红记录 /// </summary> /// <param name="tm">TransactionManager</param> /// <param name="cash">分红信息</param> /// <param name="tables">登记列表</param> private static bool UpdateCashCut(ReckoningTransaction tm, IList <XH_MelonCutRegisterTableInfo> tables) { bool issuss = true; List <XH_CapitalAccountTableInfo> capitalList = new List <XH_CapitalAccountTableInfo>(); List <UA_CapitalFlowTableInfo> flowList = new List <UA_CapitalFlowTableInfo>(); XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); try { foreach (XH_MelonCutRegisterTableInfo registerTable in tables) { //分红的现金额 decimal num = registerTable.RegisterAmount; UA_UserAccountAllocationTableInfo capitalAccount = Utils.GetCapitalAccountByHoldAccount(registerTable.UserAccountDistributeLogo, registerTable.Code); XH_CapitalAccountTableInfo accountTable = dal.GetXHCapitalAccount(capitalAccount.UserAccountDistributeLogo, registerTable.TradeCurrencyType); if (accountTable == null) { continue; } accountTable.TodayOutInCapital += num; accountTable.AvailableCapital += num; capitalList.Add(accountTable); //更新资金流水表 UA_CapitalFlowTableInfo flowTable = GetFlowTable(registerTable, capitalAccount.UserAccountDistributeLogo, num); flowList.Add(flowTable); string format = "MelonCutService.UpdateCashCut进行现金分红[商品代码={0},持仓帐号={1},分红金额={2}]"; string desc = string.Format(format, registerTable.Code, registerTable.UserAccountDistributeLogo, num); LogHelper.WriteDebug(desc); } XH_CapitalAccountTableDal xh_AccountTableDal = new XH_CapitalAccountTableDal(); if (capitalList.Count > 0) { foreach (var accountTableInfo in capitalList) { xh_AccountTableDal.Update(accountTableInfo, tm.Database, tm.Transaction); } } if (flowList.Count > 0) { UA_CapitalFlowTableDal flowTableDal = new UA_CapitalFlowTableDal(); foreach (var historyTradeTableInfo in flowList) { flowTableDal.Add(historyTradeTableInfo, tm.Database, tm.Transaction); } } if (tables.Count > 0) { XH_MelonCutRegisterTableDal melonCutRegisterTableDal = new XH_MelonCutRegisterTableDal(); foreach (var registerTableInfo in tables) { melonCutRegisterTableDal.Delete(registerTableInfo, tm.Database, tm.Transaction); } } } catch (Exception ex) { issuss = false; LogHelper.WriteError("分红出现问题 ", ex); } return(issuss); }
/// <summary> /// 更新一条数据 /// Update BY:李健华 /// Update date:2009-07-16 /// Desc.:更改重载是否开启事务操作,本方法调用是否开启事务方法,此为默认不开启事务 /// </summary> public void Update(XH_CapitalAccountTableInfo model) { Database db = DatabaseFactory.CreateDatabase(); Update(model, db, null); }
/// <summary> /// 增加一条数据 /// </summary> public int Add(XH_CapitalAccountTableInfo model) { Database db = DatabaseFactory.CreateDatabase(); return(Add(model, db, null)); }