public JsonResult ImportTable(string connName) { MetaFO metaFO = FormulaHelper.CreateFO <MetaFO>(); metaFO.ImportTable(connName); return(Json("")); }
public JsonResult ImportField(string tableID) { MetaFO metaFO = FormulaHelper.CreateFO <MetaFO>(); metaFO.ImportField(tableID); return(Json("")); }
public JsonResult ReleaseForm(string id) { var entity = entities.Set <S_UI_Form>().SingleOrDefault(c => c.ID == id); var dic = JsonHelper.ToObject(!string.IsNullOrEmpty(entity.ReleasedData) ? entity.ReleasedData : "{}"); var items = JsonHelper.ToObject <List <FormItem> >(entity.Items ?? "[]"); StringBuilder sb = new StringBuilder(@" declare @tmp int declare @existOldField int declare @existField int "); if (dic.Count() == 0 || dic["ConnName"].ToString() != entity.ConnName) //首次发布版本或者换数据库 { sb.Append(CreateTable(entity.TableName, entity.Name)); foreach (var item in items) { sb.Append(CreateField(entity.TableName, item.Code, item.FieldType, item.Name)); #region 时处理ButtonEdit和SubTable if (item.ItemType == "ButtonEdit") { sb.Append(CreateField(entity.TableName, item.Code + "Name", item.FieldType, item.Name + "名称")); } if (item.ItemType == "SubTable") { var subTableItems = getSubTableItem(item.Settings); sb.Append(CreateSubTable(entity.TableName + "_" + item.Code, item.Name, subTableItems)); } #endregion } } else { sb.Append(ModifyTable(dic["TableName"].ToString(), entity.TableName, dic["Name"].ToString(), entity.Name)); var oldItems = JsonHelper.ToObject <List <FormItem> >(dic["Items"].ToString()); string connName = entity.ConnName; string tableName = entity.TableName; foreach (var oldItem in oldItems) { if (items.Where(c => c.ID == oldItem.ID).Count() == 0) { sb.Append(DeleteField(tableName, oldItem.Code)); #region //同时删除ButtonEdit和SubTable if (oldItem.ItemType == "ButtonEdit") { sb.Append(DeleteField(tableName, oldItem.Code + "Name")); } if (oldItem.ItemType == "SubTable") { sb.Append(DeleteSubTable(tableName + "_" + oldItem.Code)); } #endregion } } foreach (var item in items) { var oldItem = oldItems.SingleOrDefault(c => c.ID == item.ID); if (oldItem == null) { sb.Append(CreateField(tableName, item.Code, item.FieldType, item.Name)); #region //同时创建ButtonEdit和SubTable if (item.ItemType == "ButtonEdit") { sb.Append(CreateField(tableName, item.Code + "Name", item.FieldType, item.Name + "名称")); } if (item.ItemType == "SubTable") { var subTableItems = getSubTableItem(item.Settings); sb.Append(CreateSubTable(entity.TableName + "_" + item.Code, item.Name, subTableItems)); } #endregion } else { sb.Append(ModifyField(tableName , oldItem.Code, oldItem.FieldType, oldItem.Name , item.Code, item.FieldType, item.Name)); #region //同时修改ButtonEdit冗余字段 #region ButtonEdit if (item.ItemType == "ButtonEdit" && oldItem.ItemType == "ButtonEdit") { sb.Append(ModifyField(tableName , oldItem.Code + "Name", oldItem.FieldType, oldItem.Name , item.Code + "Name", item.FieldType, item.Name + "名称")); } if (item.ItemType == "ButtonEdit" && oldItem.ItemType != "ButtonEdit") { sb.Append(CreateField(tableName, item.Code + "Name", item.FieldType, item.Name + "名称")); } if (item.ItemType != "ButtonEdit" && oldItem.ItemType == "ButtonEdit") { sb.Append(DeleteField(tableName, oldItem.Code + "Name")); } #endregion #region SubTable if (item.ItemType == "SubTable" && oldItem.ItemType == "SubTable") { var oldSubTableItems = getSubTableItem(oldItem.Settings); var subTableItems = getSubTableItem(item.Settings); sb.Append(ModifySubTable(tableName + "_" + oldItem.Code, tableName + "_" + item.Code, oldItem.Name, item.Name, oldSubTableItems, subTableItems)); } if (item.ItemType == "SubTable" && oldItem.ItemType != "SubTable") { var subTableItems = getSubTableItem(item.Settings); sb.Append(CreateSubTable(tableName + "_" + item.Code, item.Name, subTableItems)); } if (item.ItemType != "SubTable" && oldItem.ItemType == "SubTable") { sb.Append(DeleteSubTable(tableName + "_" + oldItem.Code)); } #endregion #endregion } } } SQLHelper sqlHelper = SQLHelper.CreateSqlHelper(entity.ConnName); sqlHelper.ExecuteNonQuery(sb.ToString()); #region //更新数据字典 MetaFO metaFO = FormulaHelper.CreateFO <MetaFO>(); metaFO.ImportTable(entity.ConnName, false); metaFO.ImportField(entity.ConnName, entity.TableName); foreach (var item in items) { if (item.ItemType == "SubTable") { metaFO.ImportField(entity.ConnName, entity.TableName + "_" + item.Code); } } #endregion var releasedData = new { ConnName = entity.ConnName, TableName = entity.TableName, Name = entity.Name, Items = entity.Items }; entity.ReleasedData = JsonHelper.ToJson(releasedData); entity.ReleaseTime = DateTime.Now; entities.SaveChanges(); return(Json("")); }