/// <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 })); } } }
/// <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 })); } } }
/// <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); } }
/// <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 = "操作失败" })); } } }
/// <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 })); } } }
/// <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 })); } } }