/// <summary>
        /// 对象实体绑定数据
        /// </summary>
        public UA_CapitalFlowTableInfo ReaderBind(IDataReader dataReader)
        {
            UA_CapitalFlowTableInfo model = new UA_CapitalFlowTableInfo();
            object ojb;

            ojb = dataReader["CapitalFlowLogo"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.CapitalFlowLogo = (int)ojb;
            }
            model.FromCapitalAccount = dataReader["FromCapitalAccount"].ToString();
            model.ToCapitalAccount   = dataReader["ToCapitalAccount"].ToString();
            ojb = dataReader["TransferAmount"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.TransferAmount = (decimal)ojb;
            }
            ojb = dataReader["TransferTime"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.TransferTime = (DateTime)ojb;
            }
            ojb = dataReader["TradeCurrencyType"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.TradeCurrencyType = (int)ojb;
            }
            ojb = dataReader["TransferTypeLogo"];
            if (ojb != null && ojb != DBNull.Value)
            {
                model.TransferTypeLogo = (int)ojb;
            }
            return(model);
        }
        /// <summary>
        /// 增加一条数据
        /// </summary>
        public int Add(UA_CapitalFlowTableInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into UA_CapitalFlowTable(");
            strSql.Append(
                "FromCapitalAccount,ToCapitalAccount,TransferAmount,TransferTime,TradeCurrencyType,TransferTypeLogo)");

            strSql.Append(" values (");
            strSql.Append(
                "@FromCapitalAccount,@ToCapitalAccount,@TransferAmount,@TransferTime,@TradeCurrencyType,@TransferTypeLogo)");
            strSql.Append(";select @@IDENTITY");
            Database  db        = DatabaseFactory.CreateDatabase();
            DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());

            db.AddInParameter(dbCommand, "FromCapitalAccount", DbType.AnsiString, model.FromCapitalAccount);
            db.AddInParameter(dbCommand, "ToCapitalAccount", DbType.AnsiString, model.ToCapitalAccount);
            db.AddInParameter(dbCommand, "TransferAmount", DbType.Decimal, model.TransferAmount);
            db.AddInParameter(dbCommand, "TransferTime", DbType.DateTime, model.TransferTime);
            db.AddInParameter(dbCommand, "TradeCurrencyType", DbType.Int32, model.TradeCurrencyType);
            db.AddInParameter(dbCommand, "TransferTypeLogo", DbType.Int32, model.TransferTypeLogo);
            int    result;
            object obj = db.ExecuteScalar(dbCommand);

            if (!int.TryParse(obj.ToString(), out result))
            {
                return(0);
            }
            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 创建资金流水表的记录
        /// </summary>
        /// <param name="registerTable">登记表实体</param>
        /// <param name="capitalAccount">资金账号</param>
        /// <param name="num">分红金额</param>
        /// <returns>资金流水表实体</returns>
        private static UA_CapitalFlowTableInfo GetFlowTable(XH_MelonCutRegisterTableInfo registerTable, string capitalAccount, decimal num)
        {
            UA_CapitalFlowTableInfo flowTable = new UA_CapitalFlowTableInfo();

            flowTable.TradeCurrencyType  = registerTable.TradeCurrencyType;
            flowTable.FromCapitalAccount = string.Empty; //因为数据库不能为null所以这里以空的字符串填充
            //flowTable.ToCapitalAccount = registerTable.UserAccountDistributeLogo;
            flowTable.ToCapitalAccount = capitalAccount;
            flowTable.TransferAmount   = num;
            flowTable.TransferTime     = DateTime.Now;
            flowTable.TransferTypeLogo = (int)Types.TransferType.DividendTransfer;
            return(flowTable);
        }
        /// <summary>
        /// 带事物更新数据
        /// </summary>
        /// <param name="model">实体</param>
        /// <param name="db">Database</param>
        /// <param name="transaction">DbTransaction</param>
        public void Add(UA_CapitalFlowTableInfo model, Database db, DbTransaction transaction)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("insert into UA_CapitalFlowTable(");
            strSql.Append(
                "FromCapitalAccount,ToCapitalAccount,TransferAmount,TransferTime,TradeCurrencyType,TransferTypeLogo)");

            strSql.Append(" values (");
            strSql.Append(
                "@FromCapitalAccount,@ToCapitalAccount,@TransferAmount,@TransferTime,@TradeCurrencyType,@TransferTypeLogo)");
            DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());

            db.AddInParameter(dbCommand, "FromCapitalAccount", DbType.AnsiString, model.FromCapitalAccount);
            db.AddInParameter(dbCommand, "ToCapitalAccount", DbType.AnsiString, model.ToCapitalAccount);
            db.AddInParameter(dbCommand, "TransferAmount", DbType.Decimal, model.TransferAmount);
            db.AddInParameter(dbCommand, "TransferTime", DbType.DateTime, model.TransferTime);
            db.AddInParameter(dbCommand, "TradeCurrencyType", DbType.Int32, model.TradeCurrencyType);
            db.AddInParameter(dbCommand, "TransferTypeLogo", DbType.Int32, model.TransferTypeLogo);
            db.ExecuteNonQuery(dbCommand, transaction);
        }
        /// <summary>
        /// 得到一个对象实体
        /// </summary>
        public UA_CapitalFlowTableInfo GetModel(int CapitalFlowLogo)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append(
                "select CapitalFlowLogo,FromCapitalAccount,ToCapitalAccount,TransferAmount,TransferTime,TradeCurrencyType,TransferTypeLogo from UA_CapitalFlowTable ");
            strSql.Append(" where CapitalFlowLogo=@CapitalFlowLogo ");
            Database  db        = DatabaseFactory.CreateDatabase();
            DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());

            db.AddInParameter(dbCommand, "CapitalFlowLogo", DbType.Int32, CapitalFlowLogo);
            UA_CapitalFlowTableInfo model = null;

            using (IDataReader dataReader = db.ExecuteReader(dbCommand))
            {
                if (dataReader.Read())
                {
                    model = ReaderBind(dataReader);
                }
            }
            return(model);
        }
        /// <summary>
        /// 更新一条数据
        /// </summary>
        public void Update(UA_CapitalFlowTableInfo model)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("update UA_CapitalFlowTable set ");
            strSql.Append("FromCapitalAccount=@FromCapitalAccount,");
            strSql.Append("ToCapitalAccount=@ToCapitalAccount,");
            strSql.Append("TransferAmount=@TransferAmount,");
            strSql.Append("TransferTime=@TransferTime,");
            strSql.Append("TradeCurrencyType=@TradeCurrencyType,");
            strSql.Append("TransferTypeLogo=@TransferTypeLogo");
            strSql.Append(" where CapitalFlowLogo=@CapitalFlowLogo ");
            Database  db        = DatabaseFactory.CreateDatabase();
            DbCommand dbCommand = db.GetSqlStringCommand(strSql.ToString());

            db.AddInParameter(dbCommand, "CapitalFlowLogo", DbType.Int32, model.CapitalFlowLogo);
            db.AddInParameter(dbCommand, "FromCapitalAccount", DbType.AnsiString, model.FromCapitalAccount);
            db.AddInParameter(dbCommand, "ToCapitalAccount", DbType.AnsiString, model.ToCapitalAccount);
            db.AddInParameter(dbCommand, "TransferAmount", DbType.Decimal, model.TransferAmount);
            db.AddInParameter(dbCommand, "TransferTime", DbType.DateTime, model.TransferTime);
            db.AddInParameter(dbCommand, "TradeCurrencyType", DbType.Int32, model.TradeCurrencyType);
            db.AddInParameter(dbCommand, "TransferTypeLogo", DbType.Int32, model.TransferTypeLogo);
            db.ExecuteNonQuery(dbCommand);
        }
