using APT.BaseData.Domain.ApiModel.FM; using APT.BaseData.Domain.ApiModel.Platform; using APT.BaseData.Domain.Entities; using APT.BaseData.Domain.Entities.BD; 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.Api.Redis; using APT.Infrastructure.Core; using APT.Migrations; using APT.Utility; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using APT.Infrastructure.Api; namespace APT.OP.WebApi.Controllers.Api { [Route("api/OP/TenantRole")] public class TenantRoleController : AuthorizeApiController { [HttpPost, Route("Update")] public JsonActionResult Update([FromBody] T_OP_TENANT tenant) { return SafeExecute(() => { var orgFilter = new BaseFilter(); orgFilter.IgnoreOrgRule = true; #region 租户 //T_FM_ORGANIZATION org = null; bool isupdate = false; #endregion #region 授权数据 var permOPMenu = this.GetEntities(x => x.TENANT_ID == tenant.ID, orgFilter).ToList();//租户权限 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; T_FM_BASE_CONFIG tenantBaseConfig = null;//站点参数 List tenantEnumType = null;//枚举类别 List tenantEnum = null;//枚举管理 List tenantEnumItem = null; List tenantImportConfigs = null;//导入配置 List tenantImportConfigDetails = null;//导入配置 明细 List tenantImportConfigFields = null;//导入配置 明细 字段 List tenantPictures = null;//图片资源 List tenantFiles = null;//文件 List tenantImgFiles = null;// 图片文件 List tenantImgFileDetails = null;//图片文件明细 List tenantPicFiles = null; //资源图片文件 List tenantPicFilters = null; List tenantPicFilterDetails = null; List tenantDataFrequency = null;//数据采集频率 #endregion #region 下发指定数据库 var targetDB = this.GetEntity(x => x.ID == tenant.DB_CONN_ID, orgFilter); if (targetDB != null && !string.IsNullOrEmpty(targetDB.DB_CONN)) { var deleteFilter = new BaseFilter();//OPT创建的菜单,表单等 deleteFilter.IgnoreOrgRule = true; deleteFilter.Level = -1; deleteFilter.IsParentData = true; var Conn = targetDB.DB_CONN; using (var context = new MigrationContext(Conn)) { List reslist = new List(); tenantMenuTrees = context.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.ORG_ID == tenant.ID && x.PLATFORM_CATEGORY == 0, deleteFilter, null, out reslist); //org = context.GetEntities(x => x.ID == tenant.ID, null).FirstOrDefault(); #region 授权数据 tenantMenus = context.GetEntities(x => x.ORG_ID == tenant.ID, null, false).ToList();//租户菜单 tenantForms = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList();//租户表单 tenantFormRelations = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList();//表单关联 tenantPageTables = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPageEdits = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPageTrees = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPageCharts = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPageCustoms = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantBtns = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantColumns = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPageTablePanels = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantTableParams = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); ; tenantPageEditPanels = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEditColumns = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEditColumnFilters = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEditColumnFillMaps = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEditColumnFillMapDs = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantTreeColumns = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPageChartParams = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantColumnFilters = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantQuerys = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantFormQuerys = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantCodeRules = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantSyncTasks = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantParamItems = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantParamSchemes = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantParamSchemeDetails = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantVersionManages = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantUser = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantRole = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantUserBelongRole = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEnumType = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEnum = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantEnumItem = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantPictures = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantFiles = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList();//文件 tenantImgFiles = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList();// 图片文件 tenantImgFileDetails = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList();//图片文件明细 tenantPicFiles = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); //资源图片文件 tenantPicFilters = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList();//图片条件主表 tenantPicFilterDetails = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); //图片条件明细表 tenantDataFrequency = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantBaseConfig = context.GetEntity(x => x.ORG_ID == tenant.ID, null); tenantImportConfigs = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantImportConfigDetails = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); tenantImportConfigFields = context.GetEntities(x => x.ORG_ID == tenant.ID, null).ToList(); #endregion } } #endregion #region 删除权限 var deletePermOPMenu = new List(); var deletePermPFMenu = new List(); #endregion #region 增加权限 var savePermOPMenu = 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 addCodeRules = new List(); var saveSyncTasks = new List(); var addSyncTasks = new List(); //var saveBaseConfig = new List(); //var addBaseConfig = new T_FM_BASE_CONFIG(); var saveVersions = new List(); var saveParamItems = new List(); var addParamItems = new List(); var saveParamSchemes = new List(); var addParamSchemes = new List(); var saveParamSchemeDetails = new List(); var addParamSchemeDetails = new List(); var saveUser = new List(); var saveRole = new List(); var saveUserBelongRole = new List(); var addEnumType = new List(); var saveEnumType = new List(); var addEnum = new List(); var saveEnum = new List(); var savePictures = new List();//图片 var addPictures = new List(); var saveFiles = new List(); var addFiles = new List(); var saveImgFiles = new List(); var addImgFiles = new List(); var saveImgFileDetails = new List(); var addImgFileDetails = new List(); var savePicFiles = new List(); var addPicFiles = new List(); var savePicFilters = new List();//图片 var addPicFilters = new List(); var savePicFilterDetails = new List(); var addPicFilterDetails = new List(); var saveImportConfigs = new List(); var addImportConfigs = new List(); var saveImportConfigDetails = new List(); var addImportConfigDetails = new List(); var saveImportConfigFields = new List(); var addImportConfigFields = new List(); List addDataFrequency = new List(); List addEnumItem = new List(); List saveEnumItem = 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(); var dicMenu = new Dictionary(); #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; T_FM_BASE_CONFIG srcBaseConfig = null; List srcEnumType = null; List srcEnum = null; List srcImportConfigs = null;//导入配置 List srcImportConfigDetails = null;//导入配置 明细 List srcImportConfigFields = null;//导入配置 明细 字段 List srcPictures = null; List srcFiles = null;//文件 List srcImgFiles = null;// 图片文件 List srcImgFileDetails = null;//图片文件明细 List srcPicFiles = null; //资源图片文件 List srcPicFilters = null; List srcPicFilterDetails = null; List srcDataFrequency = null; List srcEnumItem = null; var tenantTemplate = this.GetEntity(x => x.ID == tenant.TEMPLATE_ID, orgFilter); var srcDB = this.GetEntity(x => x.ID == tenantTemplate.DB_CONN_ID, orgFilter); if (srcDB != null && !string.IsNullOrEmpty(srcDB.DB_CONN)) { var Conn = srcDB.DB_CONN; using (var context = new MigrationContext(Conn)) { #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 == tenant.TEMPLATE_ID && x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, srcfilter, null, out reslist, false); srcMenus = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID && x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, null, false).ToList();//能管菜单 //srcMenus = context.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用&& x.ORG_ID == tenant.TEMPLATE_ID, srcfilter, null, out reslist).Select(i=>i.Node).ToList(); srcEcpMenus = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID && x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.PLATFORM_CATEGORY == 1, null, false).ToList();//企业平台菜单 srcForms = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList();//租户表单 srcFormRelations = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList();//表单关联 srcPageTables = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPageEdits = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPageTrees = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPageCharts = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPageCustoms = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcBtns = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcColumns = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPageTablePanels = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcTableParams = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); ; srcPageEditPanels = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcEditColumns = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcEditColumnFilters = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcEditColumnFillMaps = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcEditColumnFillMapDs = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcTreeColumns = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPageChartParams = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcColumnFilters = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcQuerys = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcFormQuerys = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcCodeRules = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcSyncTasks = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcParamItems = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcParamSchemes = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcParamSchemeDetails = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcVersionManages = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcBaseConfig = context.GetEntity(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false); srcEnumType = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcEnum = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPictures = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcFiles = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcImgFiles = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcImgFileDetails = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPicFiles = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPicFilters = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcPicFilterDetails = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcDataFrequency = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcEnumItem = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcImportConfigs = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcImportConfigDetails = context.GetEntities(x => x.ORG_ID == tenant.TEMPLATE_ID, null, false).ToList(); srcImportConfigFields = context.GetEntities(x => x.ORG_ID == tenant.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(); List existForm = new List(); List existTable = new List(); List existPermForm = new List(); if (tenant.CheckKeys.Count > 0) { #region 默认添加企业平台所有菜单功能 foreach (var ecpMenu in srcEcpMenus) { tenant.CheckKeys.Add(ecpMenu.ID.ToString()); } #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 系统参数模板 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 = tenant.ID; newItems.Add(oldItenID, newItemID); addParamItems.Add(parmItem); } // saveParamItems.Add(parmItem);//添加到对应租户 } 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 = tenant.ID; newSchemes.Add(oldSchemeID, newSchemesID); addParamSchemes.Add(paramScheme); } } 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 = tenant.ID; paramSchemeDetail.PARAM_SCHEME_ID = scheneId; paramSchemeDetail.PARAM_ITEM_ID = ItemId; newSchemeDetails.Add(oldSchemeDetailID, newSchemeDetailID); addParamSchemeDetails.Add(paramSchemeDetail); } } #endregion #region 编码规则表 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 = tenant.ID; newCodeRules.Add(oldCodeRuleID, newCodeRuleID); addCodeRules.Add(codeRule); } } #endregion #region T_FM_SYNC_TASK 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 = tenant.ID; addSyncTasks.Add(syncTask);//添加到对应租户 } } #endregion #region 站点参数 var baseConfig = new T_FM_BASE_CONFIG(); if (tenantBaseConfig == null) { baseConfig.SRC_ID = srcBaseConfig.ID; baseConfig.ID = Guid.NewGuid(); baseConfig.ORG_ID = tenant.ID; baseConfig.NAME = tenant.NAME + "能源管理系统"; baseConfig.SYSTART_TIME = DateTime.Now; baseConfig.CALENDAR_DAYS = srcBaseConfig.CALENDAR_DAYS; baseConfig.SCREEN_TITLE = tenant.NAME + "能源管理系统"; baseConfig.SCREEN_URL = "http://" + targetDB.DB_CONN.Split(';')[2].Substring(5) + ":3167/home"; //addBaseConfig.Add(baseConfig); } #endregion #region T_PF_VERSION_MANAGE 版本 if (!tenantVersionManages.Any(x => x.ORG_ID == tenant.ID)) { foreach (var item in srcVersionManages) { T_PF_VERSION_MANAGE version = item; var newCodeRuleID = Guid.NewGuid(); //var oldCodeRuleID = item.ID; version.ID = newCodeRuleID; version.ORG_ID = tenant.ID; //newCodeRules.Add(oldCodeRuleID, newCodeRuleID); saveVersions.Add(version);//添加到对应租户 } } #endregion Dictionary dicEnumType = new Dictionary(); Dictionary dicEnum = new Dictionary(); Dictionary dicEnumItem = new Dictionary(); Dictionary dicEnergyType = new Dictionary(); Dictionary dicReductionFactor = new Dictionary(); Dictionary dicVariableAttrs = new Dictionary(); Dictionary dicImportConfigs = new Dictionary(); Dictionary dicImportConfigDetails = new Dictionary(); Dictionary dicImportConfigFields = new Dictionary(); Dictionary dicPictures = new Dictionary();//图片 Dictionary dicFiles = new Dictionary();//图片 Dictionary dicImgFiles = new Dictionary();//图片 Dictionary dicImgFileDetails = new Dictionary();//图片 Dictionary dicPicFiles = new Dictionary();//图片 Dictionary dicPicFilters = new Dictionary();//图片条件 Dictionary dicPicFilterDetails = new Dictionary();//图片 foreach (var item in srcEnumType)//枚举类别(枚举管理) { T_FM_ENUM_TYPE enumType = item; if (tenantEnumType.Any(x => x.SRC_ID == item.ID))//修改 { var tenantEnumtype = tenantEnumType.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = enumType.ID; enumType.SRC_ID = enumType.ID; enumType.ID = tenantEnumtype.ID; enumType.ORG_ID = tenantEnumtype.ORG_ID; dicEnumType.Add(oldItenID, tenantEnumtype.ID); saveEnumType.Add(enumType);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = enumType.ID; enumType.SRC_ID = enumType.ID; enumType.ID = newItemID; enumType.ORG_ID = tenant.ID; dicEnumType.Add(oldItenID, newItemID); addEnumType.Add(enumType); } } foreach (var item in srcEnum)//枚举类别(枚举管理) { T_FM_ENUM enumInfo = item; if (tenantEnum.Any(x => x.SRC_ID == item.ID))//修改 { var tenantenum = tenantEnum.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = enumInfo.ID; enumInfo.SRC_ID = enumInfo.ID; enumInfo.ID = tenantenum.ID; enumInfo.ORG_ID = tenantenum.ORG_ID; enumInfo.ENUM_TYPE_ID = dicEnumType[enumInfo.ENUM_TYPE_ID]; dicEnum.Add(oldItenID, tenantenum.ID); saveEnum.Add(enumInfo);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = enumInfo.ID; enumInfo.SRC_ID = enumInfo.ID; enumInfo.ID = newItemID; enumInfo.ORG_ID = tenant.ID; enumInfo.ENUM_TYPE_ID = dicEnumType[enumInfo.ENUM_TYPE_ID]; dicEnum.Add(oldItenID, newItemID); addEnum.Add(enumInfo); } } foreach (var item in srcEnumItem)//枚举类别(枚举管理) { T_FM_ENUM_ITEM enumItem = item; if (tenantEnumItem.Any(x => x.SRC_ID == item.ID))//修改 { var tenantEnumitem = tenantEnumItem.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = enumItem.ID; enumItem.SRC_ID = enumItem.ID; enumItem.ID = tenantEnumitem.ID; enumItem.ORG_ID = tenantEnumitem.ORG_ID; enumItem.ENUM_ID = dicEnum[enumItem.ENUM_ID]; dicEnumItem.Add(oldItenID, tenantEnumitem.ID); saveEnumItem.Add(enumItem);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = enumItem.ID; enumItem.SRC_ID = enumItem.ID; enumItem.ID = newItemID; enumItem.ORG_ID = tenant.ID; enumItem.ENUM_ID = dicEnum[enumItem.ENUM_ID]; dicEnumItem.Add(oldItenID, newItemID); addEnumItem.Add(enumItem); } } Dictionary dicenergyTyep = new Dictionary(); #region 变量属性表/excel模板 foreach (var item in srcImportConfigs)//导入配置 { T_FM_IMPORT_CONFIG importConfig = item; if (tenantImportConfigs.Any(x => x.SRC_ID == item.ID))//修改 { var tenantImportConfig = tenantImportConfigs.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = importConfig.ID; importConfig.SRC_ID = importConfig.ID; importConfig.ID = tenantImportConfig.ID; importConfig.ORG_ID = tenantImportConfig.ORG_ID; dicImportConfigs.Add(oldItenID, tenantImportConfig.ID); saveImportConfigs.Add(importConfig);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = importConfig.ID; importConfig.SRC_ID = importConfig.ID; importConfig.ID = newItemID; importConfig.ORG_ID = tenant.ID; dicImportConfigs.Add(oldItenID, newItemID); addImportConfigs.Add(importConfig); } } foreach (var item in srcImportConfigDetails)//导入配置 明细 { T_FM_IMPORT_CONFIG_DETAIL ImportConfigDetail = item; if (tenantImportConfigDetails.Any(x => x.SRC_ID == item.ID))//修改 { var tenantImportConfigDetail = tenantImportConfigDetails.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = ImportConfigDetail.ID; ImportConfigDetail.SRC_ID = ImportConfigDetail.ID; ImportConfigDetail.ID = tenantImportConfigDetail.ID; ImportConfigDetail.ORG_ID = tenantImportConfigDetail.ORG_ID; ImportConfigDetail.IMPORT_CONFIG_ID = dicImportConfigs[ImportConfigDetail.IMPORT_CONFIG_ID]; dicImportConfigDetails.Add(oldItenID, tenantImportConfigDetail.ID); saveImportConfigDetails.Add(ImportConfigDetail);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = ImportConfigDetail.ID; ImportConfigDetail.SRC_ID = ImportConfigDetail.ID; ImportConfigDetail.ID = newItemID; ImportConfigDetail.ORG_ID = tenant.ID; ImportConfigDetail.IMPORT_CONFIG_ID = dicImportConfigs[ImportConfigDetail.IMPORT_CONFIG_ID]; dicImportConfigDetails.Add(oldItenID, newItemID); addImportConfigDetails.Add(ImportConfigDetail); } } foreach (var item in addImportConfigDetails)//更新父节点 { if (item.PARENT_ID != null) { item.PARENT_ID = dicImportConfigDetails[(Guid)item.PARENT_ID]; } } foreach (var item in saveImportConfigDetails) { if (item.PARENT_ID != null) { item.PARENT_ID = dicImportConfigDetails[(Guid)item.PARENT_ID]; } } foreach (var item in srcImportConfigFields)//导入配置 明细 字段 { T_FM_IMPORT_CONFIG_FIELD ImportConfigField = item; if (tenantImportConfigFields.Any(x => x.SRC_ID == item.ID))//修改 { var tenantImportConfigField = tenantImportConfigFields.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = ImportConfigField.ID; ImportConfigField.SRC_ID = tenantImportConfigField.ID; ImportConfigField.ID = tenantImportConfigField.ID; ImportConfigField.ORG_ID = tenantImportConfigField.ORG_ID; ImportConfigField.IMPORT_CONFIG_DETAIL_ID = dicImportConfigDetails[ImportConfigField.IMPORT_CONFIG_DETAIL_ID]; dicImportConfigFields.Add(oldItenID, tenantImportConfigField.ID); saveImportConfigFields.Add(ImportConfigField);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = ImportConfigField.ID; ImportConfigField.SRC_ID = ImportConfigField.ID; ImportConfigField.ID = newItemID; ImportConfigField.ORG_ID = tenant.ID; ImportConfigField.IMPORT_CONFIG_DETAIL_ID = dicImportConfigDetails[ImportConfigField.IMPORT_CONFIG_DETAIL_ID]; dicImportConfigFields.Add(oldItenID, newItemID); addImportConfigFields.Add(ImportConfigField); } } #endregion foreach (var item in srcPictures)//图片资源 { T_BD_PICTURE srcPic = item; if (tenantPictures.Any(x => x.SRC_ID == item.ID))//修改 { var tenantPicture = tenantPictures.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcPic.ID; srcPic.SRC_ID = srcPic.ID; srcPic.ID = tenantPicture.ID; srcPic.ORG_ID = tenantPicture.ORG_ID; if (srcPic.ENUM_ID != null) { srcPic.ENUM_ID = dicEnum[(Guid)srcPic.ENUM_ID]; } if (srcPic.ENUM_ITEM_ID != null) { srcPic.ENUM_ITEM_ID = dicEnumItem[(Guid)srcPic.ENUM_ITEM_ID]; } dicPictures.Add(oldItenID, tenantPicture.ID); savePictures.Add(srcPic);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcPic.ID; srcPic.SRC_ID = srcPic.ID; srcPic.ID = newItemID; srcPic.ORG_ID = tenant.ID; if (srcPic.ENUM_ID != null) { srcPic.ENUM_ID = dicEnum[(Guid)srcPic.ENUM_ID]; } if (srcPic.ENUM_ITEM_ID != null) { srcPic.ENUM_ITEM_ID = dicEnumItem[(Guid)srcPic.ENUM_ITEM_ID]; } dicPictures.Add(oldItenID, newItemID); addPictures.Add(srcPic); } } foreach (var item in srcFiles)//图片资源 { T_PF_FILE srcFile = item; if (tenantFiles.Any(x => x.SRC_ID == item.ID))//修改 { var tenantFile = tenantFiles.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcFile.ID; srcFile.SRC_ID = srcFile.ID; srcFile.ID = tenantFile.ID; srcFile.ORG_ID = tenantFile.ORG_ID; dicFiles.Add(oldItenID, tenantFile.ID); saveFiles.Add(srcFile);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcFile.ID; srcFile.SRC_ID = srcFile.ID; srcFile.ID = newItemID; srcFile.ORG_ID = tenant.ID; dicFiles.Add(oldItenID, newItemID); addFiles.Add(srcFile); } } foreach (var item in srcImgFiles)//图片资源 { T_PF_IMG_FILE srcImgFile = item; if (tenantImgFiles.Any(x => x.SRC_ID == item.ID))//修改 { var tenantImgFile = tenantImgFiles.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcImgFile.ID; srcImgFile.SRC_ID = srcImgFile.ID; srcImgFile.ID = tenantImgFile.ID; srcImgFile.ORG_ID = tenantImgFile.ORG_ID; if (srcImgFile.FILE_ID != null) srcImgFile.FILE_ID = dicFiles[(Guid)srcImgFile.FILE_ID]; dicImgFiles.Add(oldItenID, tenantImgFile.ID); saveImgFiles.Add(srcImgFile);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcImgFile.ID; srcImgFile.SRC_ID = srcImgFile.ID; srcImgFile.ID = newItemID; srcImgFile.ORG_ID = tenant.ID; if (srcImgFile.FILE_ID != null) srcImgFile.FILE_ID = dicFiles[(Guid)srcImgFile.FILE_ID]; dicImgFiles.Add(oldItenID, newItemID); addImgFiles.Add(srcImgFile); } } foreach (var item in srcImgFileDetails)//图片资源 { T_PF_IMG_FILE_DETAIL srcImgFileDetail = item; if (tenantImgFileDetails.Any(x => x.SRC_ID == item.ID))//修改 { var tenantImgFileDetail = tenantImgFileDetails.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcImgFileDetail.ID; srcImgFileDetail.SRC_ID = srcImgFileDetail.ID; srcImgFileDetail.ID = tenantImgFileDetail.ID; srcImgFileDetail.ORG_ID = tenantImgFileDetail.ORG_ID; if (srcImgFileDetail.FILE_ID != null) srcImgFileDetail.FILE_ID = dicFiles[(Guid)srcImgFileDetail.FILE_ID]; if (srcImgFileDetail.IMG_FILE_ID != null) srcImgFileDetail.IMG_FILE_ID = dicImgFiles[(Guid)srcImgFileDetail.IMG_FILE_ID]; dicImgFileDetails.Add(oldItenID, tenantImgFileDetail.ID); saveImgFileDetails.Add(srcImgFileDetail);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcImgFileDetail.ID; srcImgFileDetail.SRC_ID = srcImgFileDetail.ID; srcImgFileDetail.ID = newItemID; srcImgFileDetail.ORG_ID = tenant.ID; if (srcImgFileDetail.FILE_ID != null) srcImgFileDetail.FILE_ID = dicFiles[(Guid)srcImgFileDetail.FILE_ID]; if (srcImgFileDetail.IMG_FILE_ID != null) srcImgFileDetail.IMG_FILE_ID = dicImgFiles[(Guid)srcImgFileDetail.IMG_FILE_ID]; dicImgFileDetails.Add(oldItenID, newItemID); addImgFileDetails.Add(srcImgFileDetail); } } foreach (var item in srcPicFiles)//图片资源 { T_BD_PICTURE_FILE srcPicFile = item; if (tenantPicFiles.Any(x => x.SRC_ID == item.ID))//修改 { var tenantPicFile = tenantPicFiles.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcPicFile.ID; srcPicFile.SRC_ID = srcPicFile.ID; srcPicFile.ID = tenantPicFile.ID; srcPicFile.ORG_ID = tenantPicFile.ORG_ID; if (srcPicFile.IMG_FILE_ID != null) srcPicFile.IMG_FILE_ID = dicImgFiles[(Guid)srcPicFile.IMG_FILE_ID]; if (srcPicFile.PICTURE_ID != null) srcPicFile.PICTURE_ID = dicPictures[(Guid)srcPicFile.PICTURE_ID]; dicPicFiles.Add(oldItenID, tenantPicFile.ID); savePicFiles.Add(srcPicFile);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcPicFile.ID; srcPicFile.SRC_ID = srcPicFile.ID; srcPicFile.ID = newItemID; srcPicFile.ORG_ID = tenant.ID; if (srcPicFile.IMG_FILE_ID != null) srcPicFile.IMG_FILE_ID = dicImgFiles[(Guid)srcPicFile.IMG_FILE_ID]; if (srcPicFile.PICTURE_ID != null) srcPicFile.PICTURE_ID = dicPictures[(Guid)srcPicFile.PICTURE_ID]; dicPicFiles.Add(oldItenID, newItemID); addPicFiles.Add(srcPicFile); } } foreach (var item in srcPicFilters)//图片条件主表 { T_PF_PIC_FILTER srcPicFilter = item; if (tenantPicFilters.Any(x => x.SRC_ID == item.ID))//修改 { var tenantPicFilter = tenantPicFilters.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcPicFilter.ID; srcPicFilter.SRC_ID = srcPicFilter.ID; srcPicFilter.ID = tenantPicFilter.ID; srcPicFilter.ORG_ID = tenantPicFilter.ORG_ID; if (srcPicFilter.PICTURE_ID != null) srcPicFilter.PICTURE_ID = dicPictures[srcPicFilter.PICTURE_ID]; dicPicFilters.Add(oldItenID, tenantPicFilter.ID); savePicFilters.Add(srcPicFilter);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcPicFilter.ID; srcPicFilter.SRC_ID = srcPicFilter.ID; srcPicFilter.ID = newItemID; srcPicFilter.ORG_ID = tenant.ID; if (srcPicFilter.PICTURE_ID != null) srcPicFilter.PICTURE_ID = dicPictures[srcPicFilter.PICTURE_ID]; dicPicFilters.Add(oldItenID, newItemID); addPicFilters.Add(srcPicFilter); } } foreach (var item in srcPicFilterDetails)//图片条件主表 { T_PF_PIC_FILTER_DETAIL srcPicFilterDetail = item; if (tenantPicFilterDetails.Any(x => x.SRC_ID == item.ID))//修改 { var tenantPicFilterDetail = tenantPicFilterDetails.FirstOrDefault(x => x.SRC_ID == item.ID); var oldItenID = srcPicFilterDetail.ID; srcPicFilterDetail.SRC_ID = srcPicFilterDetail.ID; srcPicFilterDetail.ID = tenantPicFilterDetail.ID; srcPicFilterDetail.ORG_ID = tenantPicFilterDetail.ORG_ID; if (srcPicFilterDetail.PIC_FILTER_ID != null) srcPicFilterDetail.PIC_FILTER_ID = dicPicFilters[srcPicFilterDetail.PIC_FILTER_ID]; dicPicFilterDetails.Add(oldItenID, tenantPicFilterDetail.ID); savePicFilterDetails.Add(srcPicFilterDetail);//添加到对应租户 } else//新增 { var newItemID = Guid.NewGuid(); var oldItenID = srcPicFilterDetail.ID; srcPicFilterDetail.SRC_ID = srcPicFilterDetail.ID; srcPicFilterDetail.ID = newItemID; srcPicFilterDetail.ORG_ID = tenant.ID; if (srcPicFilterDetail.PIC_FILTER_ID != null) srcPicFilterDetail.PIC_FILTER_ID = dicPicFilters[srcPicFilterDetail.PIC_FILTER_ID]; dicPicFilterDetails.Add(oldItenID, newItemID); addPicFilterDetails.Add(srcPicFilterDetail); } } if (!tenantDataFrequency.Any(x => x.ORG_ID == tenant.ID))//数据采集频率 { foreach (var item in srcDataFrequency) { T_PF_DATA_FREQUENCY dataFrequency = item; var newCodeRuleID = Guid.NewGuid(); dataFrequency.ID = newCodeRuleID; dataFrequency.ORG_ID = tenant.ID; addDataFrequency.Add(dataFrequency);//添加到对应租户 } } #region 添加租户管理员 if (!tenantUser.Any(x => x.ORG_ID == tenant.ID) && !tenantRole.Any(x => x.ORG_ID == tenant.ID) && !tenantUserBelongRole.Any(x => x.ORG_ID == tenant.ID)) { T_FM_USER user = new T_FM_USER(); user.ID = Guid.NewGuid(); user.IS_DELETED = false; user.ORG_ID = tenant.ID; user.NAME = "管理员"; user.CODE = "admin"; user.PASSWORD = "E10ADC3949BA59ABBE56E057F20F883E"; user.ENTITY_ORG_TPYE = 0; user.FLOW_STATUS = 0; user.FLOW_SEND_STATUS = 0; user.ENABLE_STATUS = 0; T_FM_ROLE role = new T_FM_ROLE(); role.ID = Guid.NewGuid(); role.IS_DELETED = false; role.ORG_ID = tenant.ID; role.NAME = "管理员"; role.CODE = "admin"; role.ENTITY_ORG_TPYE = 0; role.FLOW_STATUS = 0; role.FLOW_SEND_STATUS = 0; role.ENABLE_STATUS = 0; role.ROLE_TYPE = 99; role.PLATFORM_TYPE = 0; T_FM_USER_BELONG_ROLE userBelongRole = new T_FM_USER_BELONG_ROLE(); userBelongRole.ID = Guid.NewGuid(); userBelongRole.IS_DELETED = false; userBelongRole.ORG_ID = tenant.ID; userBelongRole.ENTITY_ORG_TPYE = 0; userBelongRole.FLOW_STATUS = 0; userBelongRole.FLOW_SEND_STATUS = 0; userBelongRole.USER_ID = user.ID; userBelongRole.BELONG_ROLE_ID = role.ID; saveUser.Add(user); saveRole.Add(role); saveUserBelongRole.Add(userBelongRole); tenant.USER_ID = user.ID; } #endregion foreach (var CheckKey in tenant.CheckKeys) { 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) { if (checkMenu.Node.MENU_FORM_ID != null)//有配表单 { dicMenu.Add(new Guid(CheckKey), checkMenu.Node.MENU_FORM_ID); //T_PF_FORM t_PF_FORM = this.GetEntities(null, filter).FirstOrDefault(x => x.ID == checkMenu.Node.MENU_FORM_ID);//OPT //T_PF_MENU t_PF_MENU = this.GetEntities(null, 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)); var formId = string.Empty; if (tenantMenus.Any(x => x.SRC_ID == new Guid(CheckKey)))//菜单存在 { #region 生成表单 //var tanentForm = this.GetEntities(null, 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) //表单存在 { formId = tanentForm.ID.ToString(); 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, tenant.ID, 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 = tenant.ID; t_PF_FORM.Nav_Org = null; if (t_PF_FORM != null) { savePermPFForm.Add(t_PF_FORM);//添加表单到对应租户 } } } } else { #region 生成表单 var newFormID = Guid.NewGuid(); formId = newFormID.ToString(); 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, tenant.ID, 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 = tenant.ID; t_PF_FORM.Nav_Org = null; if (t_PF_FORM != null) { addEntity.Forms.Add(t_PF_FORM);//添加表单到对应租户 } } } #endregion } #endregion #region 生成菜单 var tenantMenu = tenantMenus.FirstOrDefault(x => x.SRC_ID == new Guid(CheckKey)); if (!permOPMenu.Any(x => x.MENU_ID == new Guid(CheckKey)))//未授权 { savePermOPMenu.Add(new T_OP_ROLE_MENU() { TENANT_ID = tenant.ID, MENU_ID = new Guid(CheckKey), TENANT_MENU_ID = tenantMenu.ID, ORG_ID = tenant.ID });//菜单授权 } t_PF_MENU.SRC_ID = new Guid(CheckKey); t_PF_MENU.ID = tenantMenu.ID; t_PF_MENU.ORG_ID = tenant.ID; t_PF_MENU.IS_PERMISSION_MENU = true; if (!tenantInfo.DicForm.ContainsKey(t_PF_MENU.MENU_FORM_ID.ToString())) { tenantInfo.DicForm.Add(t_PF_MENU.MENU_FORM_ID.ToString(), formId); t_PF_MENU.MENU_FORM_ID = new Guid(formId); } 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, tenant.ID, 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 = tenant.ID; 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 = tenant.ID; t_PF_MENU.IS_PERMISSION_MENU = true; 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()]); } //if (!MenuFormRelation.ContainsKey(new Guid(t_PF_MENU.MENU_FORM_ID.ToString()))) //{ // MenuFormRelation.Add(new Guid(t_PF_MENU.MENU_FORM_ID.ToString()), newFormID); // t_PF_MENU.MENU_FORM_ID = newFormID; //} //else //{ // t_PF_MENU.MENU_FORM_ID = MenuFormRelation[new Guid(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 = this.GetEntities(null, filter).Where(x => x.ID == new Guid(CheckKey)).FirstOrDefault(); T_PF_MENU t_PF_MENU = srcMenus.FirstOrDefault(x => x.ID == new Guid(CheckKey)); if (t_PF_MENU != null) { if (tenantMenus.Any(x => x.SRC_ID == new Guid(CheckKey)))//菜单存在 { var tenantMenu = tenantMenus.FirstOrDefault(x => x.SRC_ID == new Guid(CheckKey)); if (!permOPMenu.Any(x => x.MENU_ID == new Guid(CheckKey)))//未授权 { savePermOPMenu.Add(new T_OP_ROLE_MENU() { TENANT_ID = tenant.ID, MENU_ID = new Guid(CheckKey), TENANT_MENU_ID = tenantMenu.ID, ORG_ID = tenant.ID });//菜单授权 } t_PF_MENU.SRC_ID = checkMenu.Node.ID; t_PF_MENU.ID = tenantMenu.ID; t_PF_MENU.ORG_ID = tenantMenu.ORG_ID; t_PF_MENU.IS_PERMISSION_MENU = true; 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 = tenant.ID; t_PF_MENU.IS_PERMISSION_MENU = true; relationMenu.Add(CheckKey, checkMenu.Node.PARENT_ID); newRelationMenu.Add(CheckKey, newMenuID.ToString()); addPermPFMenu.Add(t_PF_MENU); } } } } } //var deleteFilter = new BaseFilter(tenant.ID);//OPT创建的菜单,表单等 //deleteFilter.Level = -1; //deleteFilter.IsParentData = true; //var tenantMenusTree = this.GetTreeOrderEntities(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, deleteFilter); foreach (var item in permOPMenu) { if (!dicMenu.Keys.Contains(item.MENU_ID)) { var deleteMenu = tenantMenuTrees.FirstOrDefault(x => x.Node.ID == item.TENANT_MENU_ID); if (deleteMenu == null) { foreach (var tenantMenu in tenantMenuTrees) { deleteMenu = selectNode(tenantMenu, item.TENANT_MENU_ID.ToString()); if (deleteMenu != null) break; } } if (deleteMenu != null) { var cancelMenu = tenantMenus.Where(x => x.ID == deleteMenu.Node.ID).FirstOrDefault(); deletePermPFMenu.Add(cancelMenu); var subMenus = this.GetEntities(x => x.SRC_ID == deleteMenu.Node.ID, orgFilter); cancelMenu.IS_PERMISSION_MENU = false; foreach (var subMenu in subMenus)//子菜单权限也要回收 { subMenu.IS_PERMISSION_MENU = false; deletePermPFMenu.Add(subMenu); } deletePermOPMenu.Add(item.ID); } } } #region 菜单节点关系 foreach (var item in relationMenu) { if (item.Value != null) { var newMenuID = newRelationMenu[item.Key];//需要更新父ID if (newRelationMenu.ContainsKey(item.Value.ToString())) { 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()]); } if (addPermPFMenu != null && addPermPFMenu.Any(x => x.ID == new Guid(newMenuID))) { addPermPFMenu.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()]); } } foreach (var item in addEntity.PageTables) { 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()]); } } foreach (var item in addEntity.PageEdits) { 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 菜单图片更新 foreach (var item in savePermPFMenu) { if (item.PICTURE_ID != null && dicPictures.ContainsKey((Guid)item.PICTURE_ID)) { item.PICTURE_ID = dicPictures[(Guid)item.PICTURE_ID]; } } foreach (var item in addPermPFMenu) { if (item.PICTURE_ID != null && dicPictures.ContainsKey((Guid)item.PICTURE_ID)) { item.PICTURE_ID = dicPictures[(Guid)item.PICTURE_ID]; } } foreach (var item in savePicFilters)//图片条件主表 { if (item.PAGE_FORM_ID != null && savePermPFForm.Any(x => x.SRC_ID == item.PAGE_FORM_ID)) { item.PAGE_FORM_ID = savePermPFForm.FirstOrDefault(x => x.SRC_ID == item.PAGE_FORM_ID).ID; } if (item.PAGE_FORM_ID != null && addEntity.Forms.Any(x => x.SRC_ID == item.PAGE_FORM_ID)) { item.PAGE_FORM_ID = addEntity.Forms.FirstOrDefault(x => x.SRC_ID == item.PAGE_FORM_ID).ID; } } foreach (var item in addPicFilters) { if (item.PAGE_FORM_ID != null && savePermPFForm.Any(x => x.SRC_ID == item.PAGE_FORM_ID)) { item.PAGE_FORM_ID = savePermPFForm.FirstOrDefault(x => x.SRC_ID == item.PAGE_FORM_ID).ID; } if (item.PAGE_FORM_ID != null && addEntity.Forms.Any(x => x.SRC_ID == item.PAGE_FORM_ID)) { item.PAGE_FORM_ID = addEntity.Forms.FirstOrDefault(x => x.SRC_ID == item.PAGE_FORM_ID).ID; } } #endregion #region 更新数据 var idssd = addEntity.PageTables.Where(i => i.PAGE_FORM_ID != null).Select(i => i.PAGE_FORM_ID ?? Guid.Empty).ToList(); var idssa = addEntity.PageEdits.Where(i => i.PAGE_FORM_ID != null).Select(i => i.PAGE_FORM_ID ?? Guid.Empty).ToList(); var idssb = addEntity.PageTrees.Where(i => i.PAGE_FORM_ID != null).Select(i => i.PAGE_FORM_ID ?? Guid.Empty).ToList(); var idsse = addEntity.PageCustoms.Where(i => i.PAGE_FORM_ID != null).Select(i => i.PAGE_FORM_ID ?? Guid.Empty).ToList(); List idss = new List(); idss.AddRange(idssd); idss.AddRange(idssa); idss.AddRange(idssb); idss.AddRange(idsse); var addPermPFMenuas = addPermPFMenu.Where(i => !idss.Contains(i.MENU_FORM_ID ?? Guid.Empty) && i.MENU_FORM_ID != null).Select(i=>i.ID); addPermPFMenu.RemoveAll(i => addPermPFMenuas.Contains(i.ID)); var Connnect = targetDB.DB_CONN; using (var context = new MigrationContext(Connnect)) { try { if (addEnumType != null && addEnumType.Any()) context.AddEntities(addEnumType); if (saveEnumType != null && saveEnumType.Any()) context.UpdateEntities(saveEnumType); if (addEnum != null && addEnum.Any()) context.AddEntities(addEnum); if (saveEnum != null && saveEnum.Any()) context.UpdateEntities(saveEnum); if (addEnumItem != null && addEnumItem.Any()) context.AddEntities(addEnumItem); if (saveEnumItem != null && saveEnumItem.Any()) context.UpdateEntities(saveEnumItem); if (savePictures != null && savePictures.Any()) context.UpdateEntities(savePictures);//图片 if (addPictures != null && addPictures.Any()) context.AddEntities(addPictures);//图片 if (saveFiles != null && saveFiles.Any()) context.UpdateEntities(saveFiles);//图片 if (addFiles != null && addFiles.Any()) context.AddEntities(addFiles);//图片 if (saveImgFiles != null && saveImgFiles.Any()) context.UpdateEntities(saveImgFiles);//图片 if (addImgFiles != null && addImgFiles.Any()) context.AddEntities(addImgFiles);//图片 if (saveImgFileDetails != null && saveImgFileDetails.Any()) context.UpdateEntities(saveImgFileDetails);//图片 if (addImgFileDetails != null && addImgFileDetails.Any()) context.AddEntities(addImgFileDetails);//图片 if (savePicFiles != null && savePicFiles.Any()) context.UpdateEntities(savePicFiles);//图片 if (addPicFiles != null && addPicFiles.Any()) context.AddEntities(addPicFiles);//图片 if (saveImportConfigs != null && saveImportConfigs.Any()) context.UpdateEntities(saveImportConfigs);//导入 if (addImportConfigs != null && addImportConfigs.Any()) context.AddEntities(addImportConfigs);//导入 if (saveImportConfigDetails != null && saveImportConfigDetails.Any()) context.UpdateEntities(saveImportConfigDetails);//导入 if (addImportConfigDetails != null && addImportConfigDetails.Any()) context.AddEntities(addImportConfigDetails);//导入 if (saveImportConfigFields != null && saveImportConfigFields.Any()) context.UpdateEntities(saveImportConfigFields);//导入 if (addImportConfigFields != null && addImportConfigFields.Any()) context.AddEntities(addImportConfigFields);//导入 if (deletePermPFMenu != null && deletePermPFMenu.Any()) context.UpdateEntities(deletePermPFMenu); if (savePermPFForm != null && savePermPFForm.Any()) context.UpdateEntities(savePermPFForm); if (addEntity.Forms != null && addEntity.Forms.Any()) context.AddRange(addEntity.Forms); if (savePicFilters != null && savePicFilters.Any()) context.UpdateEntities(savePicFilters); if (addPicFilters != null && addPicFilters.Any()) context.AddRange(addPicFilters); if (savePicFilterDetails != null && savePicFilterDetails.Any()) context.UpdateEntities(savePicFilterDetails); if (addPicFilterDetails != null && addPicFilterDetails.Any()) context.AddRange(addPicFilterDetails); if (saveParamItems != null && saveParamItems.Any()) context.UpdateEntities(saveParamItems); if (addParamItems != null && addParamItems.Any()) context.AddEntities(addParamItems); if (saveParamSchemes != null && saveParamSchemes.Any()) context.UpdateEntities(saveParamSchemes); if (addParamSchemes != null && addParamSchemes.Any()) context.AddEntities(addParamSchemes); if (saveParamSchemeDetails != null && saveParamSchemeDetails.Any()) context.UpdateEntities(saveParamSchemeDetails); if (addParamSchemeDetails != null && addParamSchemeDetails.Any()) context.AddEntities(addParamSchemeDetails); if (savePermPageEdit != null && savePermPageEdit.Any()) context.UpdateEntities(savePermPageEdit); if (addEntity.PageEdits != null && addEntity.PageEdits.Any()) context.AddRange(addEntity.PageEdits); if (saveEditPanels != null && saveEditPanels.Any()) context.UpdateEntities(saveEditPanels); if (addEntity.EditPanels != null && addEntity.EditPanels.Any()) context.AddEntities(addEntity.EditPanels); if (saveEditColumns != null && saveEditColumns.Any()) context.UpdateEntities(saveEditColumns); if (addEntity.EditColumns != null && addEntity.EditColumns.Any()) context.AddEntities(addEntity.EditColumns); if (saveEditColumnFilters != null && saveEditColumnFilters.Any()) context.UpdateEntities(saveEditColumnFilters); if (addEntity.EditColumnFilters != null && addEntity.EditColumnFilters.Any()) context.AddEntities(addEntity.EditColumnFilters); if (saveEditColumnFillMaps != null && saveEditColumnFillMaps.Any()) context.UpdateEntities(saveEditColumnFillMaps); if (addEntity.EditColumnFillMaps != null && addEntity.EditColumnFillMaps.Any()) context.AddEntities(addEntity.EditColumnFillMaps); if (saveEditColumnFillMapDs != null && saveEditColumnFillMapDs.Any()) context.UpdateEntities(saveEditColumnFillMapDs); if (addEntity.EditColumnFillMapDs != null && addEntity.EditColumnFillMapDs.Any()) context.AddEntities(addEntity.EditColumnFillMapDs); if (savePermPageCustom != null && savePermPageCustom.Any()) context.UpdateEntities(savePermPageCustom); if (addEntity.PageCustoms != null && addEntity.PageCustoms.Any()) context.AddEntities(addEntity.PageCustoms); if (savePermPageChart != null && savePermPageChart.Any()) context.UpdateEntities(savePermPageChart); if (addEntity.PageCharts != null && addEntity.PageCharts.Any()) context.AddEntities(addEntity.PageCharts); if (saveChartParams != null && saveChartParams.Any()) context.UpdateEntities(saveChartParams); if (addEntity.ChartParams != null && addEntity.ChartParams.Any()) context.AddEntities(addEntity.ChartParams); if (savePermPageTable != null && savePermPageTable.Any()) context.UpdateEntities(savePermPageTable); if (addEntity.PageTables != null && addEntity.PageTables.Any()) context.AddEntities(addEntity.PageTables); if (saveTablePanels != null && saveTablePanels.Any()) context.UpdateEntities(saveTablePanels); if (addEntity.TablePanels != null && addEntity.TablePanels.Any()) context.AddEntities(addEntity.TablePanels); if (savePermCloumn != null && savePermCloumn.Any()) context.UpdateEntities(savePermCloumn); if (addEntity.Columns != null && addEntity.Columns.Any()) context.AddEntities(addEntity.Columns); if (saveColumFilters != null && saveColumFilters.Any()) context.UpdateEntities(saveColumFilters); if (addEntity.ColumnFilters != null && addEntity.ColumnFilters.Any()) context.AddEntities(addEntity.ColumnFilters); if (saveTableParams != null && saveTableParams.Any()) context.UpdateEntities(saveTableParams); if (addEntity.TableParams != null && addEntity.TableParams.Any()) context.AddEntities(addEntity.TableParams); if (saveFormQuerys != null && saveFormQuerys.Any()) context.UpdateEntities(saveFormQuerys); if (addEntity.FormQuerys != null && addEntity.FormQuerys.Any()) context.AddEntities(addEntity.FormQuerys); if (saveQuerys != null && saveQuerys.Any()) context.UpdateEntities(saveQuerys); if (addEntity.Querys != null && addEntity.Querys.Any()) context.AddEntities(addEntity.Querys); if (savePermPageTree != null && savePermPageTree.Any()) context.UpdateEntities(savePermPageTree); if (addEntity.PageTrees != null && addEntity.PageTrees.Any()) context.AddEntities(addEntity.PageTrees); if (saveTreeColumns != null && saveTreeColumns.Any()) context.UpdateEntities(saveTreeColumns); if (addEntity.TreeColumns != null && addEntity.TreeColumns.Any()) context.AddEntities(addEntity.TreeColumns); if (savePermBtn != null && savePermBtn.Any()) context.UpdateEntities(savePermBtn); if (addEntity.Btns != null && addEntity.Btns.Any()) context.AddEntities(addEntity.Btns); if (savePermPFMenu != null && savePermPFMenu.Any()) context.UpdateEntities(savePermPFMenu); if (addPermPFMenu != null && addPermPFMenu.Any()) context.AddEntities(addPermPFMenu); if (savePermPFFormRelation != null && savePermPFFormRelation.Any()) context.UpdateEntities(savePermPFFormRelation); if (addEntity.FormRelations != null && addEntity.FormRelations.Any()) context.AddEntities(addEntity.FormRelations); if (saveCodeRules != null && saveCodeRules.Any()) context.UpdateEntities(saveCodeRules); if (addCodeRules != null && addCodeRules.Any()) context.AddEntities(addCodeRules); if (saveSyncTasks != null && saveSyncTasks.Any()) context.UpdateEntities(saveSyncTasks); if (addSyncTasks != null && addSyncTasks.Any()) context.AddEntities(addSyncTasks); if (tenantBaseConfig == null) context.AddEntity(baseConfig); if (saveVersions != null && saveVersions.Any()) context.AddEntities(saveVersions); if (saveUser != null && saveUser.Any()) context.AddEntities(saveUser); if (saveRole != null && saveRole.Any()) context.AddEntities(saveRole); if (saveUserBelongRole != null && saveUserBelongRole.Any()) context.AddEntities(saveUserBelongRole); if (addDataFrequency != null && addDataFrequency.Any()) context.AddEntities(addDataFrequency); context.SaveChanges(); } catch (Exception ex) { context.RollbackTransaction(); this.ThrowError("010001", ex.Message + ",StackTrace:" + ex.StackTrace + ",Source:" + ex.Source); } } UnifiedCommit(() => { if (savePermOPMenu != null && savePermOPMenu.Any()) this.BantchSaveEntityNoCommit(savePermOPMenu); if (deletePermOPMenu.Count > 0) this.BantchDeleteEntityNoCommit(deletePermOPMenu); }); #endregion } else { if (permOPMenu.Count > 0) { deletePermOPMenu.AddRange(permOPMenu.Select(x => x.ID).ToList()); } if (tenantMenus.Count > 0) { foreach (var item in tenantMenus) { item.IS_PERMISSION_MENU = false; deletePermPFMenu.Add(item); } } #region 更新数据 var Connnect = targetDB.DB_CONN; using (var context = new MigrationContext(Connnect)) { try { if (deletePermPFMenu != null && deletePermPFMenu.Any()) context.UpdateEntities(deletePermPFMenu); context.SaveChanges(); } catch (Exception ex) { this.ThrowError("010001", ex.Message + ",StackTrace:" + ex.StackTrace + ",Source:" + ex.Source); } } #endregion UnifiedCommit(() => { this.UpdateEntityNoCommit(tenant); if (deletePermOPMenu.Count > 0) this.BantchDeleteEntityNoCommit(deletePermOPMenu); }); } return true; }); } 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 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 if (form.NAME.Contains("部门")) { var x = 0; } 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; } } } /// /// 树形授权 /// /// /// [HttpPost, Route("GetTreePermissionForms")] public JsonActionResult GetTreePermissionForms([FromBody] KeywordPageFilter pageFilter) { return SafeExecute(() => { List result = new List();//最终返回树结果 List> menuTree = null; //var filter = new BaseFilter(new Guid(pageFilter.Parameter6));//OPT OrgId var orgFilter = new BaseFilter(); orgFilter.IgnoreOrgRule = true; 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).ToList(); } } menuTree.RemoveAll(i => i.Node?.ENABLE_STATUS == (int)FMEnableStatusEnum.禁用); menuTree.ForEach(i => i.Children?.RemoveAll(x => x.Node?.ENABLE_STATUS == (int)FMEnableStatusEnum.禁用)); menuTree.SelectMany(i => i.Children).ToList().RemoveAll(x => x.Node?.ENABLE_STATUS == (int)FMEnableStatusEnum.禁用); string tenantId = pageFilter.Keyword;//租户ID List permissionMenu = null; if (!string.IsNullOrEmpty(tenantId)) { permissionMenu = this.GetEntities(x => x.TENANT_ID == new Guid(tenantId), orgFilter).ToList(); } List formInfos = new List(); List checks = new List(); List checkLastKey = 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); } var rlt = new RolePermissionResul() { checks = checks, checkLastKey = checkLastKey, 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); } } } /// /// 添加表 /// /// /// opt /// /// /// /// 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; pageEdit.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);//添加表单到对应租户 } } } } } } } }