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);
        }
Example #2
0
        //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);
        }
Example #4
0
        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);
        }