Exemple #1
0
        public JsonResult ImportTable(string connName)
        {
            MetaFO metaFO = FormulaHelper.CreateFO <MetaFO>();

            metaFO.ImportTable(connName);
            return(Json(""));
        }
Exemple #2
0
        public JsonResult ImportField(string tableID)
        {
            MetaFO metaFO = FormulaHelper.CreateFO <MetaFO>();

            metaFO.ImportField(tableID);
            return(Json(""));
        }
Exemple #3
0
        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(""));
        }