예제 #1
0
        public List <TemplateStock> Get(int templateId)
        {
            List <TemplateStock> stockTemplates = new List <TemplateStock>();

            if (templateId < 1)
            {
                return(stockTemplates);
            }

            var dbCommand = _dbHelper.GetStoredProcCommand(SP_Get);

            _dbHelper.AddInParameter(dbCommand, "@TemplateId", System.Data.DbType.Int32, templateId);
            var reader = _dbHelper.ExecuteReader(dbCommand);

            if (reader.HasRows)
            {
                while (reader.Read())
                {
                    TemplateStock item = new TemplateStock();
                    item.TemplateNo      = (int)reader["TemplateId"];
                    item.SecuCode        = (string)reader["SecuCode"];
                    item.Amount          = (int)reader["Amount"];
                    item.MarketCap       = (double)(decimal)reader["MarketCap"];
                    item.MarketCapWeight = (double)(decimal)reader["MarketCapOpt"];
                    item.SettingWeight   = (double)(decimal)reader["SettingWeight"];

                    stockTemplates.Add(item);
                }
            }
            reader.Close();
            _dbHelper.Close(dbCommand);

            return(stockTemplates);
        }
        private bool Validate(TemplateStock stock)
        {
            if (string.IsNullOrEmpty(stock.SecuCode))
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
        private bool Form_LoadData(object sender, object data)
        {
            if (data != null && data is TemplateStock)
            {
                TemplateStock stock = data as TemplateStock;
                _templateId = stock.TemplateNo;
                InitControlData(stock);
            }

            return(true);
        }
예제 #4
0
        private void InitControlData(TemplateStock stock)
        {
            AutoItem autoItem = new AutoItem
            {
                Id   = stock.SecuCode,
                Name = stock.SecuName
            };

            acSecurity.SetCurrentItem(autoItem);

            tbAmount.Text        = string.Format("{0}", stock.Amount);
            tbSettingWeight.Text = string.Format("{0}", stock.SettingWeight);
        }
예제 #5
0
        private bool Validate(TemplateStock stock)
        {
            if (string.IsNullOrEmpty(stock.SecuCode))
            {
                MessageDialog.Error(this, msgSecuCodeNoEmpty);
                return(false);
            }

            if (stock.SettingWeight < -0.00001 || stock.SettingWeight > 100.0001)
            {
                MessageDialog.Error(this, msgWeightError);
                return(false);
            }

            return(true);
        }
        private void Button_Confirm_Click(object sender, EventArgs e)
        {
            TemplateStock stock = GetDialogData();

            if (Validate(stock))
            {
                OnSave(this, stock);
                DialogResult = System.Windows.Forms.DialogResult.OK;
            }
            else
            {
                //TODO: make the error message
                //DialogResult = System.Windows.Forms.DialogResult.No;
                MessageDialog.Error(this, msgSecuCodeNoEmpty);
            }
        }
예제 #7
0
        private List <TemplateStock> GenerateData(TSGrid hsGrid)
        {
            List <TemplateStock> tempStocks = new List <TemplateStock>();
            TemplateStock        item1      = new TemplateStock
            {
                TemplateNo      = 1,
                SecuCode        = "000001",
                SecuName        = "中国平安",
                Amount          = 10200,
                Exchange        = "深圳交易所",
                MarketCap       = 652121.24,
                MarketCapWeight = 20.25,
                SettingWeight   = 20.0
            };

            tempStocks.Add(item1);

            TemplateStock item2 = new TemplateStock
            {
                TemplateNo      = 1,
                SecuCode        = "000002",
                SecuName        = "万科A",
                Amount          = 7500,
                Exchange        = "深圳交易所",
                MarketCap       = 252102.74,
                MarketCapWeight = 12.25,
                SettingWeight   = 13.0
            };

            tempStocks.Add(item2);

            TemplateStock item3 = new TemplateStock
            {
                TemplateNo      = 1,
                SecuCode        = "600519",
                SecuName        = "贵州茅台",
                Amount          = 12100,
                Exchange        = "上海交易所",
                MarketCap       = 4200125.02,
                MarketCapWeight = 30.31,
                SettingWeight   = 30.0
            };

            tempStocks.Add(item3);

            return(tempStocks);
        }
예제 #8
0
        private void ToolStripButton_ModifyStock_Click(object sender, EventArgs e)
        {
            List <int> selectIndex = TSDataGridViewHelper.GetSelectRowIndex(secuGridView);

            if (selectIndex.Count == 0)
            {
                MessageDialog.Warn(this, msgSecurityModifySelect);
                return;
            }

            if (selectIndex.Count > 1)
            {
                MessageDialog.Warn(this, msgSecurityModifyOnlyOnce);
                return;
            }

            int rowIndex = selectIndex[0];

            if (rowIndex < 0 || rowIndex > _spotDataSource.Count)
            {
                MessageDialog.Warn(this, msgInvalidSelect);
                return;
            }

            TemplateStock stock = _spotDataSource[rowIndex];

            PortfolioSecurityDialog psDialog = new PortfolioSecurityDialog();

            psDialog.OnLoadControl(psDialog, DialogType.Modify);
            psDialog.OnLoadData(psDialog, stock);
            psDialog.SaveData += new FormLoadHandler(Dialog_SpotSecu_SaveData);
            psDialog.ShowDialog();
            if (psDialog.DialogResult == System.Windows.Forms.DialogResult.OK)
            {
                psDialog.Close();
                psDialog.Dispose();
            }
            else
            {
                psDialog.Close();
                psDialog.Dispose();
            }
        }
예제 #9
0
        private void button1_Click(object sender, EventArgs e)
        {
            TemplateStock item = new TemplateStock
            {
                TemplateNo      = 1,
                SecuCode        = "600207",
                SecuName        = "安彩高科",
                Amount          = 12100,
                Exchange        = "上海交易所",
                MarketCap       = 4200125.02,
                MarketCapWeight = 30.31,
                SettingWeight   = 30.0
            };

            _tempStocks.Add(item);

            List <int> selectIndex = TSDataGridViewHelper.GetSelectRowIndex(this.tsDataGridView1);

            Console.WriteLine(selectIndex);
        }
예제 #10
0
        private TemplateStock GetDialogData()
        {
            TemplateStock stock = new TemplateStock
            {
                TemplateNo = _templateId
            };

            var autoItem = acSecurity.GetCurrentItem();

            stock.SecuCode = autoItem.Id;
            stock.SecuName = autoItem.Name;

            if (rdbAmount.Checked && !string.IsNullOrEmpty(tbAmount.Text))
            {
                int temp = -1;
                if (int.TryParse(tbAmount.Text, out temp))
                {
                    if (temp > 0)
                    {
                        temp = AmountRoundUtil.Round(temp);
                    }
                    else
                    {
                        temp = 0;
                    }

                    stock.Amount = temp;
                }
            }

            if (rdbPercent.Checked && !string.IsNullOrEmpty(tbSettingWeight.Text))
            {
                double temp = 0.0f;
                if (double.TryParse(tbSettingWeight.Text, out temp))
                {
                    stock.SettingWeight = temp;
                }
            }

            return(stock);
        }
예제 #11
0
        public string Update(TemplateStock tempStock)
        {
            var dbCommand = _dbHelper.GetStoredProcCommand(SP_Modify);

            _dbHelper.AddInParameter(dbCommand, "@TemplateId", System.Data.DbType.Int32, tempStock.TemplateNo);
            _dbHelper.AddInParameter(dbCommand, "@SecuCode", System.Data.DbType.String, tempStock.SecuCode);
            _dbHelper.AddInParameter(dbCommand, "@Amount", System.Data.DbType.Int32, tempStock.Amount);
            _dbHelper.AddInParameter(dbCommand, "@MarketCap", System.Data.DbType.Decimal, tempStock.MarketCap);
            _dbHelper.AddInParameter(dbCommand, "@MarketCapOpt", System.Data.DbType.Decimal, tempStock.MarketCapWeight);
            _dbHelper.AddInParameter(dbCommand, "@SettingWeight", System.Data.DbType.Decimal, tempStock.SettingWeight);

            _dbHelper.AddOutParameter(dbCommand, "@ReturnValue", System.Data.DbType.String, 20);

            string newid = string.Empty;
            int    ret   = _dbHelper.ExecuteNonQuery(dbCommand);

            if (ret > 0)
            {
                newid = (string)dbCommand.Parameters["@ReturnValue"].Value;
            }
            return(newid);
        }
예제 #12
0
        private void ToolStripButton_AddStock_Click(object sender, EventArgs e)
        {
            if (tempGridView.CurrentRow == null)
            {
                MessageDialog.Warn(this, msgAddTempSelect);
                return;
            }

            int rowIndex = tempGridView.CurrentRow.Index;

            if (rowIndex < 0 || rowIndex > _tempDataSource.Count)
            {
                MessageDialog.Warn(this, msgInvalidSelect);
                return;
            }

            TemplateStock stock = new TemplateStock
            {
                TemplateNo = _tempDataSource[rowIndex].TemplateId
            };

            PortfolioSecurityDialog psDialog = new PortfolioSecurityDialog();

            psDialog.OnLoadControl(psDialog, DialogType.New);
            psDialog.OnLoadData(psDialog, stock);
            psDialog.SaveData += new FormSaveHandler(Dialog_SpotSecu_SaveData);
            psDialog.ShowDialog();
            if (psDialog.DialogResult == System.Windows.Forms.DialogResult.OK)
            {
                psDialog.Close();
                psDialog.Dispose();
            }
            else
            {
                psDialog.Close();
                psDialog.Dispose();
            }
        }
예제 #13
0
        private void ToolStripButton_ModifyStock_Click(object sender, EventArgs e)
        {
            var selectedStocks = _spotDataSource.Where(p => p.Selection).ToList();

            //List<int> selectIndex = TSDataGridViewHelper.GetSelectRowIndex(secuGridView);
            if (selectedStocks == null || selectedStocks.Count == 0)
            {
                MessageDialog.Warn(this, msgSecurityModifySelect);
                return;
            }

            if (selectedStocks.Count > 1)
            {
                MessageDialog.Warn(this, msgSecurityModifyOnlyOnce);
                return;
            }

            TemplateStock stock = selectedStocks[0];

            PortfolioSecurityDialog psDialog = new PortfolioSecurityDialog();

            psDialog.OnLoadControl(psDialog, DialogType.Modify);
            psDialog.OnLoadData(psDialog, stock);
            psDialog.SaveData += new FormSaveHandler(Dialog_SpotSecu_SaveData);
            psDialog.ShowDialog();
            if (psDialog.DialogResult == System.Windows.Forms.DialogResult.OK)
            {
                psDialog.Close();
                psDialog.Dispose();
            }
            else
            {
                psDialog.Close();
                psDialog.Dispose();
            }
        }
예제 #14
0
        private bool Dialog_SpotSecu_SaveData(object sender, object data)
        {
            bool ret = false;

            if (sender == null || data == null)
            {
                throw new Exception("Fail to get the setting from dialog");
            }

            PortfolioSecurityDialog dialog = sender as PortfolioSecurityDialog;

            if (dialog == null)
            {
                return(ret);
            }

            if (data is TemplateStock)
            {
                TemplateStock stock = data as TemplateStock;
                switch (dialog.DialogType)
                {
                case DialogType.New:
                {
                    TemplateStock findStock = _spotDataSource.SingleOrDefault(p => p.SecuCode.Equals(stock.SecuCode));
                    if (findStock != null)
                    {
                        ret = false;
                        MessageDialog.Warn(this, msgCannotAddSameSecurity);
                    }
                    else
                    {
                        _spotDataSource.Add(stock);
                        ret = true;
                    }
                }
                break;

                case DialogType.Modify:
                {
                    int findIndex = _spotDataSource.ToList().FindIndex(p => p.SecuCode.Equals(stock.SecuCode));
                    if (findIndex >= 0 && findIndex < _spotDataSource.Count)
                    {
                        ret = true;
                        _spotDataSource[findIndex] = stock;
                    }
                }
                break;

                default:
                    break;
                }

                if (ret)
                {
                    var template = _tempDataSource.Single(p => p.TemplateId == stock.TemplateNo);
                    CalculateAmount(template);

                    SwitchTemplateStockSave(true);

                    this.secuGridView.Invalidate();
                }
            }

            return(ret);
        }
예제 #15
0
        private List <TemplateStock> ExcelToGrid(Model.Data.DataTable excelData)
        {
            List <TemplateStock> stockList = new List <TemplateStock>();
            var template = GetSelectTemplate();

            if (template == null)
            {
                return(stockList);
            }

            //用于获取二维表表头名字与Excel中表头进行匹配,获取Excel DataTable中列的位置
            TSGrid hsGrid      = _gridConfig.GetGid(GridStock);
            var    gridColumns = hsGrid.Columns;

            //标签与属性名映射表
            var attFieldMap = GridViewBindingHelper.GetPropertyBinding(typeof(TemplateStock));

            //实体类标签名与Excel DataTable DataRow.Columns中列索引映射表
            Dictionary <string, int> fieldNameColumnIndexMap = new Dictionary <string, int>();

            for (int i = 0, count = gridColumns.Count; i < count; i++)
            {
                var    column   = gridColumns[i];
                string origtext = column.Text;
                string text     = origtext;
                if (text.Contains("(%)"))
                {
                    text = text.Replace("(%)", string.Empty);
                }

                if (excelData.ColumnIndex.ContainsKey(origtext))
                {
                    if (!fieldNameColumnIndexMap.ContainsKey(column.Name))
                    {
                        fieldNameColumnIndexMap.Add(column.Name, excelData.ColumnIndex[origtext]);
                    }
                }
                else if (excelData.ColumnIndex.ContainsKey(text))
                {
                    if (!fieldNameColumnIndexMap.ContainsKey(column.Name))
                    {
                        fieldNameColumnIndexMap.Add(column.Name, excelData.ColumnIndex[text]);
                    }
                }
            }

            foreach (var row in excelData.Rows)
            {
                TemplateStock stock = new TemplateStock();
                stock.TemplateNo = template.TemplateId;

                foreach (var kv in fieldNameColumnIndexMap)
                {
                    if (!attFieldMap.ContainsKey(kv.Key) || !fieldNameColumnIndexMap.ContainsKey(kv.Key))
                    {
                        continue;
                    }

                    string fieldName = attFieldMap[kv.Key];
                    int    valIndex  = fieldNameColumnIndexMap[kv.Key];

                    var field = stock.GetType().GetProperty(fieldName);
                    if (field == null || !field.CanWrite)
                    {
                        continue;
                    }

                    DataValueType valType    = DataValueType.String;
                    var           gridColomn = gridColumns.Find(p => p.Name.Equals(kv.Key));
                    if (gridColomn != null)
                    {
                        valType = gridColomn.ValueType;
                    }

                    var val = row.Columns[valIndex];
                    if (val != null)
                    {
                        switch (val.Type)
                        {
                        case DataValueType.Int:
                            field.SetValue(stock, val.GetInt());
                            break;

                        case DataValueType.Float:
                            field.SetValue(stock, val.GetDouble());
                            break;

                        case DataValueType.String:
                            if (valType == DataValueType.Int)
                            {
                                field.SetValue(stock, val.GetInt());
                            }
                            else if (valType == DataValueType.Float)
                            {
                                field.SetValue(stock, val.GetDouble());
                            }
                            else
                            {
                                field.SetValue(stock, val.GetStr());
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                    }
                }

                if (!string.IsNullOrEmpty(stock.SecuCode))
                {
                    var secuInfo = _securityInfoList.Find(p => p.SecuCode.Equals(stock.SecuCode) && p.SecuType == SecurityType.Stock);
                    if (secuInfo != null)
                    {
                        stock.SecuName = secuInfo.SecuName;
                        stock.Exchange = secuInfo.ExchangeCode;
                    }
                }

                stockList.Add(stock);
            }

            return(stockList);
        }