/// <summary> /// 根据条件从数据库中获取相应的基础表数据 /// </summary> /// <param name="where">条件</param> /// <returns></returns> public XH_CapitalAccountTableInfo GetBaseFromDBByWhere(string where) { try { XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); string sqlWhere = ""; if (where.Split('@').Length > 1) { sqlWhere = string.Format("UserAccountDistributeLogo='{0}' and TradeCurrencyType='{1}' ", where.Split('@')[0], where.Split('@')[1]); } else { sqlWhere = string.Format("UserAccountDistributeLogo='{0}' ", where.Split('@')[0]); } var data = dal.GetListArray(sqlWhere); if (data != null && data.Count > 0) { return(data[0]); } else { return(null); } } catch (Exception ex) { LogHelper.WriteError("根据条件从数据库中获取相应的现货资金基础表数据异常:" + where + ex.Message, ex); return(null); } }
/// <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> /// 获取指定Id的资金表 /// </summary> /// <param name="k"></param> /// <returns></returns> public XH_CapitalAccountTableInfo GetBaseTable(int k) { XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); var data = dal.GetModel(k); return(data); }
/// <summary> /// 获取所有资金内存表 /// </summary> /// <returns></returns> public List <XH_CapitalAccountTableInfo> GetAllBaseTable() { XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); List <XH_CapitalAccountTableInfo> list = dal.GetAllListArray(); return(list); }
public static void DoAction(object obj) { int i = (int)obj; XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); DataManager.ExecuteInTransaction((database, transaction) => { dal.AddUpdate(2, 1, 1, 1, 1, database, transaction); Console.WriteLine("执行:" + i); }); }
/// <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> public void SyncChangeToBase() { XH_CapitalAccountTable_DeltaInfoDal deltaInfoDal = new XH_CapitalAccountTable_DeltaInfoDal(); var deltaList = deltaInfoDal.GetAllSum(); if (deltaList == null) { return; } if (deltaList.Count == 0) { return; } try { bool isSuccess = false; Database database = DatabaseFactory.CreateDatabase(); XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); using (DbConnection connection = database.CreateConnection()) { connection.Open(); DbTransaction transaction = connection.BeginTransaction(); try { foreach (var deltaInfo in deltaList) { dal.AddUpdate(deltaInfo.CapitalAccountLogo, deltaInfo.AvailableCapitalDelta, deltaInfo.FreezeCapitalTotalDelta, deltaInfo.TodayOutInCapital, deltaInfo.HasDoneProfitLossTotalDelta, database, transaction); } transaction.Commit(); isSuccess = true; } catch (Exception ex) { transaction.Rollback(); LogHelper.WriteError(ex.Message, ex); } } //同步后清除增量表数据 if (isSuccess) { deltaInfoDal.Truncate(); } /*DataManager.ExecuteInTransaction((database, transaction) => * { * foreach (var deltaInfo in deltaList) * { * dal.AddUpdate(deltaInfo.CapitalAccountLogo, * deltaInfo.AvailableCapitalDelta, * deltaInfo.FreezeCapitalTotalDelta, * deltaInfo.TodayOutInCapital, * deltaInfo.HasDoneProfitLossTotalDelta, * database, transaction); * } * * //同步后清除增量表数据 * CleanDeltaTable(database, transaction); * deltaList = null; * });*/ } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }
/// <summary> /// 批量更新 /// </summary> /// <param name="baseList"></param> public void Commit(List <XH_CapitalAccountTableInfo> baseList) { try { bool isSuccess = false; XH_CapitalAccountTableDal dal = new XH_CapitalAccountTableDal(); Database database = DatabaseFactory.CreateDatabase(); using (DbConnection connection = database.CreateConnection()) { connection.Open(); DbTransaction transaction = connection.BeginTransaction(); try { foreach (var data in baseList) { dal.Update(data.CapitalAccountLogo, data.AvailableCapital, data.FreezeCapitalTotal, data.TodayOutInCapital, data.HasDoneProfitLossTotal, database, transaction); } transaction.Commit(); isSuccess = true; } catch (Exception ex) { transaction.Rollback(); LogHelper.WriteError(ex.Message, ex); } } //提交后清除增量表数据 if (isSuccess) { XH_CapitalAccountTable_DeltaInfoDal deltaInfoDal = new XH_CapitalAccountTable_DeltaInfoDal(); deltaInfoDal.Truncate(); } /*DataManager.ExecuteInTransaction((database, transaction) => * { * foreach (var data in baseList) * { * dal.Update(data.CapitalAccountLogo, * data.AvailableCapital, * data.FreezeCapitalTotal, * data.TodayOutInCapital, * data.HasDoneProfitLossTotal, database, * transaction); * } * * //提交后清除增量表数据 * CleanDeltaTable(database, transaction); * });*/ } catch (Exception ex) { LogHelper.WriteError(ex.Message, ex); } }