/// <summary> /// 获取持仓内存表,如果内存中不存在,那么再到数据库查找 /// </summary> /// <param name="accountHoldLogoId">持仓id</param> /// <returns></returns> public static XHHoldMemoryTable GetHoldMemoryTable(int accountHoldLogoId) { XHHoldMemoryTable holdMemory = null; try { holdMemory = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(accountHoldLogoId); //如果持仓为空,那么先从数据库加载,看是不是内存表没有加载 if (holdMemory == null) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); var hold = dal.GetModel(accountHoldLogoId); //如果数据库有,那么直接加载到内存表中 if (hold != null) { MemoryDataManager.XHHoldMemoryList.AddXHAccountHoldTableToMemory(hold); } else { //如果数据库也没有,那么代表无持仓 return(null); } holdMemory = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(accountHoldLogoId); } } catch (Exception ex) { LogHelper.WriteError("XHCommonLogic.GetHoldMemoryTable-" + ex.Message, ex); } return(holdMemory); }
/// <summary> /// 根据股票代码获取全部的持仓 /// </summary> /// <param name="code">股票代码</param> /// <returns>返回对应的持仓</returns> private static List <XH_AccountHoldTableInfo> GetAccountHoldListByCode(string code) { if (String.IsNullOrEmpty(code)) { return(null); } string where = string.Format("Code = '{0}'", code); XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); return(dal.GetListArray(where)); // return DataRepository.XhAccountHoldTableProvider.Find(where); }
private static List <XH_AccountHoldTableInfo> GetAccountHoldList(string userID, int currencyType, string code) { if (String.IsNullOrEmpty(userID)) { return(null); } string where = string.Format( "UserAccountDistributeLogo = '{0}' AND CurrencyTypeId = '{1}' AND Code = '{2}'", userID, currencyType, code); XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); return(dal.GetListArray(where)); //return DataRepository.XhAccountHoldTableProvider.Find(where); }
/// <summary> /// 插入持仓记录 /// </summary> /// <param name="baseTable"></param> /// <returns></returns> public bool InsertBaseTable(XH_AccountHoldTableInfo baseTable) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); var hold = dal.GetXhAccountHoldTable(baseTable.UserAccountDistributeLogo, baseTable.Code, baseTable.CurrencyTypeId); if (hold != null) { return(false); } int id = dal.Add(baseTable); baseTable.AccountHoldLogoId = id; return(true); }
/// <summary> /// 获取持仓内存表,如果内存中不存在,那么再到数据库查找 /// </summary> /// <param name="holdAccount">持仓账户</param> /// <param name="code">代码</param> /// <param name="tradeCurrencyType">币种</param> /// <returns>内存表</returns> public static XHHoldMemoryTable GetHoldMemoryTable(string holdAccount, string code, int tradeCurrencyType) { XHHoldMemoryTable holdMemory = null; try { holdMemory = MemoryDataManager.XHHoldMemoryList.GetByHoldAccountAndCurrencyType(holdAccount, code, tradeCurrencyType); //holdMemory = MemoryDataManager.XHHoldMemoryList.GetByAccountHoldLogoId(HoldingAccountId); //如果持仓为空,那么先从数据库加载,看是不是内存表没有加载 if (holdMemory == null) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); var hold = dal.GetXhAccountHoldTable(holdAccount, code, tradeCurrencyType); //如果数据库有,那么直接加载到内存表中 if (hold != null) { MemoryDataManager.XHHoldMemoryList.AddXHAccountHoldTableToMemory(hold); } else { //如果数据库也没有,那么代表无持仓 return(null); } holdMemory = MemoryDataManager.XHHoldMemoryList.GetByHoldAccountAndCurrencyType(holdAccount, code, tradeCurrencyType); } } catch (Exception ex) { LogHelper.WriteError("XHCommonLogic.GetHoldMemoryTable-" + ex.Message, ex); } return(holdMemory); }
/// <summary> /// 更新过户记录 /// </summary> /// <param name="tm">TransactionManager</param> /// <param name="cash">分红信息</param> /// <param name="tables">登记列表</param> private static bool UpdateStockCut(ReckoningTransaction tm, List <XH_MelonCutRegisterTableInfo> tables) { #region old code 李健华 2010-06-11 改为因为在每天开市时处理那么生成为当日委托我成交 //List<XH_AccountHoldTableInfo> accountHoldList = new List<XH_AccountHoldTableInfo>(); //List<XH_HistoryTradeTableInfo> historyTradeList = new List<XH_HistoryTradeTableInfo>(); ////add 2010-1-15 因为数据库表有的成交记录是根据委托编号有外键关系,所以这里要生成委托记录 //List<XH_HistoryEntrustTableInfo> historyEntrustList = new List<XH_HistoryEntrustTableInfo>(); ////======== //foreach (XH_MelonCutRegisterTableInfo registerTable in tables) //{ // //更新持仓表 // List<XH_AccountHoldTableInfo> accountHoldTables = GetAccountHoldList( // registerTable.UserAccountDistributeLogo, // registerTable.TradeCurrencyType, registerTable.Code); // if (Utils.IsNullOrEmpty(accountHoldTables)) // continue; // //过户的量 // decimal num = registerTable.RegisterAmount; // //四舍五入 // num = Math.Round(num); // int intNum = decimal.ToInt32(num); // XH_AccountHoldTableInfo accountTable = accountHoldTables[0]; // SetAccountTable(accountTable, intNum); // accountHoldList.Add(accountTable); // //更新委托记录表 // XH_HistoryEntrustTableInfo historyEntrustTable = GetHistoryEntrustTable(registerTable, intNum); // historyEntrustList.Add(historyEntrustTable); // //更新历史成交表 // XH_HistoryTradeTableInfo historyTradeTable = GetHistoryTradeTable(registerTable, intNum); // historyTradeTable.EntrustNumber = historyEntrustTable.EntrustNumber; // historyTradeTable.CapitalAccount = historyEntrustTable.CapitalAccount; // historyTradeList.Add(historyTradeTable); // string format = "MelonCutService.UpdateStockCut进行股票分红[商品代码={0},持仓帐号={1},分红金额={2}]"; // string desc = string.Format(format, registerTable.Code, registerTable.UserAccountDistributeLogo, num); // LogHelper.WriteDebug(desc); //} //XH_AccountHoldTableDal xh_AccountHoldTableDal = new XH_AccountHoldTableDal(); //if (accountHoldList.Count > 0) //{ // foreach (var holdTableInfo in accountHoldList) // { // xh_AccountHoldTableDal.Update(holdTableInfo, tm.Database, tm.Transaction); // } //} ////先添加委托记录 //XH_HistoryEntrustTableDal xh_HistoryEntrustTableDal = new XH_HistoryEntrustTableDal(); //if (historyEntrustList.Count > 0) //{ // foreach (XH_HistoryEntrustTableInfo item in historyEntrustList) // { // xh_HistoryEntrustTableDal.Add(item, tm.Database, tm.Transaction); // } //} ////添加成交记录 ////DataRepository.XhAccountHoldTableProvider.Update(tm, accountHoldList); ////DataRepository.XhHistoryTradeTableProvider.BulkInsert(historyTradeList); //XH_HistoryTradeTableDal xh_HistoryTradeTableDal = new XH_HistoryTradeTableDal(); //if (historyTradeList.Count > 0) //{ // foreach (XH_HistoryTradeTableInfo historyTradeTable in historyTradeList) // { // //DataRepository.XhHistoryTradeTableProvider.Insert(tm, historyTradeTable); // xh_HistoryTradeTableDal.Add(historyTradeTable, tm.Database, tm.Transaction); // } //} ////删除对应的登记记录 ////DataRepository.XhMelonCutRegisterTableProvider.Delete(tm, tables); //XH_MelonCutRegisterTableDal xh_MelonCutRegisterTableDal = new XH_MelonCutRegisterTableDal(); //if (tables.Count > 0) //{ // foreach (var data in tables) // { // xh_MelonCutRegisterTableDal.Delete(data, tm.Database, tm.Transaction); // } //} #endregion #region new code 李健华 2010-06-11 改为因为在每天开市时处理那么生成为当日委托我成交 bool issuc = true; try { List <XH_AccountHoldTableInfo> accountHoldList = new List <XH_AccountHoldTableInfo>(); List <XH_TodayTradeTableInfo> todayTradeList = new List <XH_TodayTradeTableInfo>(); //add 2010-1-15 因为数据库表有的成交记录是根据委托编号有外键关系,所以这里要生成委托记录 List <XH_TodayEntrustTableInfo> todayEntrustList = new List <XH_TodayEntrustTableInfo>(); UA_UserAccountAllocationTableDal dal = new UA_UserAccountAllocationTableDal(); //======== foreach (XH_MelonCutRegisterTableInfo registerTable in tables) { //更新持仓表 List <XH_AccountHoldTableInfo> accountHoldTables = GetAccountHoldList(registerTable.UserAccountDistributeLogo, registerTable.TradeCurrencyType, registerTable.Code); if (Utils.IsNullOrEmpty(accountHoldTables)) { continue; } //过户的量 decimal num = registerTable.RegisterAmount; //四舍五入 num = Math.Round(num); int intNum = decimal.ToInt32(num); XH_AccountHoldTableInfo accountTable = accountHoldTables[0]; SetAccountTable(accountTable, intNum); accountHoldList.Add(accountTable); //更新委托记录表 XH_TodayEntrustTableInfo todayEntrustTable = GetHistoryEntrustTable(registerTable, intNum); todayEntrustList.Add(todayEntrustTable); //更新历史成交表 XH_TodayTradeTableInfo todayTradeTable = GetTodayTradeTable(registerTable, intNum); todayTradeTable.EntrustNumber = todayEntrustTable.EntrustNumber; todayTradeTable.CapitalAccount = todayEntrustTable.CapitalAccount; todayTradeList.Add(todayTradeTable); UA_UserAccountAllocationTableInfo userModel = dal.GetModel(registerTable.UserAccountDistributeLogo); #region 回推相关成交记录信息 ReckonEndObject <XH_TodayEntrustTableInfo, XH_TodayTradeTableInfo> reckonEndObject = new ReckonEndObject <XH_TodayEntrustTableInfo, XH_TodayTradeTableInfo>(); reckonEndObject.IsSuccess = true; reckonEndObject.EntrustTable = todayEntrustTable; List <XH_TodayTradeTableInfo> tradeModels = new List <XH_TodayTradeTableInfo>(); tradeModels.Add(todayTradeTable); reckonEndObject.TradeTableList = tradeModels; if (userModel != null) { reckonEndObject.TradeID = userModel.UserID; } reckonEndObject.Message = "分红委托成交"; CounterOrderService.Instance.AcceptStockDealOrder(reckonEndObject); #endregion string format = "MelonCutService.UpdateStockCut进行股票分红[商品代码={0},持仓帐号={1},分红金额={2}]"; string desc = string.Format(format, registerTable.Code, registerTable.UserAccountDistributeLogo, num); LogHelper.WriteDebug(desc); } XH_AccountHoldTableDal xh_AccountHoldTableDal = new XH_AccountHoldTableDal(); if (accountHoldList.Count > 0) { foreach (var holdTableInfo in accountHoldList) { xh_AccountHoldTableDal.Update(holdTableInfo, tm.Database, tm.Transaction); } } //先添加委托记录 XH_TodayEntrustTableDal xh_HistoryEntrustTableDal = new XH_TodayEntrustTableDal(); if (todayEntrustList.Count > 0) { foreach (XH_TodayEntrustTableInfo item in todayEntrustList) { xh_HistoryEntrustTableDal.Add(item, tm.Database, tm.Transaction); } } //添加成交记录 //DataRepository.XhAccountHoldTableProvider.Update(tm, accountHoldList); //DataRepository.XhHistoryTradeTableProvider.BulkInsert(historyTradeList); XH_TodayTradeTableDal xh_todayTradeTableDal = new XH_TodayTradeTableDal(); if (todayTradeList.Count > 0) { foreach (XH_TodayTradeTableInfo todayTradeTable in todayTradeList) { //DataRepository.XhHistoryTradeTableProvider.Insert(tm, historyTradeTable); xh_todayTradeTableDal.Add(todayTradeTable, tm); } } //删除对应的登记记录 //DataRepository.XhMelonCutRegisterTableProvider.Delete(tm, tables); XH_MelonCutRegisterTableDal xh_MelonCutRegisterTableDal = new XH_MelonCutRegisterTableDal(); if (tables.Count > 0) { foreach (var data in tables) { xh_MelonCutRegisterTableDal.Delete(data, tm.Database, tm.Transaction); } } } catch (Exception ex) { LogHelper.WriteError("过户分红异常" + ex.Message, ex); issuc = false; } return(issuc); #endregion }
/// <summary> /// 持久化持仓变化 /// </summary> /// <param name="delta"></param> public void PersistChange(XH_AccountHoldTableInfo_Delta delta) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); dal.AddUpdate(delta); }
/// <summary> /// 删除持仓记录 /// </summary> /// <param name="baseTable"></param> public void DeleteBaseTable(XH_AccountHoldTableInfo baseTable) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); dal.Delete(baseTable.AccountHoldLogoId); }
/// <summary> /// 获取指定Id持仓 /// </summary> /// <param name="k"></param> /// <returns></returns> public XH_AccountHoldTableInfo GetBaseTable(int k) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); return(dal.GetModel(k)); }
/// <summary> /// 获取全部持仓 /// </summary> /// <returns></returns> public List <XH_AccountHoldTableInfo> GetAllBaseTable() { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); return(dal.GetAllListArray()); }
/// <summary> /// 带事务更新 /// </summary> /// <param name="delta"></param> /// <param name="db"></param> /// <param name="transaction"></param> public void PersistChangeWithTransaction(XH_AccountHoldTableInfo_Delta delta, Database db, DbTransaction transaction) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); dal.AddUpdate(delta, db, transaction); }
/// <summary> /// 带事务更新持仓 /// </summary> /// <param name="baseTable"></param> /// <param name="db"></param> /// <param name="transaction"></param> public void PersistBase(XH_AccountHoldTableInfo baseTable, Database db, DbTransaction transaction) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); dal.Update(baseTable, db, transaction); }
/// <summary> /// 更新持仓 /// </summary> /// <param name="baseTable"></param> public void PersistBase(XH_AccountHoldTableInfo baseTable) { XH_AccountHoldTableDal dal = new XH_AccountHoldTableDal(); dal.Update(baseTable); }