Exemplo n.º 7
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>
        /// 追加资金
        /// </summary>
        /// <param name="addCapital"></param>
        /// <param name="outMessage"></param>
        /// <returns></returns>
        public bool AddCapital(AddCapitalEntity addCapital, out string outMessage)
        {
            outMessage = string.Empty;
            //TransactionManager tm = TransactionFactory.GetTransactionManager();
            //tm.BeginTransaction();
            try
            {
                if (addCapital == null)
                {
                    return(false);
                }
                UA_UserAccountAllocationTableDal userAccountDal = new UA_UserAccountAllocationTableDal();
                // new SqlUaUserAccountAllocationTableProvider(TransactionFactory.RC_ConnectionString, true, "");
                string findCodition = string.Format(" UserID='{0}' AND AccountTypeLogo='{1}'", addCapital.TraderID, 1);
                List <UA_UserAccountAllocationTableInfo> list = userAccountDal.GetListArray(findCodition);
                if (list == null || list.Count < 1)
                {
                    outMessage = "该交易员的银行帐号不存在!";
                    return(false);
                }
                if (list[0].UserAccountDistributeLogo != addCapital.BankCapitalAccount)
                {
                    outMessage = "银行帐号不正确!";
                    return(false);
                }

                UA_BankAccountTableDal _BankAccount = new UA_BankAccountTableDal();
                //new SqlUaBankAccountTableProvider(TransactionFactory.RC_ConnectionString, true, "");
                UA_CapitalFlowTableDal _UaCapitalFlow = new UA_CapitalFlowTableDal();
                //new SqlUaCapitalFlowTableProvider(TransactionFactory.RC_ConnectionString, true, "");
                Database db = DatabaseFactory.CreateDatabase();
                using (DbConnection conn = db.CreateConnection())
                {
                    conn.Open();
                    DbTransaction trm = conn.BeginTransaction();

                    try
                    {
                        if (addCapital.AddRMBAmount > 0 && addCapital.AddRMBAmount != decimal.MaxValue)
                        {
                            #region 增加人民币
                            var _record = _BankAccount.GetModel((int)Types.CurrencyType.RMB, addCapital.BankCapitalAccount);
                            if (_record == null)
                            {
                                outMessage = "币种为人民币的银行帐号不存在!";
                                return(false);
                            }
                            #region old code
                            ////_record.CapitalRemainAmount = _record.CapitalRemainAmount + addCapital.AddRMBAmount;
                            ////_record.AvailableCapital += addCapital.AddRMBAmount;
                            ////_record.TodayOutInCapital += addCapital.AddRMBAmount;
                            ////if (!_BankAccount.Update(tm, _record))
                            ////{
                            ////    outMessage = "更新人民币银行帐号失败!";
                            ////    return false;
                            ////}
                            //string sql =
                            //    string.Format(
                            //        "Update UA_BankAccountTable set CapitalRemainAmount=CapitalRemainAmount+{0},AvailableCapital=AvailableCapital+{0},TodayOutInCapital=TodayOutInCapital+{0} where TradeCurrencyTypeLogo={1} AND UserAccountDistributeLogo='{2}'",
                            //        addCapital.AddRMBAmount, (int)Types.CurrencyType.RMB, addCapital.BankCapitalAccount);
                            //DataRepository.Provider.ExecuteNonQuery(tm, CommandType.Text, sql);
                            #endregion
                            _BankAccount.AddCapital(addCapital.AddRMBAmount, addCapital.BankCapitalAccount, Types.CurrencyType.RMB, db, trm);

                            var _UaCapitalFlowTable = new UA_CapitalFlowTableInfo();
                            _UaCapitalFlowTable.TradeCurrencyType  = (int)Types.CurrencyType.RMB;
                            _UaCapitalFlowTable.FromCapitalAccount = string.Empty;
                            _UaCapitalFlowTable.ToCapitalAccount   = addCapital.BankCapitalAccount;
                            _UaCapitalFlowTable.TransferAmount     = addCapital.AddRMBAmount;
                            _UaCapitalFlowTable.TransferTime       = System.DateTime.Now;
                            _UaCapitalFlowTable.TransferTypeLogo   =
                                (int)ReckoningCounter.Entity.Contants.Types.TransferType.AddCapital;
                            _UaCapitalFlow.Add(_UaCapitalFlowTable, db, trm);
                            //if (!_UaCapitalFlow.Insert(tm, _UaCapitalFlowTable))
                            //{
                            //outMessage = "记录资金流水失败";
                            //return false;
                            //}
                            #endregion
                        }
                        if (addCapital.AddHKAmount > 0 && addCapital.AddHKAmount != decimal.MaxValue)
                        {
                            #region 增加港币
                            var _record = _BankAccount.GetModel((int)Types.CurrencyType.HK, addCapital.BankCapitalAccount);
                            //var _record =  _BankAccount.GetByTradeCurrencyTypeLogoUserAccountDistributeLogo((int)Types.CurrencyType.HK,
                            //                                                                     addCapital.BankCapitalAccount);
                            if (_record == null)
                            {
                                outMessage = "币种为港元的银行帐号不存在!";
                                return(false);
                            }
                            #region old code
                            ////_record.CapitalRemainAmount += addCapital.AddHKAmount;
                            ////_record.AvailableCapital += addCapital.AddHKAmount;
                            ////_record.TodayOutInCapital += addCapital.AddHKAmount;
                            ////if (!_BankAccount.Update(tm, _record))
                            ////{
                            ////    outMessage = "更新港元银行帐号失败!";
                            ////    return false;
                            ////}
                            //string sql =
                            //   string.Format(
                            //       "Update UA_BankAccountTable set CapitalRemainAmount=CapitalRemainAmount+{0},AvailableCapital=AvailableCapital+{0},TodayOutInCapital=TodayOutInCapital+{0} where TradeCurrencyTypeLogo={1} AND UserAccountDistributeLogo='{2}'",
                            //       addCapital.AddHKAmount, (int)Types.CurrencyType.HK, addCapital.BankCapitalAccount);
                            //DataRepository.Provider.ExecuteNonQuery(tm, CommandType.Text, sql);
                            #endregion
                            _BankAccount.AddCapital(addCapital.AddHKAmount, addCapital.BankCapitalAccount, Types.CurrencyType.HK, db, trm);

                            var _UaCapitalFlowTable = new UA_CapitalFlowTableInfo();
                            _UaCapitalFlowTable.TradeCurrencyType  = (int)Types.CurrencyType.HK;
                            _UaCapitalFlowTable.FromCapitalAccount = string.Empty;
                            _UaCapitalFlowTable.ToCapitalAccount   = addCapital.BankCapitalAccount;
                            _UaCapitalFlowTable.TransferAmount     = addCapital.AddHKAmount;
                            _UaCapitalFlowTable.TransferTime       = System.DateTime.Now;
                            _UaCapitalFlowTable.TransferTypeLogo   =
                                (int)ReckoningCounter.Entity.Contants.Types.TransferType.AddCapital;
                            _UaCapitalFlow.Add(_UaCapitalFlowTable, db, trm);
                            //if (!_UaCapitalFlow.Insert(tm, _UaCapitalFlowTable))
                            //{
                            //    outMessage = "记录资金流水失败";
                            //    return false;
                            //}
                            #endregion
                        }
                        if (addCapital.AddUSAmount > 0 && addCapital.AddUSAmount != decimal.MaxValue)
                        {
                            #region 增加美元
                            //var _record =
                            //    _BankAccount.GetByTradeCurrencyTypeLogoUserAccountDistributeLogo((int)Types.CurrencyType.US,
                            //                                                                     addCapital.BankCapitalAccount);
                            var _record = _BankAccount.GetModel((int)Types.CurrencyType.US, addCapital.BankCapitalAccount);

                            if (_record == null)
                            {
                                outMessage = "币种为美元的银行帐号不存在!";
                                return(false);
                            }
                            //_record.CapitalRemainAmount += addCapital.AddUSAmount;
                            //_record.AvailableCapital += addCapital.AddUSAmount;
                            //_record.TodayOutInCapital += addCapital.AddUSAmount;
                            //if (!_BankAccount.Update(tm, _record))
                            //{
                            //    outMessage = "更新美元银行帐号失败!";
                            //    return false;
                            //}

                            //string sql =
                            //  string.Format(
                            //      "Update UA_BankAccountTable set CapitalRemainAmount=CapitalRemainAmount+{0},AvailableCapital=AvailableCapital+{0},TodayOutInCapital=TodayOutInCapital+{0} where TradeCurrencyTypeLogo={1} AND UserAccountDistributeLogo='{2}'",
                            //      addCapital.AddUSAmount, (int)Types.CurrencyType.US, addCapital.BankCapitalAccount);
                            //DataRepository.Provider.ExecuteNonQuery(tm, CommandType.Text, sql);
                            _BankAccount.AddCapital(addCapital.AddUSAmount, addCapital.BankCapitalAccount, Types.CurrencyType.US, db, trm);

                            var _UaCapitalFlowTable = new UA_CapitalFlowTableInfo();
                            _UaCapitalFlowTable.TradeCurrencyType  = (int)Types.CurrencyType.US;
                            _UaCapitalFlowTable.FromCapitalAccount = string.Empty;
                            _UaCapitalFlowTable.ToCapitalAccount   = addCapital.BankCapitalAccount;
                            _UaCapitalFlowTable.TransferAmount     = addCapital.AddUSAmount;
                            _UaCapitalFlowTable.TransferTime       = System.DateTime.Now;
                            _UaCapitalFlowTable.TransferTypeLogo   =
                                (int)ReckoningCounter.Entity.Contants.Types.TransferType.AddCapital;
                            _UaCapitalFlow.Add(_UaCapitalFlowTable, db, trm);

                            //if (!_UaCapitalFlow.Insert(tm, _UaCapitalFlowTable))
                            //{
                            //    outMessage = "记录资金流水失败";
                            //    return false;
                            //}
                            #endregion
                        }
                        trm.Commit();
                    }
                    catch (Exception ex)
                    {
                        trm.Rollback();
                        outMessage = ex.Message.ToString();
                        LogHelper.WriteError(outMessage, ex);
                        return(false);
                    }
                    finally
                    {
                        trm.Dispose();
                    }
                }
                outMessage = "追加资金成功!";
                return(true);
            }
            catch (Exception ex)
            {
                outMessage = ex.Message.ToString();
                LogHelper.WriteError(outMessage, ex);
                return(false);
            }
        }