Пример #1
0
        /// <summary>
        /// 操作
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public IActionResult OnPostDataForm(Data_Source item)
        {
            var dbConn = AppCommon.GetConnStr(item);

            if (!AppCommon.TestLink(item.Type, dbConn))
            {
                return(new JsonResult(new { success = false, msg = "连接失败" }));
            }

            var info = new WriteReturn();

            using (var db = new DataContext(AppEtl.Db))
            {
                if (IFast.Query <Data_Source>(a => a.Id == item.Id).ToCount(db) == 0)
                {
                    item.Id = Guid.NewGuid().ToString();
                    info    = db.Add(item).writeReturn;
                }
                else
                {
                    info = db.Update <Data_Source>(item, a => a.Id == item.Id).writeReturn;
                }

                if (info.IsSuccess)
                {
                    return(new JsonResult(new { success = true, msg = "操作成功" }));
                }
                else
                {
                    return(new JsonResult(new { success = false, msg = info.Message }));
                }
            }
        }
Пример #2
0
        /// <summary>
        /// ²Ù×÷
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public IActionResult OnPostDicTypeForm(Data_Dic item)
        {
            var info = new WriteReturn();

            using (var db = new DataContext(AppEtl.Db))
            {
                if (IFast.Query <Data_Dic>(a => a.Id == item.Id).ToCount(db) == 0)
                {
                    item.Id = Guid.NewGuid().ToString();
                    info    = db.Add(item).writeReturn;
                }
                else
                {
                    info = db.Update <Data_Dic>(item, a => a.Id == item.Id).writeReturn;
                }

                if (info.IsSuccess)
                {
                    return(new JsonResult(new { success = true, msg = "²Ù×÷³É¹¦" }));
                }
                else
                {
                    return(new JsonResult(new { success = false, msg = info.Message }));
                }
            }
        }
Пример #3
0
        /// <summary>
        /// 执行写操作
        /// </summary>
        public static WriteReturn Write(string name, DbParameter[] param, DataContext db = null, string key = null, bool isOutSql = false)
        {
            key = key == null?MapDb(name) : key;

            var config = db == null?DataConfig.Get(key) : db.config;

            if (config.IsUpdateCache)
            {
                InstanceMap(key);
            }

            if (DbCache.Exists(config.CacheType, name.ToLower()))
            {
                var sql = MapXml.GetMapSql(name, ref param, db, key);
                BaseAop.AopMapBefore(name, sql, param, config, AopType.Map_Write);
                isOutSql = isOutSql ? isOutSql : IsMapLog(name);
                var result = FastWrite.ExecuteSql(sql, param, db, key, isOutSql, false);
                BaseAop.AopMapAfter(name, sql, param, config, AopType.Map_Write, result);
                return(result);
            }
            else
            {
                BaseAop.AopMapBefore(name, "", param, config, AopType.Map_Write);
                var data = new WriteReturn();
                BaseAop.AopMapAfter(name, "", param, config, AopType.Map_Write, data);
                return(data);
            }
        }
Пример #4
0
        /// <summary>
        /// 操作
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public IActionResult OnPostBusinessDetailsForm(Data_Business_Details item)
        {
            var info = new WriteReturn();

            using (var db = new DataContext(AppEtl.Db))
            {
                var table  = IFast.Query <Data_Business>(a => a.Id == item.Id).ToItem <Data_Business>(db);
                var source = IFast.Query <Data_Source>(a => a.Id == item.DataSourceId).ToItem <Data_Source>(db);
                var key    = string.Format(AppEtl.CacheKey.Column, source.Host, item.TableName);
                var colunm = RedisInfo.Get <List <CacheColumn> >(key, AppEtl.CacheDb).Find(a => a.Name == item.ColumnName);

                db.BeginTrans();
                if (IFast.Query <Data_Business_Details>(a => a.FieldId == item.FieldId).ToCount(db) == 0)
                {
                    item.FieldId = Guid.NewGuid().ToStr();
                    info         = IFast.Add(item);
                    if (info.IsSuccess)
                    {
                        info = DataSchema.AddColumn(db, table, item, colunm, source);
                        if (info.IsSuccess)
                        {
                            DataSchema.UpdateColumnComment(db, table, item, colunm, source);
                        }
                    }
                }
                else
                {
                    info = IFast.Update <Data_Business_Details>(item, a => a.FieldId == item.FieldId);
                    if (info.IsSuccess)
                    {
                        info.IsSuccess = DataSchema.UpdateColumn(db, table, item, colunm, source);
                        if (info.IsSuccess)
                        {
                            DataSchema.UpdateColumnComment(db, table, item, colunm, source);
                        }
                    }
                }

                if (info.IsSuccess)
                {
                    db.SubmitTrans();
                    return(new JsonResult(new { success = true, msg = "操作成功" }));
                }
                else
                {
                    db.RollbackTrans();
                    return(new JsonResult(new { success = false, msg = "操作失败" }));
                }
            }
        }
