/// <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> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_SaveData(object sender, RoutedEventArgs e) { using (var db = new DataContext()) { var isUpdateTable = false; var isSuccess = true; db.BeginTrans(); var main = Bussiness.SelectedItem as Data_Business; if (main == null || string.IsNullOrEmpty(main.Name)) { CodeBox.Show("业务名称不能为空", this); return; } if (string.IsNullOrEmpty(main.TableName)) { CodeBox.Show("业务表名不能为空", this); return; } #region 业务 if (string.IsNullOrEmpty(main.Id)) { //默认每天更新 main.UpdateDay = 1; //默认晚上2点更新 main.UpdateTime = 2; //默认更新条数1万 main.UpdateCount = 1; //默认上次更新时间 main.LastUpdateTime = DateTime.Now; //关联主键策略(1=重复删除,0=重复保留,2=重复更新) main.Policy = "1"; //增加业务 main.Id = Guid.NewGuid().ToString(); isSuccess = db.Add(main).writeReturn.IsSuccess; //创建表 if (isSuccess) { isSuccess = DataSchema.CreateTable(db, main); } //表备注 if (isSuccess) { isSuccess = DataSchema.UpdateTableComment(db, main); } } else { //修改业务 if (isSuccess) { var oldTableName = FastRead.Query <Data_Business>(a => a.Id == main.Id, a => new { a.Name }).ToDic(db).GetValue("name").ToString(); isSuccess = db.Update <Data_Business>(main, a => a.Id == main.Id, a => new { a.Name }).writeReturn.IsSuccess; if (oldTableName != main.TableName) { if (DataSchema.IsExistsTable(db, oldTableName)) { isUpdateTable = true; //修改表名 if (isSuccess) { isSuccess = DataSchema.UpdateTableName(db, main, oldTableName); } //修改表备注 if (isSuccess) { isSuccess = DataSchema.UpdateTableComment(db, main); } } else { DataSchema.CreateTable(db, main); } } } } #endregion #region 业务明细 foreach (var temp in BussinessDetails.Items) { var leaf = temp as Data_Business_Details; if (leaf == null) { continue; } if (string.IsNullOrEmpty(leaf.FieldName)) { continue; } //数据源id if (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 1, "DataSourceBox", temp).SelectedItem == null) { continue; } var dataSource = (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 1, "DataSourceBox", temp).SelectedItem as Data_Source); leaf.DataSourceId = dataSource.Id; //表名 if (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 2, "TabelBox", temp).SelectedItem != null) { leaf.TableName = (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 2, "TabelBox", temp).SelectedItem as Cache_Table).Name; } //源列名 var columnInfo = new Cache_Column(); if (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 3, "ColumnBox", temp).SelectedItem != null) { columnInfo = Common.GetTemplateColumn <ComboBox>(BussinessDetails, 3, "ColumnBox", temp).SelectedItem as Cache_Column; leaf.ColumnName = columnInfo.Name; } //主键 if (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 4, "KeyBox", temp).SelectedItem != null) { columnInfo = Common.GetTemplateColumn <ComboBox>(BussinessDetails, 4, "KeyBox", temp).SelectedItem as Cache_Column; leaf.Key = columnInfo.Name; } //排序 if (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 5, "OrderByBox", temp).SelectedItem != null) { columnInfo = Common.GetTemplateColumn <ComboBox>(BussinessDetails, 5, "OrderByBox", temp).SelectedItem as Cache_Column; leaf.OrderBy = columnInfo.Name; } //字典 if (Common.GetTemplateColumn <ComboBox>(BussinessDetails, 6, "DicBox", temp).SelectedItem != null) { var dic = Common.GetTemplateColumn <ComboBox>(BussinessDetails, 6, "DicBox", temp).SelectedItem as Data_Dic; if (dic != null && !string.IsNullOrEmpty(dic.Id)) { leaf.Dic = dic.Id; } } //sql leaf.Sql = (temp as Data_Business_Details).Sql; if (string.IsNullOrEmpty(leaf.FieldId)) { leaf.FieldId = Guid.NewGuid().ToString(); leaf.Id = main.Id; //增加业务明细 if (isSuccess) { isSuccess = db.Add(leaf).writeReturn.IsSuccess; } //增加列 columnInfo = Common.GetTemplateColumn <ComboBox>(BussinessDetails, 3, "ColumnBox", temp).SelectedItem as Cache_Column; if (isSuccess) { isSuccess = DataSchema.AddColumn(db, main, leaf, columnInfo, dataSource); } //修改备注 if (isSuccess) { isSuccess = DataSchema.UpdateColumnComment(db, main, leaf, columnInfo, dataSource); } } else { //修改业务明细 if (isSuccess) { isSuccess = db.Update <Data_Business_Details>(leaf, a => a.FieldId == leaf.FieldId, a => new { a.FieldName, a.DataSourceId, a.ColumnName, a.Key, a.OrderBy, a.TableName, a.Dic, a.Sql }).writeReturn.IsSuccess; } //列增加修改 if (isSuccess) { if (DataSchema.IsExistsColumn(db, main.Name, leaf.FieldName)) { isSuccess = DataSchema.UpdateColumn(db, main, leaf, columnInfo, dataSource); } else { isSuccess = DataSchema.AddColumn(db, main, leaf, columnInfo, dataSource); } } } } #endregion if (isSuccess) { if (isUpdateTable) { Bussiness.ItemsSource = AppCache.GetAllBusiness; Common.UpdateWindow(); } db.SubmitTrans(); CodeBox.Show("保存业务成功", this); } else { db.RollbackTrans(); CodeBox.Show("保存业务失败", this); } } }
/// <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 })); } } }