/// <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);
        }
示例#3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 public SpotCapitalEntity()
 {
     GTCapitalObj           = null;
     MarketValue            = 0;
     AssetAmount            = 0;
     NotDoneProfitLossTotal = 0;
     CurrencyName           = string.Empty;
 }
示例#4
0
 /// <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;
 }
示例#5
0
        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);
        }
示例#10
0
        /// <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));
        }