public int Create(TradeInstanceAdjustmentItem item) { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Create); _dbHelper.AddInParameter(dbCommand, "@SourceInstanceId", System.Data.DbType.Int32, item.SourceInstanceId); _dbHelper.AddInParameter(dbCommand, "@SourceFundCode", System.Data.DbType.String, item.SourceFundCode); _dbHelper.AddInParameter(dbCommand, "@SourcePortfolioCode", System.Data.DbType.String, item.SourcePortfolioCode); _dbHelper.AddInParameter(dbCommand, "@DestinationInstanceId", System.Data.DbType.Int32, item.DestinationInstanceId); _dbHelper.AddInParameter(dbCommand, "@DestinationFundCode", System.Data.DbType.String, item.DestinationFundCode); _dbHelper.AddInParameter(dbCommand, "@DestinationPortfolioCode", System.Data.DbType.String, item.DestinationPortfolioCode); _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, item.SecuCode); _dbHelper.AddInParameter(dbCommand, "@SecuType", System.Data.DbType.Int32, (int)item.SecuType); _dbHelper.AddInParameter(dbCommand, "@PositionType", System.Data.DbType.Int32, (int)item.PositionType); _dbHelper.AddInParameter(dbCommand, "@Price", System.Data.DbType.Double, item.Price); _dbHelper.AddInParameter(dbCommand, "@Amount", System.Data.DbType.Int32, item.Amount); _dbHelper.AddInParameter(dbCommand, "@AdjustType", System.Data.DbType.Int32, (int)item.AdjustType); _dbHelper.AddInParameter(dbCommand, "@Operator", System.Data.DbType.String, item.Operator); _dbHelper.AddInParameter(dbCommand, "@StockHolderId", System.Data.DbType.String, item.StockHolderId); _dbHelper.AddInParameter(dbCommand, "@SeatNo", System.Data.DbType.String, item.SeatNo); _dbHelper.AddInParameter(dbCommand, "@Notes", System.Data.DbType.String, item.Notes); _dbHelper.AddReturnParameter(dbCommand, "@return", System.Data.DbType.Int32); int ret = _dbHelper.ExecuteNonQuery(dbCommand); int id = -1; if (ret > 0) { id = (int)dbCommand.Parameters["@return"].Value; } return(id); }
//Add new record into the table and then add the permission for the user. public int Create(TradeInstanceAdjustmentItem item) { int id = _tradeinstadjustmentdao.Create(item); int finalId = -1; if (id > 0) { int userId = LoginManager.Instance.GetUserId(); var perms = _permissionManager.GetOwnerPermission(); int ret = _permissionManager.GrantPermission(userId, id, ResourceType.TradeInstanceAdjustment, perms); if (ret > 0) { finalId = id; } } return(finalId); }
public List <TradeInstanceAdjustmentItem> GetAll() { var dbCommand = _dbHelper.GetStoredProcCommand(SP_Select); List <TradeInstanceAdjustmentItem> items = new List <TradeInstanceAdjustmentItem>(); var reader = _dbHelper.ExecuteReader(dbCommand); if (reader.HasRows) { while (reader.Read()) { TradeInstanceAdjustmentItem item = new TradeInstanceAdjustmentItem(); item.Id = (int)reader["Id"]; if (reader["CreatedDate"] != null && reader["CreatedDate"] != DBNull.Value) { item.CreateDate = (DateTime)reader["CreatedDate"]; } item.SourceInstanceId = (int)reader["SourceInstanceId"]; item.SourceFundCode = (string)reader["SourceFundCode"]; item.SourcePortfolioCode = (string)reader["SourcePortfolioCode"]; item.DestinationInstanceId = (int)reader["DestinationInstanceId"]; item.DestinationFundCode = (string)reader["DestinationFundCode"]; item.DestinationPortfolioCode = (string)reader["DestinationPortfolioCode"]; item.SecuCode = (string)reader["SecuCode"]; item.SecuType = (SecurityType)reader["SecuType"]; item.PositionType = (PositionType)reader["PositionType"]; item.Price = (double)(decimal)reader["Price"]; item.Amount = (int)reader["Amount"]; item.AdjustType = (AdjustmentType)reader["AdjustType"]; item.Operator = (string)reader["Operator"]; item.StockHolderId = (string)reader["StockHolderId"]; item.SeatNo = (string)reader["SeatNo"]; item.Notes = (string)reader["Notes"]; items.Add(item); } } reader.Close(); _dbHelper.Close(dbCommand); return(items); }
public int Transfer(Model.UI.TradeInstance dest, Model.UI.TradeInstance src, List <SourceHoldingItem> transferItems) { List <TradeInstanceSecurity> srcNewItems = new List <TradeInstanceSecurity>(); List <TradeInstanceSecurity> destNewItems = new List <TradeInstanceSecurity>(); List <TradeInstanceAdjustmentItem> adjustItems = new List <TradeInstanceAdjustmentItem>(); //获取src中所有的持仓 var srcItems = Get(src.InstanceId); //获取dest中所有的持仓 var destItems = Get(dest.InstanceId); //对于src,减去划转部分 //对于dest,加入划转部分 foreach (var transferItem in transferItems) { //对源实例中的证券进行更新 TradeInstanceSecurity srcOutItem = new TradeInstanceSecurity { SecuCode = transferItem.SecuCode, SecuType = transferItem.SecuType, InstanceId = src.InstanceId, }; var srcOldItem = srcItems.Find(p => p.SecuCode.Equals(transferItem.SecuCode) && p.SecuType == transferItem.SecuType); if (srcOldItem != null) { srcOutItem.PositionAmount = srcOldItem.PositionAmount - transferItem.TransferedAmount; srcOutItem.PositionType = srcOldItem.PositionType; srcOutItem.SellToday = srcOldItem.SellToday; srcOutItem.SellBalance = srcOldItem.SellBalance; srcOutItem.DealFee = srcOldItem.DealFee; } else { //TODO: } srcNewItems.Add(srcOutItem); //对目标实例中的证券进行更新 TradeInstanceSecurity destInItem = new TradeInstanceSecurity { SecuCode = transferItem.SecuCode, SecuType = transferItem.SecuType, PositionType = transferItem.PositionType, InstanceId = dest.InstanceId, }; var destOldItem = destItems.Find(p => p.SecuCode.Equals(transferItem.SecuCode) && p.SecuType == transferItem.SecuType); if (destOldItem != null) { destInItem.PositionAmount = destOldItem.PositionAmount + transferItem.TransferedAmount; destInItem.PositionType = destOldItem.PositionType; destInItem.SellToday = destOldItem.SellToday; destInItem.SellBalance = destOldItem.SellBalance; destInItem.DealFee = destOldItem.DealFee; } else { destInItem.PositionAmount = transferItem.TransferedAmount; //TODO: if (transferItem.SecuType == Model.SecurityInfo.SecurityType.Stock) { destInItem.PositionType = PositionType.SpotLong; } else if (transferItem.SecuType == Model.SecurityInfo.SecurityType.Futures) { destInItem.PositionType = PositionType.FuturesShort; } } destNewItems.Add(destInItem); //对调整做记录 TradeInstanceAdjustmentItem adjustItem = new TradeInstanceAdjustmentItem { SourceInstanceId = src.InstanceId, SourcePortfolioCode = src.PortfolioCode, DestinationInstanceId = dest.InstanceId, DestinationPortfolioCode = dest.PortfolioCode, SecuCode = transferItem.SecuCode, SecuType = transferItem.SecuType, PositionType = PositionType.SpotLong, Price = transferItem.TransferedPrice, Amount = transferItem.TransferedAmount, AdjustType = AdjustmentType.Transfer, }; adjustItems.Add(adjustItem); } int result = -1; List <int> idList = _tradeInstanceAdjustBLL.CreateTran(adjustItems); if (idList.Count > 0 && idList.Count == adjustItems.Count) { //更新数据库,指向要更新变化部分即可,通过提交事务 result = _tradeinstsecudao.Transfer(destNewItems, srcNewItems); } return(result); }