Пример #1
0
        /// <summary>
        /// 获取Table集合根据数据源
        /// </summary>
        /// <param name="link"></param>
        /// <returns></returns>
        public IEnumerable <TableModel> GetTables([FromUri] data_source data_source)
        {
            db = DbFactory.GetDbHelper(data_source.TypeCode, data_source.Link);

            var table = db.GetTables(data_source.DbName);

            return(table);
        }
        public IHttpActionResult Getdata_source(long id)
        {
            data_source data_source = db.data_source.Find(id);

            if (data_source == null)
            {
                return(NotFound());
            }

            return(Ok(data_source));
        }
        //insert
        public static void Insert(DbLink dbLink, data_source dataSource)
        {
            string queryAmount = "select count(*) from data_source";
            int    ord_id      = dbLink.GetConnection().QueryFirstOrDefault <int>(queryAmount);

            dataSource.ord_id = ord_id + 1;
            string query =
                string.Format(@"insert into data_source(ds_id, ident, description, ord_id)
                    values(nextval('mir_sequence'), @ident, @description, @ord_id)");

            dbLink.GetConnection().Execute(query, dataSource);
        }
        public IHttpActionResult Deletedata_source(long id)
        {
            data_source data_source = db.data_source.Find(id);

            if (data_source == null)
            {
                return(NotFound());
            }
            data_source.State = (int)DataState.Deleted;
            db.SaveChanges();

            return(Ok(data_source));
        }
        public IHttpActionResult Postdata_source(data_source data_source)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            data_source.CreateTime = DateTime.Now;
            data_source.Creator    = "self";
            data_source.Modifier   = "self";
            data_source.ModifyTime = DateTime.Now;
            data_source.UserId     = 1;
            db.data_source.Add(data_source);

            try
            {
                db.SaveChanges();
                var dbHelper = DbFactory.GetDbHelper(data_source.TypeCode, data_source.Link);

                var nowDate = DateTime.Now;

                var fields = dbHelper.GetFields(data_source.TableName).Select(a => new data_source_fields
                {
                    DataSourceId   = data_source.Id,
                    DataSourceName = data_source.DataSourceName,
                    FieldComment   = a.FieldComment,
                    FieldLength    = a.FieldLength,
                    FieldName      = a.FieldName,
                    FieldType      = a.FieldType,
                    TableName      = a.TableName,
                    UserId         = 1,
                    UserName       = "******",
                });

                db.data_source_fields.AddRange(fields);

                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (data_sourceExists(data_source.Id))
                {
                    return(Conflict());
                }
                else
                {
                    throw;
                }
            }

            return(CreatedAtRoute("DefaultApi", new { id = data_source.Id }, data_source));
        }
        public void TestInsertDataSource()
        {
            var tempConnection = DataBaseLink.Fabricate.CreateConnection(_connection, ConnectionType.Npgsql);

            DataBaseLink.DbLink dbLink     = new DbLink(tempConnection);
            data_source         dataSource = new data_source();

            dataSource.ident       = "CALCULATED";
            dataSource.description = "valid data";

            if (DataSource.FindId(dbLink, dataSource.ident) == null)
            {
                DataSource.Insert(dbLink, dataSource);
            }
        }
        public IHttpActionResult Putdata_source(long id, data_source data_source)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (db.data_source.Any(a => a.DataSourceName == data_source.DataSourceName))
            {
                return(BadRequest(ModelState));
            }

            if (id != data_source.Id)
            {
                return(BadRequest());
            }

            db.Entry(data_source).State = EntityState.Modified;

            try
            {
                var count = db.SaveChanges();

                if (count > 0)
                {
                }
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!data_sourceExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        private void Save(Dictionary <PortfolioPosition, TimeSeries> storage)
        {
            foreach (var x in storage)
            {
                var transaction = _dbLink.GetConnection().BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    // найдем тип финансового инструмента
                    var    finIdent     = x.Key.Ident;
                    var    finType      = x.Key.FinType;
                    string finTypeIdent = _mapping.GetAI(finType);

                    #region финансовый инструмент
                    fin_instrument finInstrument = new fin_instrument()
                    {
                        ident = finIdent,
                        title = finIdent,
                        ft_id = int.Parse(finTypeIdent)
                    };

                    if (FinInstrument.FindId(_dbLink, finInstrument.ident) == null)
                    {
                        FinInstrument.Insert(_dbLink, finInstrument);
                    }

                    finInstrument = FinInstrument.FindId(_dbLink, finInstrument.ident);
                    #endregion

                    #region Data_source
                    data_source dataSource = new data_source()
                    {
                        ident = _providerParams[SCALAR].ToString(),
                    };

                    dataSource = DataSource.FindId(_dbLink, dataSource.ident);
                    #endregion

                    #region fisd_id
                    ffd ffd = new ffd()
                    {
                        ds_id  = dataSource.ds_id,
                        fi_id  = finInstrument.fi_id,
                        fif_id = int.Parse(_mapping.GetAI(x.Value.Attribute))
                    };

                    if (FFD.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.fif_id) == null)
                    {
                        FFD.Insert(_dbLink, ffd);
                    }
                    ffd = FFD.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.fif_id);
                    #endregion

                    #region TimeSeries
                    foreach (var z in x.Value.Series)
                    {
                        fisd_dq fisd_dq = new fisd_dq()
                        {
                            dat     = z.Key,
                            val     = z.Value,
                            fisd_id = ffd.fisd_id
                        };

                        if (FisdDq.FindId(_dbLink, fisd_dq.fisd_id, fisd_dq.dat) == null)
                        {
                            FisdDq.Insert(_dbLink, fisd_dq);
                        }
                        else
                        {
                            FisdDq.Update(_dbLink, fisd_dq);
                        }
                    }
                    #endregion

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }
            }
        }
        private void Save(Dictionary <KeyValuePair <PortfolioPosition, Enum>, ScalarNum> storage)
        {
            foreach (var x in storage)
            {
                var transaction = _dbLink.GetConnection().BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    // найдем тип финансового инструмента
                    var    finIdent     = x.Key.Key.Ident;
                    var    finType      = x.Key.Key.FinType;
                    string finTypeIdent = _mapping.GetAI(finType);

                    #region финансовый инструмент
                    fin_instrument finInstrument = new fin_instrument()
                    {
                        ident = finIdent,
                        title = finIdent,
                        ft_id = int.Parse(finTypeIdent)
                    };

                    if (FinInstrument.FindId(_dbLink, finInstrument.ident) == null)
                    {
                        FinInstrument.Insert(_dbLink, finInstrument);
                    }

                    finInstrument = FinInstrument.FindId(_dbLink, finInstrument.ident);

                    #endregion

                    #region Data_source
                    data_source dataSource = new data_source()
                    {
                        ident = _providerParams[SCALAR].ToString(),
                    };

                    dataSource = DataSource.FindId(_dbLink, dataSource.ident);
                    #endregion

                    #region fisd_id
                    ffd ffd = new ffd()
                    {
                        ds_id  = dataSource.ds_id,
                        fi_id  = finInstrument.fi_id,
                        fif_id = int.Parse(_mapping.GetAI(x.Key.Value))
                    };

                    if (FFD.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.fif_id) == null)
                    {
                        FFD.Insert(_dbLink, ffd);
                    }
                    ffd = FFD.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.fif_id);
                    #endregion

                    fisd_num fisdNum = new fisd_num()
                    {
                        dat_from = x.Value.Dictionary.First().Key,
                        fisd_id  = ffd.fisd_id,
                        val      = x.Value.Dictionary.First().Value
                    };

                    FisdNum.Insert(_dbLink, fisdNum);
                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }
            }
        }
        private void Save(Dictionary <PortfolioPosition, CashFlow> dictionary)
        {
            foreach (var x in dictionary)
            {
                var transaction = _dbLink.GetConnection().BeginTransaction(IsolationLevel.ReadCommitted);
                try
                {
                    var    finIdent     = x.Key.Ident;
                    var    finType      = x.Key.FinType;
                    string finTypeIdent = _mapping.GetAI(finType);

                    #region финансовый инструмент
                    fin_instrument finInstrument = new fin_instrument()
                    {
                        ident = finIdent,
                        title = finIdent,
                        ft_id = int.Parse(finTypeIdent)
                    };

                    if (FinInstrument.FindId(_dbLink, finInstrument.ident) == null)
                    {
                        FinInstrument.Insert(_dbLink, finInstrument);
                    }

                    finInstrument = FinInstrument.FindId(_dbLink, finInstrument.ident);
                    #endregion

                    #region Data_source
                    data_source dataSource = new data_source()
                    {
                        ident = _providerParams[SCALAR].ToString(),
                    };

                    dataSource = DataSource.FindId(_dbLink, dataSource.ident);
                    #endregion

                    #region fcs
                    fcs ffd = new fcs()
                    {
                        ds_id = dataSource.ds_id,
                        fi_id = finInstrument.fi_id,
                        ct_id = int.Parse(_mapping.GetAI(x.Value.Attribute))
                    };

                    if (FCS.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.ct_id) == null)
                    {
                        FCS.Insert(_dbLink, ffd);
                    }
                    ffd = FCS.Find(_dbLink, ffd.fi_id, ffd.ds_id, ffd.ct_id);
                    #endregion

                    #region Денежный поток
                    foreach (var z in x.Value.Values)
                    {
                        cashflow cf = new cashflow()
                        {
                            cf_id     = ffd.cf_id,
                            dat       = z.Key,
                            val       = z.Value,
                            valid_dat = (DateTime)_providerParams[REPORTDATE]
                        };

                        if (Cashflow.FindId(_dbLink, cf.cf_id, cf.dat, cf.valid_dat) == null)
                        {
                            //первое значение, следовательно 01.01.1900 год
                            cf.valid_dat = new DateTime(1900, 01, 01);
                            Cashflow.Insert(_dbLink, cf);
                        }
                        else
                        {
                            Cashflow.Insert(_dbLink, cf);
                        }
                    }
                    #endregion


                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                }
            }
        }