Пример #5
0
        /// <summary>
        /// 操作
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public IActionResult OnPostBusinessForm(Data_Business item)
        {
            var info = new WriteReturn();

            using (var db = new DataContext(AppEtl.Db))
            {
                db.BeginTrans();
                if (IFast.Query <Data_Business>(a => a.Id == item.Id).ToCount(db) == 0)
                {
                    item.Id = Guid.NewGuid().ToString();
                    info    = db.Add(item).writeReturn;
                    if (info.IsSuccess)
                    {
                        info = DataSchema.CreateTable(db, item);
                    }
                }
                else
                {
                    var oldTableName = IFast.Query <Data_Business>(a => a.Id == item.Id, a => new { a.TableName }).ToDic(db).GetValue("TableName").ToStr();
                    info = db.Update <Data_Business>(item, a => a.Id == item.Id).writeReturn;

                    if (info.IsSuccess)
                    {
                        if (oldTableName.ToLower() != item.TableName.ToLower())
                        {
                            DataSchema.DropTable(db, oldTableName);
                            info = DataSchema.CreateTable(db, item);
                        }
                        else
                        {
                            DataSchema.UpdateTableComment(db, item);
                        }
                    }
                }

                if (info.IsSuccess)
                {
                    db.SubmitTrans();
                    return(new JsonResult(new { success = true, msg = "操作成功" }));
                }
                else
                {
                    db.RollbackTrans();
                    return(new JsonResult(new { success = false, msg = info.Message }));
                }
            }
        }
