using APT.BaseData.Domain.ApiModel.FM; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.Entities.OP; using APT.BaseData.Domain.Entities.PF; using APT.BaseData.Domain.Enums; using APT.Infrastructure.Core; using APT.Migrations; using APT.Utility; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace APT.OP.WebApi.Controllers.Api { [Route("api/OP/TenantVersion")] public class TenantVersionController : AuthorizeApiController { [HttpPost, Route("Update")] public JsonActionResult Update([FromBody] T_OP_VERSION version) { return SafeExecute(() => { var orgFilter = new BaseFilter(); orgFilter.IgnoreOrgRule = true; #region OPT信息 //var filter = new BaseFilter(version.TEMPLATE_ID);//OPT创建的菜单,表单等 //filter.Level = -1; //filter.IsParentData = true; #region 系统参数模板 //List optParamItems = this.GetEntities(null, filter).ToList(); //List optParamSchemes = this.GetEntities(null, filter).ToList(); //List optParamSchemeDetails = this.GetEntities(null, filter).ToList(); #endregion #region 表单配置信息 //var optForms = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter); //var optFormRelations = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter);//表单关联 //var optPageTable = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optTablePanels = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optTableParams = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optPageEdit = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optEditPanels = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optEditColumns = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optEditColumnFilters = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optEditColumnFillMaps = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optEditColumnFillMapDs = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optPageTree = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optTreeColumns = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optPageChart = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optChartParams = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optPageCustom = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); #endregion //var optMenusTree = this.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, filter); //var optMenus = this.GetEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, filter); //var optColumFilters = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optQuerys = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optFormQuerys = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optCodeRules = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optSyncTasks = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); //var optVersions = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).ToList(); #endregion #region 来源模板数据 IEnumerable> srcMenuTrees = null; List srcMenus = null; List srcEcpMenus = null; List srcForms = null; List srcFormRelations = null; List srcPageTables = null; List srcPageEdits = null; List srcPageTrees = null; List srcPageCharts = null; List srcPageCustoms = null; List srcBtns = null; List srcColumns = null; List srcPageTablePanels = null; List srcTableParams = null; List srcPageEditPanels = null; List srcEditColumns = null; List srcEditColumnFilters = null; List srcEditColumnFillMaps = null; List srcEditColumnFillMapDs = null; List srcTreeColumns = null; List srcPageChartParams = null; List srcColumnFilters = null; List srcQuerys = null; List srcFormQuerys = null; List srcCodeRules = null; List srcSyncTasks = null; List srcParamItems = null; List srcParamSchemes = null; List srcParamSchemeDetails = null; List srcVersionManages = null; var srcTemplateConnect = string.Empty; var tenantTemplate = this.GetEntities(x => x.ID == version.TEMPLATE_ID, orgFilter).FirstOrDefault(); var srcDB = this.GetEntities(x => x.ID == tenantTemplate.DB_CONN_ID, orgFilter).FirstOrDefault(); if (srcDB != null && !string.IsNullOrEmpty(srcDB.DB_CONN)) { //var Conn = srcDB.DB_CONN; srcTemplateConnect = srcDB.DB_CONN; using (var context = new MigrationContext(srcTemplateConnect)) { #region 来源数据 var srcfilter = new BaseFilter(); srcfilter.IgnoreOrgRule = true; srcfilter.Level = -1; srcfilter.IsParentData = true; List reslist = new List(); srcMenuTrees = context.GetTreeOrderEntities(x => x.ORG_ID == version.TEMPLATE_ID && x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, srcfilter, null, out reslist, false); srcMenus = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID && x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, null, false).ToList();//能管菜单 srcEcpMenus = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID && x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.PLATFORM_CATEGORY == 1, null, false).ToList();//企业平台菜单 srcForms = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList();//租户表单 srcFormRelations = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList();//表单关联 srcPageTables = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcPageEdits = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcPageTrees = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcPageCharts = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcPageCustoms = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcBtns = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcColumns = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcPageTablePanels = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcTableParams = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); ; srcPageEditPanels = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcEditColumns = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcEditColumnFilters = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcEditColumnFillMaps = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcEditColumnFillMapDs = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcTreeColumns = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcPageChartParams = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcColumnFilters = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcQuerys = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcFormQuerys = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcCodeRules = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcSyncTasks = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcParamItems = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcParamSchemes = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcParamSchemeDetails = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); srcVersionManages = context.GetEntities(x => x.ORG_ID == version.TEMPLATE_ID, null, false).ToList(); #endregion } } #endregion TenantInfo srcInfo = new TenantInfo(); srcInfo.FormRelations = srcFormRelations; srcInfo.Forms = srcForms; srcInfo.PageTables = srcPageTables; srcInfo.PageEdits = srcPageEdits; srcInfo.PageTrees = srcPageTrees; srcInfo.PageCharts = srcPageCharts; srcInfo.PageCustoms = srcPageCustoms; srcInfo.Btns = srcBtns; srcInfo.Columns = srcColumns; srcInfo.TablePanels = srcPageTablePanels; srcInfo.TableParams = srcTableParams; srcInfo.EditPanels = srcPageEditPanels; srcInfo.EditColumns = srcEditColumns; srcInfo.EditColumnFilters = srcEditColumnFilters; srcInfo.EditColumnFillMaps = srcEditColumnFillMaps; srcInfo.EditColumnFillMapDs = srcEditColumnFillMapDs; srcInfo.TreeColumns = srcTreeColumns; srcInfo.ChartParams = srcPageChartParams; srcInfo.ColumnFilters = srcColumnFilters; srcInfo.Querys = srcQuerys; srcInfo.FormQuerys = srcFormQuerys; srcInfo.DicPageTable = new Dictionary(); srcInfo.DicPageTableRelation = new Dictionary(); srcInfo.DicForm = new Dictionary(); if (version.CheckMenuKeys.Count > 0 && version.CheckTenantKeys.Count > 0) { var VersionMenu = this.GetEntities(x => x.VERSION_ID == version.ID, orgFilter).ToList(); var versionTenants = this.GetEntities(x => x.VERSION_ID == version.ID, orgFilter).ToList(); if (!(VersionMenu.Any() && versionTenants.Any()))//升级 { foreach (var versionTenant in version.CheckTenantKeys)//租户升级 { #region 更新版本 var saveVersionMenu = new List(); var saveVersionTenant = new List(); var savePermPFMenu = new List(); var addPermPFMenu = new List();//暂时不处理 var savePermPFForm = new List(); var savePermPFFormRelation = new List(); var savePermPageTable = new List(); var savePermPageEdit = new List(); var savePermPageTree = new List(); var savePermPageChart = new List(); var savePermPageCustom = new List(); var savePermBtn = new List(); var savePermCloumn = new List(); var saveTablePanels = new List(); var saveTableParams = new List(); var saveEditPanels = new List(); var saveEditColumns = new List(); var saveEditColumnFilters = new List(); var saveEditColumnFillMaps = new List(); var saveEditColumnFillMapDs = new List(); var saveTreeColumns = new List(); var saveChartParams = new List(); var saveColumFilters = new List(); var saveQuerys = new List(); var saveFormQuerys = new List(); var saveCodeRules = new List(); var saveSyncTasks = new List(); var saveVersions = new List(); var saveParamItems = new List(); var saveParamSchemes = new List(); var saveParamSchemeDetails = new List(); var addSyncTasks = new List(); var addCodeRules = new List(); var addParamItems = new List(); var addParamSchemes = new List(); var addParamSchemeDetails = new List(); #endregion Dictionary relationMenu = new Dictionary();//id.pid Dictionary newRelationMenu = new Dictionary();//id.newid Dictionary MenuFormRelation = new Dictionary();//id.newid Dictionary newItems = new Dictionary();//id.newid Dictionary newSchemes = new Dictionary();//id.newid Dictionary newSchemeDetails = new Dictionary();//id.newid Dictionary newTablePanels = new Dictionary();//id.newid Dictionary newCodeRules = new Dictionary();//id.newid Dictionary newEditPanels = new Dictionary(); #region 授权数据 IEnumerable> tenantMenuTrees = null; List tenantMenus = null; List tenantForms = null; List tenantFormRelations = null; List tenantPageTables = null; List tenantPageEdits = null; List tenantPageTrees = null; List tenantPageCharts = null; List tenantPageCustoms = null; List tenantBtns = null; List tenantColumns = null; List tenantPageTablePanels = null; List tenantTableParams = null; List tenantPageEditPanels = null; List tenantEditColumns = null; List tenantEditColumnFilters = null; List tenantEditColumnFillMaps = null; List tenantEditColumnFillMapDs = null; List tenantTreeColumns = null; List tenantPageChartParams = null; List tenantColumnFilters = null; List tenantQuerys = null; List tenantFormQuerys = null; List tenantCodeRules = null; List tenantSyncTasks = null; List tenantParamItems = null; List tenantParamSchemes = null; List tenantParamSchemeDetails = null; List tenantVersionManages = null; List tenantUser = null; List tenantRole = null; List tenantUserBelongRole = null; #endregion var dicMenu = new Dictionary(); List existForm = new List(); List existTable = new List(); List existPermForm = new List(); var tenantConnect = this.GetEntities(x => x.ID == new Guid(versionTenant), orgFilter).FirstOrDefault(); var tenantDB = this.GetEntities(x => x.ID == tenantConnect.DB_CONN_ID, orgFilter).FirstOrDefault(); if (tenantDB != null && !string.IsNullOrEmpty(tenantDB.DB_CONN)) { var Conn = tenantDB.DB_CONN; using (var context = new MigrationContext(Conn)) { List reslist = new List(); #region 授权数据 tenantMenus = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList();//租户菜单 tenantForms = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList();//租户表单 tenantFormRelations = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList();//表单关联 tenantPageTables = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantPageEdits = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantPageTrees = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantPageCharts = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantPageCustoms = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantBtns = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantColumns = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantPageTablePanels = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantTableParams = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); ; tenantPageEditPanels = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantEditColumns = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantEditColumnFilters = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantEditColumnFillMaps = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantEditColumnFillMapDs = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantTreeColumns = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantPageChartParams = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantColumnFilters = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantQuerys = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantFormQuerys = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantCodeRules = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantSyncTasks = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantParamItems = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantParamSchemes = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantParamSchemeDetails = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantVersionManages = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantUser = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantRole = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); tenantUserBelongRole = context.GetEntities(x => x.ORG_ID ==new Guid(versionTenant), null).ToList(); #endregion } #region 租户已授权信息 TenantInfo tenantInfo = new TenantInfo(); tenantInfo.FormRelations = tenantFormRelations; tenantInfo.Forms = tenantForms; tenantInfo.PageTables = tenantPageTables; tenantInfo.PageEdits = tenantPageEdits; tenantInfo.PageTrees = tenantPageTrees; tenantInfo.PageCharts = tenantPageCharts; tenantInfo.PageCustoms = tenantPageCustoms; tenantInfo.Btns = tenantBtns; tenantInfo.Columns = tenantColumns; tenantInfo.TablePanels = tenantPageTablePanels; tenantInfo.TableParams = tenantTableParams; tenantInfo.EditPanels = tenantPageEditPanels; tenantInfo.EditColumns = tenantEditColumns; tenantInfo.EditColumnFilters = tenantEditColumnFilters; tenantInfo.EditColumnFillMaps = tenantEditColumnFillMaps; tenantInfo.EditColumnFillMapDs = tenantEditColumnFillMapDs; tenantInfo.TreeColumns = tenantTreeColumns; tenantInfo.ChartParams = tenantPageChartParams; tenantInfo.ColumnFilters = tenantColumnFilters; tenantInfo.Querys = tenantQuerys; tenantInfo.FormQuerys = tenantFormQuerys; tenantInfo.DicPageTable = new Dictionary(); tenantInfo.DicPageTableRelation = new Dictionary(); tenantInfo.DicForm = new Dictionary(); #endregion #region addInfo(升级暂时用不到) TenantInfo addEntity = new TenantInfo(); addEntity.FormRelations = new List(); addEntity.Forms = new List(); addEntity.PageTables = new List(); addEntity.PageEdits = new List(); addEntity.PageTrees = new List(); addEntity.PageCharts = new List(); addEntity.PageCustoms = new List(); addEntity.Btns = new List(); addEntity.Columns = new List(); addEntity.TablePanels = new List(); addEntity.TableParams = new List(); addEntity.EditPanels = new List(); addEntity.EditColumns = new List(); addEntity.EditColumnFilters = new List(); addEntity.EditColumnFillMaps = new List(); addEntity.EditColumnFillMapDs = new List(); addEntity.TreeColumns = new List(); addEntity.ChartParams = new List(); addEntity.ColumnFilters = new List(); addEntity.Querys = new List(); addEntity.FormQuerys = new List(); addEntity.DicPageTable = new Dictionary(); addEntity.DicPageTableRelation = new Dictionary(); addEntity.DicForm = new Dictionary(); #endregion #region 系统参数模板 // var tenantParamItems = this.GetEntities(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter); foreach (var item in srcParamItems) { T_PF_PARAM_ITEM parmItem = item; if (tenantParamItems.Any(x => x.SRC_ID == item.ID))//修改 { var tenantItem = tenantParamItems.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = parmItem.ID; parmItem.SRC_ID = parmItem.ID; parmItem.ID = tenantItem.ID; parmItem.ORG_ID = tenantItem.ORG_ID; newItems.Add(oldItenID, tenantItem.ID); saveParamItems.Add(parmItem);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = parmItem.ID; parmItem.SRC_ID = parmItem.ID; parmItem.ID = newItemID; parmItem.ORG_ID = new Guid(versionTenant); newItems.Add(oldItenID, newItemID); addParamItems.Add(parmItem); } } //var tenantParamSchemes = this.GetEntities(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter); foreach (var item in srcParamSchemes) { T_PF_PARAM_SCHEME paramScheme = item; if (tenantParamSchemes.Any(x => x.SRC_ID == item.ID))//修改 { var tenantSchemes = tenantParamSchemes.FirstOrDefault(x => x.SRC_ID == item.ID); var oldSchemeID = paramScheme.ID; paramScheme.SRC_ID = paramScheme.ID; paramScheme.ID = tenantSchemes.ID; paramScheme.ORG_ID = tenantSchemes.ORG_ID; newSchemes.Add(oldSchemeID, tenantSchemes.ID); saveParamSchemes.Add(paramScheme);//添加到对应租户 } else//新增 { var newSchemesID = Guid.NewGuid(); var oldSchemeID = paramScheme.ID; paramScheme.SRC_ID = paramScheme.ID; paramScheme.ID = newSchemesID; paramScheme.ORG_ID = new Guid(versionTenant); newSchemes.Add(oldSchemeID, newSchemesID); addParamSchemes.Add(paramScheme); } } // var tenantParamSchemeDetails = this.GetEntities(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter); foreach (var item in srcParamSchemeDetails) { T_PF_PARAM_SCHEME_DETAIL paramSchemeDetail = item; if (tenantParamSchemeDetails.Any(x => x.SRC_ID == item.ID))//修改 { var tenantSchemes = tenantParamSchemeDetails.FirstOrDefault(x => x.SRC_ID == item.ID); var oldSchemeDetailID = paramSchemeDetail.ID; var scheneId = newSchemes[item.PARAM_SCHEME_ID]; var ItemId = newItems[item.PARAM_ITEM_ID]; paramSchemeDetail.SRC_ID = paramSchemeDetail.ID; paramSchemeDetail.ID = tenantSchemes.ID; paramSchemeDetail.ORG_ID = tenantSchemes.ORG_ID; paramSchemeDetail.PARAM_SCHEME_ID = scheneId; paramSchemeDetail.PARAM_ITEM_ID = ItemId; newSchemeDetails.Add(oldSchemeDetailID, tenantSchemes.ID); saveParamSchemeDetails.Add(paramSchemeDetail);//添加到对应租户 } else//新增 { var newSchemeDetailID = Guid.NewGuid(); var oldSchemeDetailID = paramSchemeDetail.ID; var scheneId = newSchemes[item.PARAM_SCHEME_ID]; var ItemId = newItems[item.PARAM_ITEM_ID]; paramSchemeDetail.SRC_ID = paramSchemeDetail.ID; paramSchemeDetail.ID = newSchemeDetailID; paramSchemeDetail.ORG_ID = new Guid(versionTenant); paramSchemeDetail.PARAM_SCHEME_ID = scheneId; paramSchemeDetail.PARAM_ITEM_ID = ItemId; newSchemeDetails.Add(oldSchemeDetailID, newSchemeDetailID); addParamSchemeDetails.Add(paramSchemeDetail); } } #endregion #region 编码规则表 // var tenantCodeRules = this.GetEntities(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter); foreach (var item in srcCodeRules) { T_PF_CODE_RULE codeRule = item; if (tenantCodeRules.Any(x => x.SRC_ID == item.ID)) { var tenantCodeRule = tenantCodeRules.FirstOrDefault(x => x.SRC_ID == item.ID); var oldCodeRuleID = item.ID; codeRule.SRC_ID = codeRule.ID; codeRule.ID = tenantCodeRule.ID; codeRule.ORG_ID = tenantCodeRule.ORG_ID; newCodeRules.Add(oldCodeRuleID, tenantCodeRule.ID); saveCodeRules.Add(codeRule);//添加到对应租户 } else { var newCodeRuleID = Guid.NewGuid(); var oldCodeRuleID = item.ID; codeRule.SRC_ID = codeRule.ID; codeRule.ID = newCodeRuleID; codeRule.ORG_ID = new Guid(versionTenant); newCodeRules.Add(oldCodeRuleID, newCodeRuleID); addCodeRules.Add(codeRule); } } #endregion #region T_FM_SYNC_TASK // var tenantSyncTasks = this.GetEntities(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter); foreach (var item in srcSyncTasks) { T_FM_SYNC_TASK syncTask = item; if (tenantSyncTasks.Any(x => x.SRC_ID == item.ID)) { var tenantSyncTask = tenantSyncTasks.FirstOrDefault(x => x.SRC_ID == item.ID); var oldCodeRuleID = item.ID; syncTask.SRC_ID = syncTask.ID; syncTask.ID = tenantSyncTask.ID; syncTask.ORG_ID = tenantSyncTask.ORG_ID; saveSyncTasks.Add(syncTask);//添加到对应租户 } else { var newSyncTaskID = Guid.NewGuid(); var oldCodeRuleID = item.ID; syncTask.SRC_ID = syncTask.ID; syncTask.ID = newSyncTaskID; syncTask.ORG_ID = new Guid(versionTenant); addSyncTasks.Add(syncTask); } } #endregion foreach (var CheckKey in version.CheckMenuKeys) { var checkMenu = srcMenuTrees.FirstOrDefault(x => x.Node.ID == new Guid(CheckKey)); if (checkMenu == null) { foreach (var item in srcMenuTrees) { checkMenu = selectNode(item, CheckKey); if (checkMenu != null) break; } } if (checkMenu != null) { saveVersionMenu.Add(new T_OP_VERSION_MENU() { VERSION_ID = version.ID, MENU_ID = new Guid(CheckKey), ORG_ID = version.ORG_ID }); if (checkMenu.IsLeaf && checkMenu.Node.MENU_FORM_ID != null)//叶子节点 { dicMenu.Add(new Guid(CheckKey), checkMenu.Node.MENU_FORM_ID); //T_PF_FORM t_PF_FORM = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).FirstOrDefault(x => x.ID == checkMenu.Node.MENU_FORM_ID);//OPT //T_PF_MENU t_PF_MENU = this.GetEntities(x => x.ORG_ID == filter.OrgId, filter).Where(x => x.ID == new Guid(CheckKey)).FirstOrDefault(); T_PF_FORM t_PF_FORM = srcForms.FirstOrDefault(x => x.ID == checkMenu.Node.MENU_FORM_ID); T_PF_MENU t_PF_MENU = srcMenus.FirstOrDefault(x => x.ID == new Guid(CheckKey)); if (tenantMenus.Any(x => x.SRC_ID == new Guid(CheckKey)))//存在 { #region 生成表单 // var tanentForm = this.GetEntities(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter).FirstOrDefault(x => x.SRC_ID == checkMenu.Node.MENU_FORM_ID); var tanentForm = tenantForms.FirstOrDefault(x => x.SRC_ID == checkMenu.Node.MENU_FORM_ID); if (tanentForm != null) { if (t_PF_FORM != null)//再次点击相同表单数据已更新 { if (!existForm.Contains(t_PF_FORM.ID) && !savePermPFForm.Any(x => x.CODE == t_PF_FORM.CODE) && !addEntity.Forms.Any(x => x.CODE == t_PF_FORM.CODE)) { AddTable(srcInfo, t_PF_FORM, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, new Guid(versionTenant), tanentForm.ID, existForm, existTable, tenantInfo, addEntity); t_PF_FORM.SRC_ID = checkMenu.Node.MENU_FORM_ID; t_PF_FORM.ID = tanentForm.ID; t_PF_FORM.ORG_ID = new Guid(versionTenant); t_PF_FORM.Nav_Org = null; if (t_PF_FORM != null) { savePermPFForm.Add(t_PF_FORM);//添加表单到对应租户 } } } } #endregion #region 生成菜单 var tenantMenu = tenantMenus.FirstOrDefault(x => x.SRC_ID == new Guid(CheckKey)); t_PF_MENU.SRC_ID = new Guid(CheckKey); t_PF_MENU.ID = tenantMenu.ID; t_PF_MENU.ORG_ID = new Guid(versionTenant); if (!tenantInfo.DicForm.ContainsKey(t_PF_MENU.MENU_FORM_ID.ToString())) { tenantInfo.DicForm.Add(t_PF_MENU.MENU_FORM_ID.ToString(), tanentForm.ID.ToString()); t_PF_MENU.MENU_FORM_ID = tanentForm.ID; } else { t_PF_MENU.MENU_FORM_ID = new Guid(tenantInfo.DicForm[t_PF_MENU.MENU_FORM_ID.ToString()]); } relationMenu.Add(CheckKey, checkMenu.Node.PARENT_ID); newRelationMenu.Add(CheckKey, tenantMenu.ID.ToString()); savePermPFMenu.Add(t_PF_MENU);//添加菜单到对应租户 #endregion } else { #region 菜单授权 var newMenuID = Guid.NewGuid(); //savePermOPMenu.Add(new T_OP_ROLE_MENU() { TENANT_ID = tenant.ID, MENU_ID = new Guid(CheckKey), TENANT_MENU_ID = newMenuID, ORG_ID = tenant.ID });//菜单授权 #endregion #region 生成表单 var newFormID = Guid.NewGuid(); if (t_PF_FORM != null) { if (!existForm.Contains(t_PF_FORM.ID) && !savePermPFForm.Any(x => x.CODE == t_PF_FORM.CODE) && !addEntity.Forms.Any(x => x.CODE == t_PF_FORM.CODE)) { AddTable(srcInfo, t_PF_FORM, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, new Guid(versionTenant), newFormID, existForm, existTable, tenantInfo, addEntity); t_PF_FORM.SRC_ID = checkMenu.Node.MENU_FORM_ID; t_PF_FORM.ID = newFormID; t_PF_FORM.ORG_ID = new Guid(versionTenant); t_PF_FORM.Nav_Org = null; if (t_PF_FORM != null) { addEntity.Forms.Add(t_PF_FORM);//添加表单到对应租户 } } } #endregion #region 生成菜单 t_PF_MENU.SRC_ID = checkMenu.Node.ID; t_PF_MENU.ID = newMenuID; t_PF_MENU.ORG_ID = new Guid(versionTenant); if (!tenantInfo.DicForm.ContainsKey(t_PF_MENU.MENU_FORM_ID.ToString())) { tenantInfo.DicForm.Add(t_PF_MENU.MENU_FORM_ID.ToString(), newFormID.ToString()); t_PF_MENU.MENU_FORM_ID = newFormID; } else { t_PF_MENU.MENU_FORM_ID = new Guid(tenantInfo.DicForm[t_PF_MENU.MENU_FORM_ID.ToString()]); } relationMenu.Add(CheckKey, checkMenu.Node.PARENT_ID); newRelationMenu.Add(CheckKey, newMenuID.ToString()); addPermPFMenu.Add(t_PF_MENU);//添加菜单到对应租户 #endregion } } else { dicMenu.Add(new Guid(CheckKey), null); //var tenantMenus = this.GetEntities(null, tenantFilter); T_PF_MENU t_PF_MENU = srcMenus.FirstOrDefault(x => x.ID == new Guid(CheckKey)); if (tenantMenus.Any(x => x.SRC_ID == new Guid(CheckKey))) { var tenantMenu = tenantMenus.FirstOrDefault(x => x.SRC_ID == new Guid(CheckKey)); t_PF_MENU.SRC_ID = checkMenu.Node.ID; t_PF_MENU.ID = tenantMenu.ID; t_PF_MENU.ORG_ID = tenantMenu.ORG_ID; relationMenu.Add(CheckKey, checkMenu.Node.PARENT_ID); newRelationMenu.Add(CheckKey, tenantMenu.ID.ToString()); savePermPFMenu.Add(t_PF_MENU);//添加菜单到对应租户 } else { var newMenuID = Guid.NewGuid(); //savePermOPMenu.Add(new T_OP_ROLE_MENU() { TENANT_ID = tenant.ID, MENU_ID = new Guid(CheckKey), TENANT_MENU_ID = newMenuID, ORG_ID = tenant.ID });//菜单授权 t_PF_MENU.SRC_ID = checkMenu.Node.ID; t_PF_MENU.ID = newMenuID; t_PF_MENU.ORG_ID = new Guid(versionTenant); relationMenu.Add(CheckKey, checkMenu.Node.PARENT_ID); newRelationMenu.Add(CheckKey, newMenuID.ToString()); addPermPFMenu.Add(t_PF_MENU); } } } } #region 菜单节点关系 foreach (var item in relationMenu) { if (item.Value != null) { var newMenuID = newRelationMenu[item.Key];//需要更新父ID if (savePermPFMenu.Count > 0 && savePermPFMenu.Any(x => x.ID == new Guid(newMenuID))) { savePermPFMenu.Where(x => x.ID == new Guid(newMenuID)).FirstOrDefault().PARENT_ID = new Guid(newRelationMenu[item.Value.ToString()]); } } } #endregion #region PageTable关系关联 foreach (var item in savePermPageTable) { if (item.PARENT_ID != null) { //item.PARENT_ID = new Guid(tenantInfo.DicPageTableRelation[tenantInfo.DicPageTable[item.SRC_ID.ToString()]]); var oldParentID = tenantInfo.DicPageTable[item.SRC_ID.ToString()]; item.PARENT_ID = new Guid(tenantInfo.DicPageTableRelation[oldParentID.ToString()]); } } #endregion #region pageEdit关系关联 foreach (var item in savePermPageEdit) { if (item.PARENT_ID != null) { //item.PARENT_ID = new Guid(tenantInfo.DicPageTableRelation[tenantInfo.DicPageTable[item.SRC_ID.ToString()]]); var oldParentID = tenantInfo.DicPageTable[item.SRC_ID.ToString()]; item.PARENT_ID = new Guid(tenantInfo.DicPageTableRelation[oldParentID.ToString()]); } } #endregion saveVersionTenant.Add(new T_OP_VERSION_TENANT() { VERSION_ID = version.ID, TENANT_ID = new Guid(versionTenant), ORG_ID = version.ORG_ID }); saveVersions.Add(new T_PF_VERSION_MANAGE() { ORG_ID = new Guid(versionTenant), VERSION_NO = version.VERSION_NO, VERSION_ZH = version.VERSION_ZH, CONTENT = version.CONTENT }); #region 子企业升级 IEnumerable> tenantOrgs = null; List menus = null; using (var context = new MigrationContext(Conn)) { var filterOrg = new BaseFilter();//OPT创建的菜单,表单等 filterOrg.IgnoreOrgRule = true; filterOrg.Level = -1; filterOrg.IsParentData = true; List reslist = new List(); tenantOrgs = context.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, filterOrg, null, out reslist); var tenantOrg = tenantOrgs.Where(x => x.Node.ID == new Guid(versionTenant)).FirstOrDefault(); menus = context.GetEntities(x => x.ORG_ID == tenantOrg.Node.ID && version.CheckMenuKeys.Contains(x.SRC_ID.ToString()), null).ToList();//租户菜单 } Dictionary dicOptMenu = new Dictionary(); foreach (var menu in menus) { dicOptMenu.Add(menu.ID, (Guid)menu.SRC_ID); } List CheckMenuKeys = new List(); foreach (var CheckMenuKey in menus) { CheckMenuKeys.Add((Guid)CheckMenuKey.ID); } List dicTenant = new List(); foreach (var CheckMenuKey in CheckMenuKeys) { IEnumerable enterpriseMenus = null; T_PF_MENU srcMenu = null; using (var context = new MigrationContext(Conn)) { enterpriseMenus = context.GetEntities(x => x.SRC_ID == CheckMenuKey, null); } using (var srccontext = new MigrationContext(srcTemplateConnect))//模板库 { srcMenu = srccontext.GetEntities(x => x.ID == dicOptMenu[CheckMenuKey], null).FirstOrDefault();//OPT菜单 } var tenantSaveMenus = savePermPFMenu.FirstOrDefault(x => x.ID == CheckMenuKey); foreach (var enterpriseMenu in enterpriseMenus) { if (!dicTenant.Contains((Guid)enterpriseMenu.ORG_ID)) { dicTenant.Add((Guid)enterpriseMenu.ORG_ID); } enterpriseMenu.NAME = srcMenu.NAME; enterpriseMenu.MENU_FORM_PARAMS = srcMenu.MENU_FORM_PARAMS; enterpriseMenu.NAME_ACRONYM = srcMenu.NAME_ACRONYM; enterpriseMenu.MENU_FORM_ID = tenantSaveMenus.MENU_FORM_ID; enterpriseMenu.ICON = srcMenu.ICON; savePermPFMenu.Add(enterpriseMenu);//添加菜单到对应租户 } } // updateChildren(tenantOrg, savePermPFMenu, CheckMenuKeys, dicOptMenu); if (dicTenant.Any()) { foreach (var item in dicTenant) { saveVersions.Add(new T_PF_VERSION_MANAGE() { ORG_ID = item, VERSION_NO = version.VERSION_NO, VERSION_ZH = version.VERSION_ZH, CONTENT = version.CONTENT }); } } #endregion this.UpdateEntity(version); if (saveVersionMenu != null && saveVersionMenu.Any()) this.BantchSaveEntity(saveVersionMenu); if (saveVersionTenant != null && saveVersionTenant.Any()) this.BantchSaveEntity(saveVersionTenant); using (var context = new MigrationContext(Conn)) { if (saveCodeRules != null && saveCodeRules.Any()) context.UpdateEntities(saveCodeRules); if (saveSyncTasks != null && saveSyncTasks.Any()) context.UpdateEntities(saveSyncTasks); if (savePermPFForm != null && savePermPFForm.Any()) context.UpdateEntities(savePermPFForm); if (saveParamItems != null && saveParamItems.Any()) context.UpdateEntities(saveParamItems); if (saveParamSchemes != null && saveParamSchemes.Any()) context.UpdateEntities(saveParamSchemes); if (saveParamSchemeDetails != null && saveParamSchemeDetails.Any()) context.UpdateEntities(saveParamSchemeDetails); if (savePermPageEdit != null && savePermPageEdit.Any()) context.UpdateEntities(savePermPageEdit); if (saveEditPanels != null && saveEditPanels.Any()) context.UpdateEntities(saveEditPanels); if (saveEditColumns != null && saveEditColumns.Any()) context.UpdateEntities(saveEditColumns); if (saveEditColumnFilters != null && saveEditColumnFilters.Any()) context.UpdateEntities(saveEditColumnFilters); if (saveEditColumnFillMaps != null && saveEditColumnFillMaps.Any()) context.UpdateEntities(saveEditColumnFillMaps); if (saveEditColumnFillMapDs != null && saveEditColumnFillMapDs.Any()) context.UpdateEntities(saveEditColumnFillMapDs); if (savePermPageCustom != null && savePermPageCustom.Any()) context.UpdateEntities(savePermPageCustom); if (savePermPageChart != null && savePermPageChart.Any()) context.UpdateEntities(savePermPageChart); if (saveChartParams != null && saveChartParams.Any()) context.UpdateEntities(saveChartParams); if (savePermPageTable != null && savePermPageTable.Any()) context.UpdateEntities(savePermPageTable); if (saveTablePanels != null && saveTablePanels.Any()) context.UpdateEntities(saveTablePanels); if (savePermCloumn != null && savePermCloumn.Any()) context.UpdateEntities(savePermCloumn); if (saveColumFilters != null && saveColumFilters.Any()) context.UpdateEntities(saveColumFilters); if (saveTableParams != null && saveTableParams.Any()) context.UpdateEntities(saveTableParams); if (saveFormQuerys != null && saveFormQuerys.Any()) context.UpdateEntities(saveFormQuerys); if (saveQuerys != null && saveQuerys.Any()) context.UpdateEntities(saveQuerys); if (savePermPageTree != null && savePermPageTree.Any()) context.UpdateEntities(savePermPageTree); if (saveTreeColumns != null && saveTreeColumns.Any()) context.UpdateEntities(saveTreeColumns); if (savePermBtn != null && savePermBtn.Any()) context.UpdateEntities(savePermBtn); if (savePermPFMenu != null && savePermPFMenu.Any()) context.UpdateEntities(savePermPFMenu); if (savePermPFFormRelation != null && savePermPFFormRelation.Any()) context.UpdateEntities(savePermPFFormRelation); if (saveVersions != null && saveVersions.Any()) context.AddEntities(saveVersions); context.SaveChanges(); } } } } } //UnifiedCommit(() => //{ // this.UpdateEntityNoCommit(version); // if (saveCodeRules != null && saveCodeRules.Any()) // this.BantchSaveEntityNoCommit(saveCodeRules); // if (saveSyncTasks != null && saveSyncTasks.Any()) // this.BantchSaveEntityNoCommit(saveSyncTasks); // if (savePermPFForm != null && savePermPFForm.Any()) // this.BantchSaveEntityNoCommit(savePermPFForm); // if (saveParamItems != null && saveParamItems.Any()) // this.BantchSaveEntityNoCommit(saveParamItems); // if (saveParamSchemes != null && saveParamSchemes.Any()) // this.BantchSaveEntityNoCommit(saveParamSchemes); // if (saveParamSchemeDetails != null && saveParamSchemeDetails.Any()) // this.BantchSaveEntityNoCommit(saveParamSchemeDetails); // if (savePermPageEdit != null && savePermPageEdit.Any()) // this.BantchSaveEntityNoCommit(savePermPageEdit); // if (saveEditPanels != null && saveEditPanels.Any()) // this.BantchSaveEntityNoCommit(saveEditPanels); // if (saveEditColumns != null && saveEditColumns.Any()) // this.BantchSaveEntityNoCommit(saveEditColumns); // if (saveEditColumnFilters != null && saveEditColumnFilters.Any()) // this.BantchSaveEntityNoCommit(saveEditColumnFilters); // if (saveEditColumnFillMaps != null && saveEditColumnFillMaps.Any()) // this.BantchSaveEntityNoCommit(saveEditColumnFillMaps); // if (saveEditColumnFillMapDs != null && saveEditColumnFillMapDs.Any()) // this.BantchSaveEntityNoCommit(saveEditColumnFillMapDs); // if (savePermPageCustom != null && savePermPageCustom.Any()) // this.BantchSaveEntityNoCommit(savePermPageCustom); // if (savePermPageChart != null && savePermPageChart.Any()) // this.BantchSaveEntityNoCommit(savePermPageChart); // if (saveChartParams != null && saveChartParams.Any()) // this.BantchSaveEntityNoCommit(saveChartParams); // if (savePermPageTable != null && savePermPageTable.Any()) // this.BantchSaveEntityNoCommit(savePermPageTable); // if (saveTablePanels != null && saveTablePanels.Any()) // this.BantchSaveEntityNoCommit(saveTablePanels); // if (savePermCloumn != null && savePermCloumn.Any()) // this.BantchSaveEntityNoCommit(savePermCloumn); // if (saveColumFilters != null && saveColumFilters.Any()) // this.BantchSaveEntityNoCommit(saveColumFilters); // if (saveTableParams != null && saveTableParams.Any()) // this.BantchSaveEntityNoCommit(saveTableParams); // if (saveFormQuerys != null && saveFormQuerys.Any()) // this.BantchSaveEntityNoCommit(saveFormQuerys); // if (saveQuerys != null && saveQuerys.Any()) // this.BantchSaveEntityNoCommit(saveQuerys); // if (savePermPageTree != null && savePermPageTree.Any()) // this.BantchSaveEntityNoCommit(savePermPageTree); // if (saveTreeColumns != null && saveTreeColumns.Any()) // this.BantchSaveEntityNoCommit(saveTreeColumns); // if (savePermBtn != null && savePermBtn.Any()) // this.BantchSaveEntityNoCommit(savePermBtn); // if (savePermPFMenu != null && savePermPFMenu.Any()) // this.BantchSaveEntityNoCommit(savePermPFMenu); // if (savePermPFFormRelation != null && savePermPFFormRelation.Any()) // this.BantchSaveEntityNoCommit(savePermPFFormRelation); // if (saveVersions != null && saveVersions.Any()) // this.BantchSaveEntityNoCommit(saveVersions); // if (saveVersionMenu != null && saveVersionMenu.Any()) // this.BantchSaveEntityNoCommit(saveVersionMenu); // if (saveVersionTenant != null && saveVersionTenant.Any()) // this.BantchSaveEntityNoCommit(saveVersionTenant); //}); return true; }); } public void updateChildren(TreeNode orgs, List saveMenus, List CheckMenuKeys, Dictionary dicOptMenu) { if (orgs.Children.Count > 0) { foreach (var org in orgs.Children) { List TenantCheckMenuKeys = new List();//对应父节点选中菜单 var menus = this.GetEntities(x => x.ORG_ID == org.Node.ID && CheckMenuKeys.Contains((Guid)x.SRC_ID), new BaseFilter()).ToList();//子企业菜单 // TenantCheckMenuKeys.AddRange(this.GetEntities(x => x.ORG_ID == org.Node.ID && CheckMenuKeys.Contains((Guid)x.SRC_ID), new BaseFilter()).Select(x => x.ID));//子企业对应选中的菜单 var TenantCheckMenus = this.GetEntities(x => x.ORG_ID == org.Node.ID && CheckMenuKeys.Contains((Guid)x.SRC_ID), new BaseFilter()); foreach (var TenantCheckMenu in TenantCheckMenus) { TenantCheckMenuKeys.Add((Guid)TenantCheckMenu.SRC_ID); } foreach (var menu in menus) { dicOptMenu.Add(menu.ID, dicOptMenu[(Guid)menu.SRC_ID]); } if (TenantCheckMenuKeys != null && TenantCheckMenuKeys.Any()) { updateMenu(org, saveMenus, TenantCheckMenuKeys, dicOptMenu); } updateChildren(org, saveMenus, TenantCheckMenuKeys, dicOptMenu); } } } public void updateMenu(TreeNode orgs, List saveMenus, List CheckMenuKeys, Dictionary dicOptMenu) { var enterpriseMenus = this.GetEntities(x => x.ORG_ID == orgs.Node.ID, new BaseFilter()); var enterpriseMenuIds = enterpriseMenus.Select(x => x.ID); foreach (var CheckKey in CheckMenuKeys) { if (enterpriseMenuIds.Contains(CheckKey))//子企业有对应菜单权限才更新 { var enterprisetenantMenu = enterpriseMenus.FirstOrDefault(x => x.ID == CheckKey); T_PF_MENU t_PF_MENU = this.GetEntities(x => x.ID == dicOptMenu[CheckKey], new BaseFilter()).FirstOrDefault();//OPT菜单 enterprisetenantMenu.NAME = t_PF_MENU.NAME; enterprisetenantMenu.MENU_FORM_PARAMS = t_PF_MENU.MENU_FORM_PARAMS; enterprisetenantMenu.NAME_ACRONYM = t_PF_MENU.NAME_ACRONYM; enterprisetenantMenu.MENU_FORM_ID = t_PF_MENU.MENU_FORM_ID; enterprisetenantMenu.ICON = t_PF_MENU.ICON; saveMenus.Add(enterprisetenantMenu);//添加菜单到对应租户 } } } /// /// 树形授权 /// /// /// [HttpPost, Route("GetTreePermissionForms")] public JsonActionResult GetTreePermissionForms([FromBody] KeywordPageFilter pageFilter) { return SafeExecute(() => { List result = new List();//最终返回树结果 IEnumerable> menuTree = null; //var filter = new BaseFilter(new Guid(pageFilter.Parameter6));//OPT OrgId //filter.Level = -1; //filter.IsParentData = true; var orgFilter = new BaseFilter(); orgFilter.IgnoreOrgRule = true; string VersionId = pageFilter.Keyword;//租户ID List permissionMenu = null; List versionTenant = null; var tenant = this.GetEntities(x => x.ID == new Guid(pageFilter.Parameter6), orgFilter).FirstOrDefault(); var targetDB = this.GetEntities(x => x.ID == tenant.DB_CONN_ID, orgFilter).FirstOrDefault(); if (targetDB != null && !string.IsNullOrEmpty(targetDB.DB_CONN)) { var Conn = targetDB.DB_CONN; using (var context = new MigrationContext(Conn)) { var filter = new BaseFilter(); filter.IgnoreOrgRule = true; filter.Level = -1; filter.IsParentData = true; List reslist = new List(); menuTree = context.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.PLATFORM_CATEGORY == 0 && x.ORG_ID == new Guid(pageFilter.Parameter6), filter, null, out reslist); } } // var menuTree = this.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.ORG_ID == filter.OrgId && x.PLATFORM_CATEGORY == 0, filter); if (!string.IsNullOrEmpty(VersionId)) { permissionMenu = this.GetEntities(x => x.VERSION_ID == new Guid(VersionId), orgFilter).ToList(); versionTenant = this.GetEntities(x => x.VERSION_ID == new Guid(VersionId), orgFilter).ToList(); } List formInfos = new List(); List checks = new List(); List checkLastKey = new List(); List checkTenants = new List(); foreach (var menu in menuTree) { AddChildren(menu, permissionMenu, formInfos); } result = RolePermissionTreeModel.GetRolePermissionTree(formInfos); result = result[0].children; foreach (var item in result) { SelectCheck(item, checks, checkLastKey); } if (versionTenant != null && versionTenant.Any()) { foreach (var item in versionTenant) { checkTenants.Add(item.TENANT_ID.ToString()); } } var rlt = new RolePermissionResul() { checks = checks, checkLastKey = checkLastKey, checkTenants = checkTenants, rolePermissionTreeModels = result }; return rlt; }); } public void AddChildren(TreeNode treeNode, IEnumerable permissionMenu, List formInfos) { var permission = false; if (!treeNode.Node.IS_LEAF) { permission = permissionMenu == null ? false : permissionMenu.Any(x => x.MENU_ID == treeNode.Node.ID); formInfos.Add(new FormInfo() { Code = treeNode.Node.ID.ToString(), Title = treeNode.Node.NAME, ParentCode = treeNode.Node.PARENT_ID.ToString(), IsCheck = permission }); foreach (var item in treeNode.Children) { AddChildren(item, permissionMenu, formInfos); } } else { permission = permissionMenu == null ? false : permissionMenu.Any(x => x.MENU_ID == treeNode.Node.ID); formInfos.Add(new FormInfo() { Code = treeNode.Node.ID.ToString(), Title = treeNode.Node.NAME, ParentCode = treeNode.Node.PARENT_ID.ToString(), IsCheck = permission }); } } public void SelectCheck(RolePermissionTreeModel RolePermissions, List checks, List checkLastKey) { if (RolePermissions.IsCheck) { checks.Add(RolePermissions.key); } if (RolePermissions.children.Count == 0 && RolePermissions.IsCheck) { checkLastKey.Add(RolePermissions.key); } if (RolePermissions.children.Count > 0) { foreach (var item in RolePermissions.children) { SelectCheck(item, checks, checkLastKey); } } } public void AddTable(TenantInfo srcInfo, T_PF_FORM form, List savePermPFForm, List savePermPageTable, List saveTablePanels, List saveTableParams, List saveColumFilters, List savePermCloumn, List savePermPageEdit, List saveEditPanels, List saveEditColumns, List saveEditColumnFilters, List saveEditColumnFillMaps, List saveEditColumnFillMapDs, List savePermPageTree, List saveTreeColumns, List savePermPageChart, List saveChartParams, List savePermPageCustom, List savePermBtn, List saveFormQuerys, List saveQuerys, List savePermPFFormRelation, Dictionary newSchemes, Dictionary newTablePanels, Dictionary newEditPanels, Guid tenantID, Guid pageFormID, List existForm, List existTable, TenantInfo tenantInfo, TenantInfo addEntity) { existForm.Add(form.ID);//去重 tenantInfo.DicForm.Add(form.ID.ToString(), pageFormID.ToString()); switch (form.FORM_TYPE) { case (int)PFFormTypeEnum.列表表单: case (int)PFFormTypeEnum.组合表单: { #region 配置关联表单T_PF_FORM_RELATION var formRelations = srcInfo.FormRelations.Where(x => x.PAGE_FORM_ID == form.ID); if (formRelations.Any()) { foreach (var formRelation in formRelations) { T_PF_FORM_RELATION relation = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formRelation); if (tenantInfo.FormRelations.Any(x => x.SRC_ID == formRelation.ID)) { var tenantRelation = tenantInfo.FormRelations.FirstOrDefault(x => x.SRC_ID == formRelation.ID); var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID);//取旧数据ID不变 T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); //savePermPFForm.Add(newForm);//添加表单到对应租户 } } } relation.SRC_ID = formRelation.ID; relation.ID = tenantRelation.ID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; savePermPFFormRelation.Add(relation); } else { var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } var newRelationID = new Guid(); relation.SRC_ID = formRelation.ID; relation.ID = newRelationID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; addEntity.FormRelations.Add(relation); } } } #endregion #region 查询 AddQuerys(form, tenantID, pageFormID, srcInfo.FormQuerys, saveFormQuerys, srcInfo.Querys, saveQuerys, tenantInfo, addEntity); #endregion var resTable = srcInfo.PageTables.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resTable.Count > 0) { if (form.FORM_TYPE == (int)PFFormTypeEnum.列表表单) { foreach (var item in resTable) { var oldpageTable = item.ID; if (!existTable.Contains(oldpageTable)) { existTable.Add(oldpageTable); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageTable, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #region 添加列 //var allClm = this.GetEntities(t => t.PAGE_TABLE_ID == oldpageTable, filter).ToList();//OPT所有列 var allClm = srcInfo.Columns.Where(t => t.PAGE_TABLE_ID == oldpageTable).ToList(); foreach (var col in allClm) { var oldColID = col.ID; var newColumnID = Guid.NewGuid(); if (tenantInfo.Columns.Any(x => x.SRC_ID == col.ID)) { var tenantColumn = tenantInfo.Columns.FirstOrDefault(x => x.SRC_ID == col.ID); T_PF_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = tenantColumn.ID; column.ORG_ID = tenantID; column.PAGE_TABLE_ID = newTableID; if (column.PAGE_TABLE_PANEL_ID != null) { column.PAGE_TABLE_PANEL_ID = newTablePanels[(Guid)column.PAGE_TABLE_PANEL_ID]; } savePermCloumn.Add(column);//添加列基础到对应租户 newColumnID = tenantColumn.ID;//更新 } else { T_PF_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_TABLE_ID = newTableID; if (column.PAGE_TABLE_PANEL_ID != null) { column.PAGE_TABLE_PANEL_ID = newTablePanels[(Guid)column.PAGE_TABLE_PANEL_ID]; } //savePermCloumn.Add(column);//添加列基础到对应租户 addEntity.Columns.Add(column); } #region T_PF_COLUMN_FILTER var colFilters = srcInfo.ColumnFilters.Where(x => x.COLUMN_ID == oldColID); foreach (var colFilter in colFilters) { if (tenantInfo.ColumnFilters.Any(x => x.SRC_ID == colFilter.ID)) { var tenantColumnFilters = tenantInfo.ColumnFilters.FirstOrDefault(x => x.SRC_ID == colFilter.ID); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = tenantColumnFilters.ID; cf.COLUMN_ID = newColumnID; cf.ORG_ID = tenantID; saveColumFilters.Add(cf); } else { var colID = Guid.NewGuid(); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = colID; cf.COLUMN_ID = newColumnID; cf.ORG_ID = tenantID; addEntity.ColumnFilters.Add(cf); } } #endregion if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单 { var colForm = srcInfo.Forms.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault(); if (!existForm.Contains(form.ID) && !savePermPFForm.Any(x => x.CODE == colForm.CODE) && !addEntity.Forms.Any(x => x.CODE == colForm.CODE))//去重 { if (colForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == colForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == colForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } } } #endregion #region 添加按钮 //var allBtn = this.GetEntities(t => t.PAGE_ID == oldpageTable, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(t => t.PAGE_ID == oldpageTable).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } else//组合表单 { foreach (var item in resTable) { var newRelationFormID = Guid.NewGuid(); var reformId = srcInfo.Forms.Where(x => x.CODE == item.CODE).FirstOrDefault(); //var reformId = this.GetEntities(null, filter).FirstOrDefault(x => x.CODE == item.CODE); if (reformId != null && !existForm.Contains(reformId.ID) && !savePermPFForm.Any(x => x.CODE == reformId.CODE) && !addEntity.Forms.Any(x => x.CODE == reformId.CODE)) { if (tenantInfo.Forms.Any(x => x.SRC_ID == reformId.ID))//存在 { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == reformId.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(reformId);//OPT创建的表单 AddTable(srcInfo, newForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = reformId.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 newRelationFormID = tenantForm.ID; } else { //var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(reformId);//OPT创建的表单 AddTable(srcInfo, newForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newRelationFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = reformId.ID; newForm.ID = newRelationFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } #region 组合关联pageTable var oldrelationPageID = item.ID; var pageTables = srcInfo.PageTables.Where(x => x.PAGE_FORM_ID == reformId.ID).ToList();//真实表单 if (!existTable.Contains(oldrelationPageID)) { existTable.Add(oldrelationPageID); var newRelationTableID = AddPageTable(item, pageFormID, tenantID, savePermPageTable, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); } #endregion #region 添加T_PF_PAGE_TABLE //foreach (var pageTable in pageTables) //{ // var oldpageTable = pageTable.ID; // if (!existTable.Contains(oldpageTable)) // { // existTable.Add(oldpageTable); // var newTableID = AddPageTable(pageTable, newRelationFormID, tenantID, savePermPageTable, newSchemes, saveTablePanels, saveTableParams, // newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo); // #region 添加列 // var allClm = this.GetEntities(t => t.PAGE_TABLE_ID == oldpageTable, filter).ToList();//OPT所有列 // foreach (var col in allClm) // { // var oldColID = col.ID; // var newColumnID = Guid.NewGuid(); // if (tenantInfo.Columns.Any(x => x.SRC_ID == col.ID)) // { // var tenantColumn = tenantInfo.Columns.FirstOrDefault(x => x.SRC_ID == col.ID); // T_PF_COLUMN column = col;//OPT创建的表单 // column.SRC_ID = col.ID; // column.ID = tenantColumn.ID; // column.ORG_ID = tenantID; // column.PAGE_TABLE_ID = newTableID; // if (column.PAGE_TABLE_PANEL_ID != null) // { // column.PAGE_TABLE_PANEL_ID = newTablePanels[(Guid)column.PAGE_TABLE_PANEL_ID]; // } // savePermCloumn.Add(column);//添加列基础到对应租户 // newColumnID = tenantColumn.ID;//更新 // } // else // { // T_PF_COLUMN column = col;//OPT创建的表单 // column.SRC_ID = col.ID; // column.ID = newColumnID; // column.ORG_ID = tenantID; // column.PAGE_TABLE_ID = newTableID; // if (column.PAGE_TABLE_PANEL_ID != null) // { // column.PAGE_TABLE_PANEL_ID = newTablePanels[(Guid)column.PAGE_TABLE_PANEL_ID]; // } // savePermCloumn.Add(column);//添加列基础到对应租户 // } // #region T_PF_COLUMN_FILTER // var colFilters = srcInfo.ColumnFilters.Where(x => x.COLUMN_ID == oldColID); // foreach (var colFilter in colFilters) // { // if (tenantInfo.ColumnFilters.Any(x => x.SRC_ID == colFilter.ID)) // { // var tenantColumnFilters = tenantInfo.ColumnFilters.FirstOrDefault(x => x.SRC_ID == colFilter.ID); // var cf = colFilter; // cf.SRC_ID = colFilter.ID; // cf.ID = tenantColumnFilters.ID; // cf.COLUMN_ID = newColumnID; // saveColumFilters.Add(cf); // } // else // { // var colID = Guid.NewGuid(); // var cf = colFilter; // cf.SRC_ID = colFilter.ID; // cf.ID = colID; // cf.COLUMN_ID = newColumnID; // saveColumFilters.Add(cf); // } // } // #endregion // if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单 // { // var colForm = srcInfo.Forms.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault(); // if (!existForm.Contains(form.ID))//去重 // { // if (colForm != null) // { // if (tenantInfo.Forms.Any(x => x.SRC_ID == colForm.ID)) // { // var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == colForm.ID); // T_PF_FORM newForm = colForm;//OPT创建的表单 // AddTable(srcInfo, colForm, savePermPFForm, // savePermPageTable, saveTablePanels, saveTableParams, // saveColumFilters, savePermCloumn, // savePermPageEdit, saveEditPanels, saveEditColumns, // saveEditColumnFilters, saveEditColumnFillMaps, // saveEditColumnFillMapDs, // savePermPageTree, saveTreeColumns, // savePermPageChart, saveChartParams, // savePermPageCustom, // savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, // newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo); // newForm.SRC_ID = colForm.ID; // newForm.ID = tenantForm.ID; // newForm.ORG_ID = tenantID; // newForm.Nav_Org = null; // savePermPFForm.Add(newForm);//添加表单到对应租户 // } // else // { // var newFormID = Guid.NewGuid(); // T_PF_FORM newForm = colForm;//OPT创建的表单 // AddTable(srcInfo, colForm, savePermPFForm, // savePermPageTable, saveTablePanels, saveTableParams, // saveColumFilters, savePermCloumn, // savePermPageEdit, saveEditPanels, saveEditColumns, // saveEditColumnFilters, saveEditColumnFillMaps, // saveEditColumnFillMapDs, // savePermPageTree, saveTreeColumns, // savePermPageChart, saveChartParams, // savePermPageCustom, // savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, // newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo); // newForm.SRC_ID = colForm.ID; // newForm.ID = newFormID; // newForm.ORG_ID = tenantID; // newForm.Nav_Org = null; // savePermPFForm.Add(newForm);//添加表单到对应租户 // } // } // } // } // } // #endregion // #region 添加按钮 // var allBtn = this.GetEntities(t => t.PAGE_ID == oldpageTable, filter).ToList();//OPT所有列 // AddTableBtn(srcInfo, savePermPFForm, // savePermPageTable, saveTablePanels, saveTableParams, // saveColumFilters, savePermCloumn, // savePermPageEdit, saveEditPanels, saveEditColumns, // saveEditColumnFilters, saveEditColumnFillMaps, // saveEditColumnFillMapDs, // savePermPageTree, saveTreeColumns, // savePermPageChart, saveChartParams, // savePermPageCustom, // savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, // newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo); // #endregion // } //} #endregion } } } break; } case (int)PFFormTypeEnum.编辑表单: { #region 配置关联表单T_PF_FORM_RELATION var formRelations = srcInfo.FormRelations.Where(x => x.PAGE_FORM_ID == form.ID); if (formRelations.Any()) { foreach (var formRelation in formRelations) { T_PF_FORM_RELATION relation = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formRelation); if (tenantInfo.FormRelations.Any(x => x.SRC_ID == formRelation.ID)) { var tenantRelation = tenantInfo.FormRelations.FirstOrDefault(x => x.SRC_ID == formRelation.ID); var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID);//取旧数据ID不变 T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); //savePermPFForm.Add(newForm);//添加表单到对应租户 } } } relation.SRC_ID = formRelation.ID; relation.ID = tenantRelation.ID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; savePermPFFormRelation.Add(relation); } else { var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } var newRelationID = new Guid(); relation.SRC_ID = formRelation.ID; relation.ID = newRelationID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; addEntity.FormRelations.Add(relation); } } } #endregion #region 查询 AddQuerys(form, tenantID, pageFormID, srcInfo.FormQuerys, saveFormQuerys, srcInfo.Querys, saveQuerys, tenantInfo, addEntity); #endregion var resEdit = srcInfo.PageEdits.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resEdit.Count > 0) { foreach (var item in resEdit) { var oldpageEdit = item.ID; if (!existTable.Contains(oldpageEdit)) { existTable.Add(oldpageEdit); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageEdit, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #region 添加编辑列 //var allClm = this.GetEntities(t => t.PAGE_EDIT_ID == oldpageEdit, filter).ToList();//OPT所有列 var allClm = srcInfo.EditColumns.Where(t => t.PAGE_EDIT_ID == oldpageEdit).ToList(); foreach (var col in allClm) { var newColumnID = Guid.NewGuid(); var oldColID = col.ID; if (tenantInfo.EditColumns.Any(x => x.SRC_ID == col.ID)) { var tenantEditColumn = tenantInfo.EditColumns.FirstOrDefault(x => x.SRC_ID == col.ID); T_PF_EDIT_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = tenantEditColumn.ID; column.ORG_ID = tenantID; column.PAGE_EDIT_ID = newTableID; if (column.PAGE_EDIT_PANEL_ID != null) { column.PAGE_EDIT_PANEL_ID = newEditPanels[(Guid)column.PAGE_EDIT_PANEL_ID]; } saveEditColumns.Add(column);//添加列基础到对应租户 newColumnID = tenantEditColumn.ID;//更新 } else { T_PF_EDIT_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_EDIT_ID = newTableID; if (column.PAGE_EDIT_PANEL_ID != null) { column.PAGE_EDIT_PANEL_ID = newEditPanels[(Guid)column.PAGE_EDIT_PANEL_ID]; } addEntity.EditColumns.Add(column);//添加列基础到对应租户 } #region T_PF_EDIT_COLUMN_FILTER var colFilters = srcInfo.EditColumnFilters.Where(x => x.EDIT_COLUMN_ID == oldColID); foreach (var colFilter in colFilters) { if (tenantInfo.EditColumnFilters.Any(x => x.SRC_ID == colFilter.ID)) { var tenantEditColumnFilter = tenantInfo.EditColumnFilters.FirstOrDefault(x => x.SRC_ID == colFilter.ID); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = tenantEditColumnFilter.ID; cf.ORG_ID = tenantID; cf.PAGE_EDIT_ID = newTableID; cf.EDIT_COLUMN_ID = newColumnID; saveEditColumnFilters.Add(cf); } else { var colID = Guid.NewGuid(); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = colID; cf.ORG_ID = tenantID; cf.PAGE_EDIT_ID = newTableID; cf.EDIT_COLUMN_ID = newColumnID; addEntity.EditColumnFilters.Add(cf); } } #endregion #region T_PF_EDIT_COLUMN_FILL_MAP var colFillMaps = srcInfo.EditColumnFillMaps.Where(x => x.EDIT_COLUMN_ID == oldColID); foreach (var colFillMap in colFillMaps) { var colMapID = Guid.NewGuid(); if (tenantInfo.EditColumnFillMaps.Any(x => x.SRC_ID == colFillMap.ID)) { var tenantEditColumnFillMap = tenantInfo.EditColumnFillMaps.FirstOrDefault(x => x.SRC_ID == colFillMap.ID); var cm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMap); cm.SRC_ID = colFillMap.ID; cm.ID = tenantEditColumnFillMap.ID; cm.ORG_ID = tenantID; cm.PAGE_EDIT_ID = newTableID; cm.EDIT_COLUMN_ID = newColumnID; saveEditColumnFillMaps.Add(cm); colMapID = tenantEditColumnFillMap.ID; } else { var cm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMap); cm.SRC_ID = colFillMap.ID; cm.ID = colMapID; cm.ORG_ID = tenantID; cm.PAGE_EDIT_ID = newTableID; cm.EDIT_COLUMN_ID = newColumnID; addEntity.EditColumnFillMaps.Add(cm); } #region T_PF_EDIT_COLUMN_FILL_MAP var colFillMapDs = srcInfo.EditColumnFillMapDs.Where(x => x.EDIT_COLUMN_FILL_MAP_ID == colMapID); foreach (var colFillMapD in colFillMapDs) { if (tenantInfo.EditColumnFillMapDs.Any(x => x.SRC_ID == colFillMapD.ID)) { var tenantEditColumnFillMapD = tenantInfo.EditColumnFillMapDs.FirstOrDefault(x => x.SRC_ID == colFillMapD.ID); var cmd = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMapD); cmd.SRC_ID = colFillMapD.ID; cmd.ID = tenantEditColumnFillMapD.ID; cmd.ORG_ID = tenantID; cmd.EDIT_COLUMN_FILL_MAP_ID = colMapID; saveEditColumnFillMapDs.Add(cmd); } else { var colMapDID = Guid.NewGuid(); var cmd = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMapD); cmd.SRC_ID = colFillMapD.ID; cmd.ID = colMapDID; cmd.ORG_ID = tenantID; cmd.EDIT_COLUMN_FILL_MAP_ID = colMapID; addEntity.EditColumnFillMapDs.Add(cmd); } } #endregion } #endregion if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单 { var colForm = srcInfo.Forms.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault(); if (!existForm.Contains(form.ID) && !savePermPFForm.Any(x => x.CODE == colForm.CODE) && !addEntity.Forms.Any(x => x.CODE == colForm.CODE))//去重 { if (colForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == colForm.ID)) { var tenantColForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == colForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantColForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = tenantColForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } } } #endregion #region 添加按钮 // var allBtn = this.GetEntities(t => t.PAGE_ID == oldpageEdit, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldpageEdit).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } break; } case (int)PFFormTypeEnum.树形编辑页: case (int)PFFormTypeEnum.横向树编辑页: { #region 配置关联表单T_PF_FORM_RELATION var formRelations = srcInfo.FormRelations.Where(x => x.PAGE_FORM_ID == form.ID); if (formRelations.Any()) { foreach (var formRelation in formRelations) { T_PF_FORM_RELATION relation = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formRelation); if (tenantInfo.FormRelations.Any(x => x.SRC_ID == formRelation.ID)) { var tenantRelation = tenantInfo.FormRelations.FirstOrDefault(x => x.SRC_ID == formRelation.ID); var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID);//取旧数据ID不变 T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); //savePermPFForm.Add(newForm);//添加表单到对应租户 } } } relation.SRC_ID = formRelation.ID; relation.ID = tenantRelation.ID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; savePermPFFormRelation.Add(relation); } else { var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } var newRelationID = new Guid(); relation.SRC_ID = formRelation.ID; relation.ID = newRelationID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; addEntity.FormRelations.Add(relation); } } } #endregion #region 查询 AddQuerys(form, tenantID, pageFormID, srcInfo.FormQuerys, saveFormQuerys, srcInfo.Querys, saveQuerys, tenantInfo, addEntity); #endregion #region T_PF_PAGE_TREE var resTree = srcInfo.PageTrees.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resTree.Count > 0) { foreach (var item in resTree) { #region MyRegion 添加T_PF_PAGE_TABLE var oldPageID = item.ID; if (!existTable.Contains(oldPageID)) { existTable.Add(oldPageID); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageTree, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #endregion #region T_PF_TREE_COLUMN //var allClm = this.GetEntities(t => t.PAGE_TREE_ID == oldPageID, filter).ToList();//OPT所有列 var allClm = srcInfo.TreeColumns.Where(t => t.PAGE_TREE_ID == oldPageID).ToList(); foreach (var col in allClm) { var newColumnID = Guid.NewGuid(); T_PF_TREE_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 var oldColID = col.ID; if (tenantInfo.TreeColumns.Any(x => x.SRC_ID == col.ID)) { var tenantTreeColumn = tenantInfo.TreeColumns.FirstOrDefault(x => x.SRC_ID == col.ID); column.SRC_ID = col.ID; column.ID = tenantTreeColumn.ID; column.ORG_ID = tenantID; column.PAGE_TREE_ID = newTableID; saveTreeColumns.Add(column);//添加列基础到对应租户 } else { column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_TREE_ID = newTableID; addEntity.TreeColumns.Add(column); } } #endregion #region 添加按钮 // var allBtn = this.GetEntities(t => t.PAGE_ID == oldPageID, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldPageID).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } #endregion #region 编辑配置srcInfo.PageEdits var resEdit = srcInfo.PageEdits.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resEdit.Count > 0) { foreach (var item in resEdit) { var oldpageEdit = item.ID; if (!existTable.Contains(oldpageEdit)) { existTable.Add(oldpageEdit); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageEdit, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #region 添加编辑列 //var allClm = this.GetEntities(t => t.PAGE_EDIT_ID == oldpageEdit, filter).ToList();//OPT所有列 var allClm = srcInfo.EditColumns.Where(t => t.PAGE_EDIT_ID == oldpageEdit).ToList(); foreach (var col in allClm) { var newColumnID = Guid.NewGuid(); var oldColID = col.ID; if (tenantInfo.EditColumns.Any(x => x.SRC_ID == col.ID)) { var tenantEditColumn = tenantInfo.EditColumns.FirstOrDefault(x => x.SRC_ID == col.ID); T_PF_EDIT_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = tenantEditColumn.ID; column.ORG_ID = tenantID; column.PAGE_EDIT_ID = newTableID; if (column.PAGE_EDIT_PANEL_ID != null) { column.PAGE_EDIT_PANEL_ID = newEditPanels[(Guid)column.PAGE_EDIT_PANEL_ID]; } saveEditColumns.Add(column);//添加列基础到对应租户 newColumnID = tenantEditColumn.ID;//更新 } else { T_PF_EDIT_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_EDIT_ID = newTableID; if (column.PAGE_EDIT_PANEL_ID != null) { column.PAGE_EDIT_PANEL_ID = newEditPanels[(Guid)column.PAGE_EDIT_PANEL_ID]; } addEntity.EditColumns.Add(column);//添加列基础到对应租户 } #region T_PF_EDIT_COLUMN_FILTER var colFilters = srcInfo.EditColumnFilters.Where(x => x.EDIT_COLUMN_ID == oldColID); foreach (var colFilter in colFilters) { if (tenantInfo.EditColumnFilters.Any(x => x.SRC_ID == colFilter.ID)) { var tenantEditColumnFilter = tenantInfo.EditColumnFilters.FirstOrDefault(x => x.SRC_ID == colFilter.ID); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = tenantEditColumnFilter.ID; cf.ORG_ID = tenantID; cf.PAGE_EDIT_ID = newTableID; cf.EDIT_COLUMN_ID = newColumnID; saveEditColumnFilters.Add(cf); } else { var colID = Guid.NewGuid(); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = colID; cf.ORG_ID = tenantID; cf.PAGE_EDIT_ID = newTableID; cf.EDIT_COLUMN_ID = newColumnID; addEntity.EditColumnFilters.Add(cf); } } #endregion #region T_PF_EDIT_COLUMN_FILL_MAP var colFillMaps = srcInfo.EditColumnFillMaps.Where(x => x.EDIT_COLUMN_ID == oldColID); foreach (var colFillMap in colFillMaps) { var colMapID = Guid.NewGuid(); if (tenantInfo.EditColumnFillMaps.Any(x => x.SRC_ID == colFillMap.ID)) { var tenantEditColumnFillMap = tenantInfo.EditColumnFillMaps.FirstOrDefault(x => x.SRC_ID == colFillMap.ID); var cm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMap); cm.SRC_ID = colFillMap.ID; cm.ID = tenantEditColumnFillMap.ID; cm.ORG_ID = tenantID; cm.PAGE_EDIT_ID = newTableID; cm.EDIT_COLUMN_ID = newColumnID; saveEditColumnFillMaps.Add(cm); colMapID = tenantEditColumnFillMap.ID; } else { var cm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMap); cm.SRC_ID = colFillMap.ID; cm.ID = colMapID; cm.ORG_ID = tenantID; cm.PAGE_EDIT_ID = newTableID; cm.EDIT_COLUMN_ID = newColumnID; addEntity.EditColumnFillMaps.Add(cm); } #region T_PF_EDIT_COLUMN_FILL_MAP var colFillMapDs = srcInfo.EditColumnFillMapDs.Where(x => x.EDIT_COLUMN_FILL_MAP_ID == colMapID); foreach (var colFillMapD in colFillMapDs) { if (tenantInfo.EditColumnFillMapDs.Any(x => x.SRC_ID == colFillMapD.ID)) { var tenantEditColumnFillMapD = tenantInfo.EditColumnFillMapDs.FirstOrDefault(x => x.SRC_ID == colFillMapD.ID); var cmd = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMapD); cmd.SRC_ID = colFillMapD.ID; cmd.ID = tenantEditColumnFillMapD.ID; cmd.ORG_ID = tenantID; cmd.EDIT_COLUMN_FILL_MAP_ID = colMapID; saveEditColumnFillMapDs.Add(cmd); } else { var colMapDID = Guid.NewGuid(); var cmd = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMapD); cmd.SRC_ID = colFillMapD.ID; cmd.ID = colMapDID; cmd.ORG_ID = tenantID; cmd.EDIT_COLUMN_FILL_MAP_ID = colMapID; addEntity.EditColumnFillMapDs.Add(cmd); } } #endregion } #endregion if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单 { var colForm = srcInfo.Forms.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault(); if (!existForm.Contains(form.ID) && !savePermPFForm.Any(x => x.CODE == colForm.CODE) && !addEntity.Forms.Any(x => x.CODE == colForm.CODE))//去重 { if (colForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == colForm.ID)) { var tenantColForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == colForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantColForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = tenantColForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } } } #endregion #region 添加按钮 // var allBtn = this.GetEntities(t => t.PAGE_ID == oldpageEdit, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldpageEdit).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } #endregion break; } case (int)PFFormTypeEnum.图表表单: { #region 配置关联表单T_PF_FORM_RELATION var formRelations = srcInfo.FormRelations.Where(x => x.PAGE_FORM_ID == form.ID); if (formRelations.Any()) { foreach (var formRelation in formRelations) { T_PF_FORM_RELATION relation = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formRelation); if (tenantInfo.FormRelations.Any(x => x.SRC_ID == formRelation.ID)) { var tenantRelation = tenantInfo.FormRelations.FirstOrDefault(x => x.SRC_ID == formRelation.ID); var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID);//取旧数据ID不变 T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); //savePermPFForm.Add(newForm);//添加表单到对应租户 } } } relation.SRC_ID = formRelation.ID; relation.ID = tenantRelation.ID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; savePermPFFormRelation.Add(relation); } else { var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } var newRelationID = new Guid(); relation.SRC_ID = formRelation.ID; relation.ID = newRelationID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; addEntity.FormRelations.Add(relation); } } } #endregion #region 查询 AddQuerys(form, tenantID, pageFormID, srcInfo.FormQuerys, saveFormQuerys, srcInfo.Querys, saveQuerys, tenantInfo, addEntity); #endregion var resChart = srcInfo.PageCharts.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resChart.Count > 0) { foreach (var item in resChart) { #region MyRegion 添加T_PF_PAGE_TABLE var oldPageID = item.ID; if (!existTable.Contains(oldPageID)) { existTable.Add(oldPageID); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageChart, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #endregion #region 添加按钮 //var allBtn = this.GetEntities(t => t.PAGE_ID == oldPageID, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldPageID).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } break; } case (int)PFFormTypeEnum.自定义表单: { #region 配置关联表单T_PF_FORM_RELATION var formRelations = srcInfo.FormRelations.Where(x => x.PAGE_FORM_ID == form.ID); if (formRelations.Any()) { foreach (var formRelation in formRelations) { T_PF_FORM_RELATION relation = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formRelation); if (tenantInfo.FormRelations.Any(x => x.SRC_ID == formRelation.ID)) { var tenantRelation = tenantInfo.FormRelations.FirstOrDefault(x => x.SRC_ID == formRelation.ID); var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID);//取旧数据ID不变 T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); //savePermPFForm.Add(newForm);//添加表单到对应租户 } } } relation.SRC_ID = formRelation.ID; relation.ID = tenantRelation.ID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; savePermPFFormRelation.Add(relation); } else { var relationForm = srcInfo.Forms.Where(x => x.CODE == formRelation.CODE).FirstOrDefault(); if (!existForm.Contains(relationForm.ID) && !savePermPFForm.Any(x => x.CODE == relationForm.CODE) && !addEntity.Forms.Any(x => x.CODE == relationForm.CODE))//去重 { if (relationForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == relationForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == relationForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(relationForm);//OPT创建的表单 AddTable(srcInfo, relationForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = relationForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } var newRelationID = new Guid(); relation.SRC_ID = formRelation.ID; relation.ID = newRelationID; relation.ORG_ID = tenantID; relation.PAGE_FORM_ID = pageFormID; addEntity.FormRelations.Add(relation); } } } #endregion #region 查询 AddQuerys(form, tenantID, pageFormID, srcInfo.FormQuerys, saveFormQuerys, srcInfo.Querys, saveQuerys, tenantInfo, addEntity); #endregion #region srcInfo.PageCustoms var res = srcInfo.PageCustoms.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (res.Count > 0) { foreach (var item in res) { #region MyRegion 添加T_PF_PAGE_TABLE var oldFormId = form.ID; var tenantPageFormID = pageFormID.ToString(); var oldPageID = item.ID; if (!existTable.Contains(oldPageID)) { existTable.Add(oldPageID); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageCustom, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #endregion #region 添加按钮 //var allBtn = this.GetEntities(t => t.PAGE_ID == oldFormId, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldFormId).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity, tenantPageFormID); #endregion } } } #endregion #region srcInfo.PageTables var resTable = srcInfo.PageTables.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resTable.Count > 0) { foreach (var item in resTable) { var oldpageTable = item.ID; if (!existTable.Contains(oldpageTable)) { existTable.Add(oldpageTable); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageTable, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #region 添加列 //var allClm = this.GetEntities(t => t.PAGE_TABLE_ID == oldpageTable, filter).ToList();//OPT所有列 var allClm = srcInfo.Columns.Where(t => t.PAGE_TABLE_ID == oldpageTable).ToList(); foreach (var col in allClm) { var oldColID = col.ID; var newColumnID = Guid.NewGuid(); if (tenantInfo.Columns.Any(x => x.SRC_ID == col.ID)) { var tenantColumn = tenantInfo.Columns.FirstOrDefault(x => x.SRC_ID == col.ID); T_PF_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = tenantColumn.ID; column.ORG_ID = tenantID; column.PAGE_TABLE_ID = newTableID; if (column.PAGE_TABLE_PANEL_ID != null) { column.PAGE_TABLE_PANEL_ID = newTablePanels[(Guid)column.PAGE_TABLE_PANEL_ID]; } savePermCloumn.Add(column);//添加列基础到对应租户 newColumnID = tenantColumn.ID;//更新 } else { T_PF_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_TABLE_ID = newTableID; if (column.PAGE_TABLE_PANEL_ID != null) { column.PAGE_TABLE_PANEL_ID = newTablePanels[(Guid)column.PAGE_TABLE_PANEL_ID]; } addEntity.Columns.Add(column);//添加列基础到对应租户 } #region T_PF_COLUMN_FILTER var colFilters = srcInfo.ColumnFilters.Where(x => x.COLUMN_ID == oldColID); foreach (var colFilter in colFilters) { if (tenantInfo.ColumnFilters.Any(x => x.SRC_ID == colFilter.ID)) { var tenantColumnFilters = tenantInfo.ColumnFilters.FirstOrDefault(x => x.SRC_ID == colFilter.ID); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = tenantColumnFilters.ID; cf.ORG_ID = tenantID; cf.COLUMN_ID = newColumnID; saveColumFilters.Add(cf); } else { var colID = Guid.NewGuid(); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = colID; cf.ORG_ID = tenantID; cf.COLUMN_ID = newColumnID; addEntity.ColumnFilters.Add(cf); } } #endregion if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单 { var colForm = srcInfo.Forms.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault(); if (!existForm.Contains(form.ID) && !savePermPFForm.Any(x => x.CODE == colForm.CODE) && !addEntity.Forms.Any(x => x.CODE == colForm.CODE))//去重 { if (colForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == colForm.ID)) { var tenantForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == colForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = tenantForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } } } #endregion #region 添加按钮 //var allBtn = this.GetEntities(t => t.PAGE_ID == oldpageTable, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldpageTable).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } #endregion #region srcInfo.PageEdits var resEdit = srcInfo.PageEdits.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resEdit.Count > 0) { foreach (var item in resEdit) { var oldpageEdit = item.ID; if (!existTable.Contains(oldpageEdit)) { existTable.Add(oldpageEdit); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageEdit, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #region 添加编辑列 //var allClm = this.GetEntities(t => t.PAGE_EDIT_ID == oldpageEdit, filter).ToList();//OPT所有列 var allClm = srcInfo.EditColumns.Where(t => t.PAGE_EDIT_ID == oldpageEdit).ToList(); foreach (var col in allClm) { var newColumnID = Guid.NewGuid(); var oldColID = col.ID; if (tenantInfo.EditColumns.Any(x => x.SRC_ID == col.ID)) { var tenantEditColumn = tenantInfo.EditColumns.FirstOrDefault(x => x.SRC_ID == col.ID); T_PF_EDIT_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = tenantEditColumn.ID; column.ORG_ID = tenantID; column.PAGE_EDIT_ID = newTableID; if (column.PAGE_EDIT_PANEL_ID != null) { column.PAGE_EDIT_PANEL_ID = newEditPanels[(Guid)column.PAGE_EDIT_PANEL_ID]; } saveEditColumns.Add(column);//添加列基础到对应租户 newColumnID = tenantEditColumn.ID;//更新 } else { T_PF_EDIT_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_EDIT_ID = newTableID; if (column.PAGE_EDIT_PANEL_ID != null) { column.PAGE_EDIT_PANEL_ID = newEditPanels[(Guid)column.PAGE_EDIT_PANEL_ID]; } addEntity.EditColumns.Add(column);//添加列基础到对应租户 } #region T_PF_EDIT_COLUMN_FILTER var colFilters = srcInfo.EditColumnFilters.Where(x => x.EDIT_COLUMN_ID == oldColID); foreach (var colFilter in colFilters) { if (tenantInfo.EditColumnFilters.Any(x => x.SRC_ID == colFilter.ID)) { var tenantEditColumnFilter = tenantInfo.EditColumnFilters.FirstOrDefault(x => x.SRC_ID == colFilter.ID); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = tenantEditColumnFilter.ID; cf.ORG_ID = tenantID; cf.PAGE_EDIT_ID = newTableID; cf.EDIT_COLUMN_ID = newColumnID; saveEditColumnFilters.Add(cf); } else { var colID = Guid.NewGuid(); var cf = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFilter); cf.SRC_ID = colFilter.ID; cf.ID = colID; cf.ORG_ID = tenantID; cf.PAGE_EDIT_ID = newTableID; cf.EDIT_COLUMN_ID = newColumnID; addEntity.EditColumnFilters.Add(cf); } } #endregion #region T_PF_EDIT_COLUMN_FILL_MAP var colFillMaps = srcInfo.EditColumnFillMaps.Where(x => x.EDIT_COLUMN_ID == oldColID); foreach (var colFillMap in colFillMaps) { var colMapID = Guid.NewGuid(); if (tenantInfo.EditColumnFillMaps.Any(x => x.SRC_ID == colFillMap.ID)) { var tenantEditColumnFillMap = tenantInfo.EditColumnFillMaps.FirstOrDefault(x => x.SRC_ID == colFillMap.ID); var cm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMap); cm.SRC_ID = colFillMap.ID; cm.ID = tenantEditColumnFillMap.ID; cm.ORG_ID = tenantID; cm.PAGE_EDIT_ID = newTableID; cm.EDIT_COLUMN_ID = newColumnID; saveEditColumnFillMaps.Add(cm); colMapID = tenantEditColumnFillMap.ID; } else { var cm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMap); cm.SRC_ID = colFillMap.ID; cm.ID = colMapID; cm.ORG_ID = tenantID; cm.PAGE_EDIT_ID = newTableID; cm.EDIT_COLUMN_ID = newColumnID; addEntity.EditColumnFillMaps.Add(cm); } #region T_PF_EDIT_COLUMN_FILL_MAP var colFillMapDs = srcInfo.EditColumnFillMapDs.Where(x => x.EDIT_COLUMN_FILL_MAP_ID == colMapID); foreach (var colFillMapD in colFillMapDs) { if (tenantInfo.EditColumnFillMapDs.Any(x => x.SRC_ID == colFillMapD.ID)) { var tenantEditColumnFillMapD = tenantInfo.EditColumnFillMapDs.FirstOrDefault(x => x.SRC_ID == colFillMapD.ID); var cmd = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMapD); cmd.SRC_ID = colFillMapD.ID; cmd.ID = tenantEditColumnFillMapD.ID; cmd.ORG_ID = tenantID; cmd.EDIT_COLUMN_FILL_MAP_ID = colMapID; saveEditColumnFillMapDs.Add(cmd); } else { var colMapDID = Guid.NewGuid(); var cmd = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colFillMapD); cmd.SRC_ID = colFillMapD.ID; cmd.ID = colMapDID; cmd.ORG_ID = tenantID; cmd.EDIT_COLUMN_FILL_MAP_ID = colMapID; addEntity.EditColumnFillMapDs.Add(cmd); } } #endregion } #endregion if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单 { var colForm = srcInfo.Forms.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault(); if (!existForm.Contains(form.ID) && !savePermPFForm.Any(x => x.CODE == colForm.CODE) && !addEntity.Forms.Any(x => x.CODE == colForm.CODE))//去重 { if (colForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == colForm.ID)) { var tenantColForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == colForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantColForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = tenantColForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(colForm);//OPT创建的表单 AddTable(srcInfo, colForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = colForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm); } } } } } #endregion #region 添加按钮 //var allBtn = this.GetEntities(t => t.PAGE_ID == oldpageEdit, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldpageEdit).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } #endregion #region srcInfo.PageTrees var resTree = srcInfo.PageTrees.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resTree.Count > 0) { foreach (var item in resTree) { #region MyRegion 添加T_PF_PAGE_TABLE var oldPageID = item.ID; if (!existTable.Contains(oldPageID)) { existTable.Add(oldPageID); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageTree, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #endregion #region T_PF_TREE_COLUMN //var allClm = this.GetEntities(t => t.PAGE_TREE_ID == oldPageID, filter).ToList();//OPT所有列 var allClm = srcInfo.TreeColumns.Where(t => t.PAGE_TREE_ID == oldPageID).ToList(); foreach (var col in allClm) { var newColumnID = Guid.NewGuid(); T_PF_TREE_COLUMN column = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(col);//OPT创建的表单 var oldColID = col.ID; if (tenantInfo.TreeColumns.Any(x => x.SRC_ID == col.ID)) { var tenantTreeColumn = tenantInfo.TreeColumns.FirstOrDefault(x => x.SRC_ID == col.ID); column.SRC_ID = col.ID; column.ID = tenantTreeColumn.ID; column.ORG_ID = tenantID; column.PAGE_TREE_ID = newTableID; saveTreeColumns.Add(column);//添加列基础到对应租户 } else { column.SRC_ID = col.ID; column.ID = newColumnID; column.ORG_ID = tenantID; column.PAGE_TREE_ID = newTableID; addEntity.TreeColumns.Add(column); } } #endregion #region 添加按钮 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldPageID).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } #endregion #region srcInfo.PageCharts var resChart = srcInfo.PageCharts.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单 if (resChart.Count > 0) { foreach (var item in resChart) { #region MyRegion 添加T_PF_PAGE_TABLE var oldPageID = item.ID; if (!existTable.Contains(oldPageID)) { existTable.Add(oldPageID); var newTableID = AddPageTable(item, pageFormID, tenantID, savePermPageChart, newSchemes, saveTablePanels, saveTableParams, newTablePanels, saveEditPanels, newEditPanels, saveChartParams, tenantInfo, srcInfo, addEntity); #endregion #region 添加按钮 //var allBtn = this.GetEntities(t => t.PAGE_ID == oldPageID, filter).ToList();//OPT所有列 var allBtn = srcInfo.Btns.Where(x => x.PAGE_ID == oldPageID).ToList(); AddTableBtn(srcInfo, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, existForm, existTable, allBtn, newTableID, tenantInfo, addEntity); #endregion } } } #endregion break; } default: { break; } } } public class TenantInfo { public List FormRelations { get; set; } public List Forms { get; set; } public List PageTables { get; set; } public List PageEdits { get; set; } public List PageTrees { get; set; } public List PageCharts { get; set; } public List PageCustoms { get; set; } public List Btns { get; set; } public List Columns { get; set; } public List TablePanels { get; set; } public List TableParams { get; set; } public List EditPanels { get; set; } public List EditColumns { get; set; } public List EditColumnFilters { get; set; } public List EditColumnFillMaps { get; set; } public List EditColumnFillMapDs { get; set; } public List TreeColumns { get; set; } public List ChartParams { get; set; } public List ColumnFilters { get; set; } public List Querys { get; set; } public List FormQuerys { get; set; } public Dictionary DicPageTable { get; set; } public Dictionary DicPageTableRelation { get; set; } public Dictionary DicForm { get; set; } } public TreeNode selectNode(TreeNode treeNode, string checkKey) { if (treeNode.Node.ID == new Guid(checkKey)) { return treeNode; } else { TreeNode checkNode = null; foreach (var item in treeNode.Children) { checkNode = selectNode(item, checkKey); if (checkNode != null) { return checkNode; } } return checkNode; } } public Guid AddPageTable(T tableType, Guid pageFormID, Guid tenantID, List savePermPageTable, Dictionary newSchemes, List saveTablePanels, List saveTableParams, Dictionary newTablePanels, List saveEditPanels, Dictionary newEditPanels, List saveChartParams, TenantInfo tenantInfo, TenantInfo srcInfo, TenantInfo addEntity) where T : class { var newTableID = Guid.NewGuid(); if (tableType is T_PF_PAGE_TABLE) { T_PF_PAGE_TABLE pageTable = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableType as T_PF_PAGE_TABLE);//OPT创建的表单 var schemesId = pageTable.PARAM_SCHEME_ID; var oldPageId = pageTable.ID; (tableType as T_PF_PAGE_TABLE).PAGE_FORM_ID = pageFormID; if (pageTable.PARENT_ID != null) { tenantInfo.DicPageTable.Add(oldPageId.ToString(), pageTable.PARENT_ID); } if (tenantInfo.PageTables.Any(x => x.SRC_ID == pageTable.ID)) { var tenantPageTable = tenantInfo.PageTables.FirstOrDefault(x => x.SRC_ID == pageTable.ID); (tableType as T_PF_PAGE_TABLE).SRC_ID = pageTable.ID; (tableType as T_PF_PAGE_TABLE).ID = tenantPageTable.ID; (tableType as T_PF_PAGE_TABLE).ORG_ID = tenantID; if (pageTable.PARAM_SCHEME_ID != null) { (tableType as T_PF_PAGE_TABLE).PARAM_SCHEME_ID = newSchemes[(Guid)schemesId];//参数更新 } savePermPageTable.Add(tableType);//添加表基础到对应租户 newTableID = tenantPageTable.ID;//存在更新成原来的 } else { (tableType as T_PF_PAGE_TABLE).SRC_ID = pageTable.ID; (tableType as T_PF_PAGE_TABLE).ID = newTableID; (tableType as T_PF_PAGE_TABLE).ORG_ID = tenantID; if (pageTable.PARAM_SCHEME_ID != null) { (tableType as T_PF_PAGE_TABLE).PARAM_SCHEME_ID = newSchemes[(Guid)schemesId];//参数更新 } //savePermPageTable.Add(tableType);//添加表基础到对应租户 addEntity.PageTables.Add((tableType as T_PF_PAGE_TABLE)); } #region T_PF_PAGE_TABLE_PANEL 页面列表区域 var tablePanels = srcInfo.TablePanels.Where(x => x.PAGE_TABLE_ID == oldPageId); foreach (var tablePanel in tablePanels) { if (tenantInfo.TablePanels.Any(x => x.SRC_ID == tablePanel.ID)) { var tenantTablePanel = tenantInfo.TablePanels.FirstOrDefault(x => x.SRC_ID == tablePanel.ID); var tp = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tablePanel); var oldID = tablePanel.ID; tp.SRC_ID = tablePanel.ID; tp.ORG_ID = tenantID; tp.ID = tenantTablePanel.ID; tp.PAGE_TABLE_ID = newTableID; saveTablePanels.Add(tp); newTablePanels.Add(oldID, tenantTablePanel.ID); } else { var tpID = Guid.NewGuid(); var tp = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tablePanel); var oldID = tablePanel.ID; tp.SRC_ID = tablePanel.ID; tp.ID = tpID; tp.ORG_ID = tenantID; tp.PAGE_TABLE_ID = newTableID; addEntity.TablePanels.Add(tp); newTablePanels.Add(oldID, tpID); } } #endregion #region T_PF_TABLE_PARAMS var tableParams = srcInfo.TableParams.Where(x => x.PAGE_TABLE_ID == schemesId); foreach (var tableParam in tableParams) { if (tenantInfo.TableParams.Any(x => x.SRC_ID == tableParam.ID)) { var tenantTableParam = tenantInfo.TableParams.FirstOrDefault(x => x.SRC_ID == tableParam.ID); var tp = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableParam); tp.SRC_ID = tableParam.ID; tp.ID = tenantTableParam.ID; tp.ORG_ID = tenantID; tp.PAGE_TABLE_ID = newTableID; saveTableParams.Add(tp); } else { var tpID = Guid.NewGuid(); var tp = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableParam); tp.SRC_ID = tableParam.ID; tp.ID = tpID; tp.ORG_ID = tenantID; tp.PAGE_TABLE_ID = newTableID; addEntity.TableParams.Add(tp); } } #endregion tenantInfo.DicPageTableRelation.Add(oldPageId.ToString(), newTableID.ToString()); } if (tableType is T_PF_PAGE_EDIT) { T_PF_PAGE_EDIT pageEdit = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableType as T_PF_PAGE_EDIT);//OPT创建的表单 var schemesId = pageEdit.PARAM_SCHEME_ID; var oldPageId = pageEdit.ID; if (pageEdit.PARENT_ID != null) { tenantInfo.DicPageTable.Add(oldPageId.ToString(), pageEdit.PARENT_ID); } (tableType as T_PF_PAGE_EDIT).PAGE_FORM_ID = pageFormID; if (tenantInfo.PageEdits.Any(x => x.SRC_ID == pageEdit.ID)) { var tenantEditTable = tenantInfo.PageEdits.FirstOrDefault(x => x.SRC_ID == pageEdit.ID); (tableType as T_PF_PAGE_EDIT).SRC_ID = pageEdit.ID; (tableType as T_PF_PAGE_EDIT).ID = tenantEditTable.ID; (tableType as T_PF_PAGE_EDIT).ORG_ID = tenantID; (tableType as T_PF_PAGE_EDIT).Nav_PageForm = null; if (pageEdit.PARAM_SCHEME_ID != null) { (tableType as T_PF_PAGE_EDIT).PARAM_SCHEME_ID = newSchemes[(Guid)schemesId];//参数更新 } savePermPageTable.Add(tableType);//添加表基础到对应租户 newTableID = tenantEditTable.ID;//存在更新成原来的 } else { (tableType as T_PF_PAGE_EDIT).SRC_ID = pageEdit.ID; (tableType as T_PF_PAGE_EDIT).ID = newTableID; (tableType as T_PF_PAGE_EDIT).ORG_ID = tenantID; (tableType as T_PF_PAGE_EDIT).Nav_PageForm = null; if (pageEdit.PARAM_SCHEME_ID != null) { (tableType as T_PF_PAGE_EDIT).PARAM_SCHEME_ID = newSchemes[(Guid)schemesId];//参数更新 } //savePermPageTable.Add(tableType);//添加表基础到对应租户 addEntity.PageEdits.Add((tableType as T_PF_PAGE_EDIT)); } #region T_PF_PAGE_EDIT_PANEL var editPanels = srcInfo.EditPanels.Where(x => x.PAGE_EDIT_ID == oldPageId); foreach (var editPanel in editPanels) { if (tenantInfo.EditPanels.Any(x => x.SRC_ID == editPanel.ID)) { var tenantEditPanel = tenantInfo.EditPanels.FirstOrDefault(x => x.SRC_ID == editPanel.ID); var ep = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(editPanel); var oldID = editPanel.ID; ep.SRC_ID = editPanel.ID; ep.ID = tenantEditPanel.ID; ep.ORG_ID = tenantID; ep.PAGE_EDIT_ID = newTableID; saveEditPanels.Add(ep); newEditPanels.Add(oldID, tenantEditPanel.ID); } else { var epID = Guid.NewGuid(); var ep = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(editPanel); var oldID = editPanel.ID; ep.SRC_ID = editPanel.ID; ep.ID = epID; ep.ORG_ID = tenantID; ep.PAGE_EDIT_ID = newTableID; addEntity.EditPanels.Add(ep); newEditPanels.Add(oldID, epID); } } #endregion tenantInfo.DicPageTableRelation.Add(oldPageId.ToString(), newTableID.ToString()); } if (tableType is T_PF_PAGE_TREE) { T_PF_PAGE_TREE pageTree = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableType as T_PF_PAGE_TREE);//OPT创建的表单 (tableType as T_PF_PAGE_TREE).PAGE_FORM_ID = pageFormID; if (tenantInfo.PageTrees.Any(x => x.SRC_ID == pageTree.ID)) { var tenantPageTree = tenantInfo.PageTrees.FirstOrDefault(x => x.SRC_ID == pageTree.ID); (tableType as T_PF_PAGE_TREE).SRC_ID = pageTree.ID; (tableType as T_PF_PAGE_TREE).ID = tenantPageTree.ID; (tableType as T_PF_PAGE_TREE).ORG_ID = tenantID; savePermPageTable.Add(tableType);//添加表基础到对应租户 newTableID = tenantPageTree.ID;//存在更新成原来的 } else { (tableType as T_PF_PAGE_TREE).SRC_ID = pageTree.ID; (tableType as T_PF_PAGE_TREE).ID = newTableID; (tableType as T_PF_PAGE_TREE).ORG_ID = tenantID; //savePermPageTable.Add(tableType);//添加表基础到对应租户 addEntity.PageTrees.Add((tableType as T_PF_PAGE_TREE)); } } if (tableType is T_PF_PAGE_CHART) { T_PF_PAGE_CHART pageChart = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableType as T_PF_PAGE_CHART);//OPT创建的表单 var oldChartId = pageChart.ID; (tableType as T_PF_PAGE_CHART).PAGE_FORM_ID = pageFormID; if (tenantInfo.PageCharts.Any(x => x.SRC_ID == pageChart.ID)) { var tenantPageChart = tenantInfo.PageCharts.FirstOrDefault(x => x.SRC_ID == pageChart.ID); (tableType as T_PF_PAGE_CHART).SRC_ID = pageChart.ID; (tableType as T_PF_PAGE_CHART).ID = tenantPageChart.ID; (tableType as T_PF_PAGE_CHART).ORG_ID = tenantID; savePermPageTable.Add(tableType);//添加表基础到对应租户 newTableID = tenantPageChart.ID;//存在更新成原来的 } else { (tableType as T_PF_PAGE_CHART).SRC_ID = pageChart.ID; (tableType as T_PF_PAGE_CHART).ID = newTableID; (tableType as T_PF_PAGE_CHART).ORG_ID = tenantID; //savePermPageTable.Add(tableType);//添加表基础到对应租户 addEntity.PageCharts.Add((tableType as T_PF_PAGE_CHART)); } #region T_PF_PAGE_CHART_PARAM var chartParams = srcInfo.ChartParams.Where(x => x.PAGE_CHART_ID == oldChartId); foreach (var chartParam in chartParams) { if (tenantInfo.ChartParams.Any(x => x.SRC_ID == chartParam.ID)) { var tenantChartParam = tenantInfo.ChartParams.FirstOrDefault(x => x.SRC_ID == chartParam.ID); var cp = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(chartParam); cp.SRC_ID = chartParam.ID; cp.ID = tenantChartParam.ID; cp.ORG_ID = tenantID; cp.PAGE_CHART_ID = newTableID; saveChartParams.Add(cp); } else { var cpID = Guid.NewGuid(); var cp = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(chartParam); cp.SRC_ID = chartParam.ID; cp.ID = cpID; cp.ORG_ID = tenantID; cp.PAGE_CHART_ID = newTableID; addEntity.ChartParams.Add(cp); } } #endregion } if (tableType is T_PF_PAGE_CUSTOM) { T_PF_PAGE_CUSTOM pageCustom = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(tableType as T_PF_PAGE_CUSTOM);//OPT创建的表单 (tableType as T_PF_PAGE_CUSTOM).PAGE_FORM_ID = pageFormID; if (tenantInfo.PageCustoms.Any(x => x.SRC_ID == pageCustom.ID)) { var tenantPageCustom = tenantInfo.PageCustoms.FirstOrDefault(x => x.SRC_ID == pageCustom.ID); (tableType as T_PF_PAGE_CUSTOM).SRC_ID = pageCustom.ID; (tableType as T_PF_PAGE_CUSTOM).ID = tenantPageCustom.ID; (tableType as T_PF_PAGE_CUSTOM).ORG_ID = tenantID; savePermPageTable.Add(tableType);//添加表基础到对应租户 newTableID = tenantPageCustom.ID;//存在更新成原来的 } else { (tableType as T_PF_PAGE_CUSTOM).SRC_ID = pageCustom.ID; (tableType as T_PF_PAGE_CUSTOM).ID = newTableID; (tableType as T_PF_PAGE_CUSTOM).ORG_ID = tenantID; //savePermPageTable.Add(tableType);//添加表基础到对应租户 addEntity.PageCustoms.Add((tableType as T_PF_PAGE_CUSTOM)); } } return newTableID; } public void AddQuerys(T_PF_FORM form, Guid tenantID, Guid pageFormID, IEnumerable optFormQuerys, List saveFormQuerys, IEnumerable optQuerys, List saveQuerys, TenantInfo tenantInfo, TenantInfo addEntity) { var formQuerys = optFormQuerys.Where(x => x.PAGE_FORM_ID == form.ID); foreach (var formQuery in formQuerys) { if (tenantInfo.FormQuerys.Any(x => x.SRC_ID == formQuery.ID)) { var tenantFormQuery = tenantInfo.FormQuerys.FirstOrDefault((x => x.SRC_ID == formQuery.ID)); T_PF_FORM_QUERY formquery = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formQuery);//OPT创建的表单 var oldformQueryID = formQuery.ID; formquery.SRC_ID = formQuery.ID; formquery.ID = tenantFormQuery.ID; formquery.ORG_ID = tenantID; formquery.PAGE_FORM_ID = pageFormID; saveFormQuerys.Add(formquery);//添加列基础到对应租户 var querys = optQuerys.Where(x => x.PAGE_FORM_QUERY_ID == oldformQueryID); foreach (var query in querys) { if (tenantInfo.Querys.Any(x => x.SRC_ID == query.ID)) { var tenantQuery = tenantInfo.Querys.FirstOrDefault(x => x.SRC_ID == query.ID); T_PF_QUERY queryInfo = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(query);//OPT创建的表单 queryInfo.SRC_ID = query.ID; queryInfo.ID = tenantQuery.ID; queryInfo.ORG_ID = tenantID; queryInfo.PAGE_FORM_ID = pageFormID; queryInfo.PAGE_FORM_QUERY_ID = tenantFormQuery.ID; saveQuerys.Add(queryInfo);//添加列基础到对应租户 } else { var newQueryID = Guid.NewGuid(); T_PF_QUERY queryInfo = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(query);//OPT创建的表单 queryInfo.SRC_ID = query.ID; queryInfo.ID = newQueryID; queryInfo.ORG_ID = tenantID; queryInfo.PAGE_FORM_ID = pageFormID; queryInfo.PAGE_FORM_QUERY_ID = tenantFormQuery.ID; addEntity.Querys.Add(queryInfo);//添加列基础到对应租户 } } } else { var newFormQueryID = Guid.NewGuid(); T_PF_FORM_QUERY formquery = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(formQuery);//OPT创建的表单 var oldformQueryID = formQuery.ID; formquery.SRC_ID = formQuery.ID; formquery.ID = newFormQueryID; formquery.ORG_ID = tenantID; formquery.PAGE_FORM_ID = pageFormID; addEntity.FormQuerys.Add(formquery);//添加列基础到对应租户 var querys = optQuerys.Where(x => x.PAGE_FORM_QUERY_ID == oldformQueryID); foreach (var query in querys) { var newQueryID = Guid.NewGuid(); T_PF_QUERY queryInfo = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(query);//OPT创建的表单 queryInfo.SRC_ID = query.ID; queryInfo.ID = newQueryID; queryInfo.ORG_ID = tenantID; queryInfo.PAGE_FORM_ID = pageFormID; queryInfo.PAGE_FORM_QUERY_ID = newFormQueryID; addEntity.Querys.Add(queryInfo); } } } } public void AddTableBtn(TenantInfo srcInfo, List savePermPFForm, List savePermPageTable, List saveTablePanels, List saveTableParams, List saveColumFilters, List savePermCloumn, List savePermPageEdit, List saveEditPanels, List saveEditColumns, List saveEditColumnFilters, List saveEditColumnFillMaps, List saveEditColumnFillMapDs, List savePermPageTree, List saveTreeColumns, List savePermPageChart, List saveChartParams, List savePermPageCustom, List savePermBtn, List saveFormQuerys, List saveQuerys, List savePermPFFormRelation, Dictionary newSchemes, Dictionary newTablePanels, Dictionary newEditPanels, Guid tenantID, List existForm, List existTable, List allBtn, Guid newTableID, TenantInfo tenantInfo, TenantInfo addEntity, string formId = "") { foreach (var btn in allBtn) { var newBtnID = Guid.NewGuid(); T_PF_BTN button = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(btn);//OPT创建的表单 if (tenantInfo.Btns.Any(x => x.SRC_ID == btn.ID)) { var tenantBtn = tenantInfo.Btns.FirstOrDefault(x => x.SRC_ID == btn.ID); button.SRC_ID = btn.ID; button.ID = tenantBtn.ID; button.ORG_ID = tenantID; if (formId != "") { button.PAGE_ID = new Guid(formId); } else { button.PAGE_ID = newTableID; } if (button.PAGE_TABLE_ID != null) { button.PAGE_TABLE_ID = newTableID; } if (button.PAGE_EDIT_ID != null) { button.PAGE_EDIT_ID = newTableID; } if (button.PAGE_CUSTOM_FORM_ID != null) { // button.PAGE_CUSTOM_FORM_ID = newTableID; button.PAGE_CUSTOM_FORM_ID = new Guid(formId); } savePermBtn.Add(button);//添加列基础到对应租户 newBtnID = tenantBtn.ID; } else { button.SRC_ID = btn.ID; button.ID = newBtnID; button.ORG_ID = tenantID; if (formId != "") { button.PAGE_ID = new Guid(formId); } else { button.PAGE_ID = newTableID; } if (button.PAGE_TABLE_ID != null) { button.PAGE_TABLE_ID = newTableID; } if (button.PAGE_EDIT_ID != null) { button.PAGE_EDIT_ID = newTableID; } if (button.PAGE_CUSTOM_FORM_ID != null) { // button.PAGE_CUSTOM_FORM_ID = newTableID; button.PAGE_CUSTOM_FORM_ID = new Guid(formId); } addEntity.Btns.Add(button);//添加列基础到对应租户 } if (!string.IsNullOrEmpty(btn.FORM_CODE))//有配置关联表单 { //var btnForm = t_PF_FORMs.Where(x => x.CODE == btn.FORM_CODE).FirstOrDefault(); // var btnForm = this.GetEntities(null, filter).FirstOrDefault(x => x.CODE == btn.FORM_CODE); var btnForm = srcInfo.Forms.FirstOrDefault(x => x.CODE == btn.FORM_CODE); if (btnForm != null) { if (tenantInfo.Forms.Any(x => x.SRC_ID == btnForm.ID)) { var tenantBtnForm = tenantInfo.Forms.FirstOrDefault(x => x.SRC_ID == btnForm.ID); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(btnForm);//OPT创建的表单 if (!existForm.Contains(newForm.ID) && !savePermPFForm.Any(x => x.CODE == newForm.CODE) && !addEntity.Forms.Any(x => x.CODE == newForm.CODE)) { AddTable(srcInfo, btnForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, tenantBtnForm.ID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = btnForm.ID; newForm.ID = tenantBtnForm.ID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; savePermPFForm.Add(newForm);//添加表单到对应租户 } } else { var newFormID = Guid.NewGuid(); T_PF_FORM newForm = APT.Infrastructure.Core.CloneExtends.DeepCloneObject(btnForm);//OPT创建的表单 if (!existForm.Contains(newForm.ID) && !savePermPFForm.Any(x => x.CODE == newForm.CODE) && !addEntity.Forms.Any(x => x.CODE == newForm.CODE)) { AddTable(srcInfo, btnForm, savePermPFForm, savePermPageTable, saveTablePanels, saveTableParams, saveColumFilters, savePermCloumn, savePermPageEdit, saveEditPanels, saveEditColumns, saveEditColumnFilters, saveEditColumnFillMaps, saveEditColumnFillMapDs, savePermPageTree, saveTreeColumns, savePermPageChart, saveChartParams, savePermPageCustom, savePermBtn, saveFormQuerys, saveQuerys, savePermPFFormRelation, newSchemes, newTablePanels, newEditPanels, tenantID, newFormID, existForm, existTable, tenantInfo, addEntity); newForm.SRC_ID = btnForm.ID; newForm.ID = newFormID; newForm.ORG_ID = tenantID; newForm.Nav_Org = null; addEntity.Forms.Add(newForm);//添加表单到对应租户 } } } } } } } }