/// <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); }
/// <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); }
/// <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); } }