Пример #6
0
    /// <summary>
    /// 创建表
    /// </summary>
    /// <returns></returns>
    public static WriteReturn CreateTable(DataContext db, Data_Business table)
    {
        var result = new WriteReturn();

        if (db.config.DbType.ToLower() == AppEtl.DataDbType.Oracle.ToLower())
        {
            result = db.ExecuteSql(string.Format("create table {0}(EtlAddTime date,Etlkey varchar(255))", table.TableName), null, false).writeReturn;
            if (result.IsSuccess)
            {
                db.ExecuteSql(string.Format("Comment on column {0}.EtlAddTime is '抽取时间'", table.TableName), null, false);
                db.ExecuteSql(string.Format("Comment on column {0}.Etlkey is '关键主键'", table.TableName), null, false);
            }
        }

        if (db.config.DbType.ToLower() == AppEtl.DataDbType.MySql.ToLower())
        {
            result = db.ExecuteSql(string.Format("create table {0}(AddTime date,key varchar(255))", table.TableName), null, false).writeReturn;
            if (result.IsSuccess)
            {
                db.ExecuteSql(string.Format("alter table {0} modify EtlAddTime date comment '抽取时间'", table.TableName), null, false);
                db.ExecuteSql(string.Format("alter table {0} modify Etlkey varchar2(255) comment '关键主键'", table.TableName), null, false);
            }
        }

        if (db.config.DbType.ToLower() == AppEtl.DataDbType.SqlServer.ToLower())
        {
            result = db.ExecuteSql(string.Format("create table {0}(AddTime date,key varchar(255))", table.TableName), null, false).writeReturn;
            if (result.IsSuccess)
            {
                db.ExecuteSql(string.Format("exec sys.sp_addextendedproperty N'MS_Description',N'抽取时间',N'SCHEMA', N'dbo', N'TABLE',N'{0}',N'column',N'EtlAddTime'", table.TableName), null, false);
                db.ExecuteSql(string.Format("exec sys.sp_addextendedproperty N'MS_Description',N'关键主键',N'SCHEMA', N'dbo', N'TABLE',N'{0}',N'column',N'Etlkey'", table.TableName), null, false);
            }
        }

        return(result);
    }
        /// <summary>
        /// 操作
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        public IActionResult OnPostBusinessFormList(Data_Business_List item)
        {
            var result = new WriteReturn();

            result.IsSuccess = true;

            using (var db = new DataContext(AppEtl.Db))
            {
                if (IFast.Query <Data_Source>(a => a.Id == item.DataId).ToCount(db) == 0)
                {
                    return(new JsonResult(new { success = false, msg = "数据源不存在" }));
                }

                var data     = IFast.Query <Data_Source>(a => a.Id == item.DataId).ToItem <Data_Source>(db);
                var tableKey = string.Format(AppEtl.CacheKey.Table, data.Host);
                if (!RedisInfo.Exists(tableKey, AppEtl.CacheDb))
                {
                    DataSchema.InitTable(data, false);
                }

                var tableList = RedisInfo.Get <List <CacheTable> >(tableKey, AppEtl.CacheDb);
                foreach (var table in tableList)
                {
                    var columnKey = string.Format(AppEtl.CacheKey.Column, data.Host, table.Name);
                    if (!RedisInfo.Exists(columnKey, AppEtl.CacheDb))
                    {
                        DataSchema.InitColumn(data, false, table.Name);
                    }

                    var tableModel = BaseMap.CopyModel <Data_Business, Data_Business_List>(item);
                    tableModel.Id        = Guid.NewGuid().ToStr();
                    tableModel.Name      = string.IsNullOrEmpty(table.Comments) ? table.Name : table.Comments;
                    tableModel.TableName = table.Name;

                    if (result.IsSuccess)
                    {
                        result = db.Add(tableModel).writeReturn;
                    }

                    if (result.IsSuccess)
                    {
                        result = DataSchema.CreateTable(db, tableModel);
                    }


                    var columnList = RedisInfo.Get <List <CacheColumn> >(columnKey, AppEtl.CacheDb);
                    var keyName    = columnList.Find(a => a.IsKey == true)?.Name;
                    var keyList    = columnList.FindAll(a => a.IsKey == true);

                    columnList.ForEach(column => {
                        var columnModel          = new Data_Business_Details();
                        columnModel.FieldId      = Guid.NewGuid().ToStr();
                        columnModel.Id           = tableModel.Id;
                        columnModel.DataSourceId = data.Id;
                        columnModel.TableName    = table.Name;
                        columnModel.ColumnName   = column.Name;
                        columnModel.FieldName    = column.Name;
                        columnModel.Key          = keyName;

                        if (result.IsSuccess)
                        {
                            result = db.Add(columnModel).writeReturn;
                        }
                        else
                        {
                            BaseLog.SaveLog(string.Format("tableName:{0},error:", table.Name, result.Message), "Error_CreateTable");
                        }

                        if (result.IsSuccess)
                        {
                            if ((keyList.Count > 1 && keyList.Exists(a => a.Name == columnModel.FieldName)))
                            {
                                result = DataSchema.AddColumn(db, tableModel, columnModel, column, data, false);
                            }
                            else
                            {
                                result = DataSchema.AddColumn(db, tableModel, columnModel, column, data);
                            }
                            if (result.IsSuccess)
                            {
                                DataSchema.UpdateColumnComment(db, tableModel, columnModel, column, data);
                            }
                        }
                        result.IsSuccess = true;
                    });

                    if (keyList.Count > 1)
                    {
                        DataSchema.AddColumnMoreKey(db, tableModel, keyList);
                    }
                }

                if (result.IsSuccess)
                {
                    return(new JsonResult(new { success = true, msg = "操作成功" }));
                }
                else
                {
                    return(new JsonResult(new { success = false, msg = result.Message }));
                }
            }
        }