832 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			832 lines
		
	
	
		
			44 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using APT.BaseData.Domain.ApiModel.FM;
 | 
						|
using APT.BaseData.Domain.Entities;
 | 
						|
using APT.BaseData.Domain.Entities.BD;
 | 
						|
using APT.BaseData.Domain.Entities.FM;
 | 
						|
using APT.BaseData.Domain.Entities.NW;
 | 
						|
using APT.BaseData.Domain.Entities.PF;
 | 
						|
using APT.BaseData.Domain.Enums;
 | 
						|
using APT.Infrastructure.Core;
 | 
						|
using APT.Utility;
 | 
						|
using Microsoft.AspNetCore.Http;
 | 
						|
using Microsoft.AspNetCore.Mvc;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Threading.Tasks;
 | 
						|
 | 
						|
namespace APT.NW.WebApi.Controllers.Api
 | 
						|
{
 | 
						|
    [Route("api/NW/EnterpriseRole")]
 | 
						|
    public class EnterpriseRoleController : AuthorizeApiController<T_FM_ORGANIZATION>
 | 
						|
    {
 | 
						|
        [HttpPost, Route("Update")]
 | 
						|
        public JsonActionResult<bool> Update([FromBody] T_FM_ORGANIZATION tenant)
 | 
						|
        {
 | 
						|
            return SafeExecute<bool>(() =>
 | 
						|
            {
 | 
						|
                #region 授权数据
 | 
						|
                var orgFilter = new BaseFilter();
 | 
						|
                orgFilter.IgnoreOrgRule = true;
 | 
						|
                var permOPMenu = this.GetEntities<T_NW_ROLE_MENU>(x => x.ENTERPRISE_ID == tenant.ID, orgFilter).ToList();//企业权限
 | 
						|
                var permPFMenu = this.GetEntities<T_PF_MENU>(x => x.ORG_ID == tenant.ID, orgFilter).ToList();//企业菜单
 | 
						|
                var permPFForm = this.GetEntities<T_PF_FORM>(x => x.ORG_ID == tenant.ID, orgFilter).ToList();//企业表单
 | 
						|
 | 
						|
                var deletePermOPMenu = new List<Guid>();
 | 
						|
                var deletePermPFMenu = new List<T_PF_MENU>();
 | 
						|
                List<Guid> dicCheckKeys = new List<Guid>();
 | 
						|
 | 
						|
                var saveDataPerm = new List<T_NW_ROLE_DATA_PERM>();
 | 
						|
                var deleteDataPerm = new List<Guid>();
 | 
						|
                #endregion            
 | 
						|
                #region 增加权限
 | 
						|
                var savePermOPMenu = new List<T_NW_ROLE_MENU>();
 | 
						|
                var savePermPFMenu = new List<T_PF_MENU>();
 | 
						|
                //var savePermPFForm = new List<T_PF_FORM>();
 | 
						|
 | 
						|
                var saveParamItems = new List<T_PF_PARAM_ITEM>();
 | 
						|
                var addParamItems = new List<T_PF_PARAM_ITEM>();
 | 
						|
                var saveParamSchemes = new List<T_PF_PARAM_SCHEME>();
 | 
						|
                var addParamSchemes = new List<T_PF_PARAM_SCHEME>();
 | 
						|
                var saveParamSchemeDetails = new List<T_PF_PARAM_SCHEME_DETAIL>();
 | 
						|
                var addParamSchemeDetails = new List<T_PF_PARAM_SCHEME_DETAIL>();
 | 
						|
 | 
						|
                var addCodeRules = new List<T_PF_CODE_RULE>();
 | 
						|
                var addSyncTasks = new List<T_FM_SYNC_TASK>();
 | 
						|
                var saveVersions = new List<T_PF_VERSION_MANAGE>();
 | 
						|
 | 
						|
             
 | 
						|
                List<T_FM_ENUM_TYPE> addEnumType = new List<T_FM_ENUM_TYPE>();
 | 
						|
                List<T_FM_ENUM> addEnum = new List<T_FM_ENUM>();
 | 
						|
                List<T_BD_PICTURE> addPicture = new List<T_BD_PICTURE>();
 | 
						|
                List<T_PF_DATA_FREQUENCY> addDataFrequency = new List<T_PF_DATA_FREQUENCY>();
 | 
						|
                List<T_FM_ENUM_ITEM> addEnumItem = new List<T_FM_ENUM_ITEM>();
 | 
						|
 | 
						|
 | 
						|
                var saveUser = new List<T_FM_USER>();
 | 
						|
                var saveRole = new List<T_FM_ROLE>();
 | 
						|
                var saveUserBelongRole = new List<T_FM_USER_BELONG_ROLE>();
 | 
						|
                #endregion
 | 
						|
                Dictionary<string, object> relationMenu = new Dictionary<string, object>();//id.pid
 | 
						|
                Dictionary<string, string> newRelationMenu = new Dictionary<string, string>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> MenuFormRelation = new Dictionary<Guid, Guid>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> newItems = new Dictionary<Guid, Guid>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> newSchemes = new Dictionary<Guid, Guid>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> newSchemeDetails = new Dictionary<Guid, Guid>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> newTablePanels = new Dictionary<Guid, Guid>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> newCodeRules = new Dictionary<Guid, Guid>();//id.newid
 | 
						|
                Dictionary<Guid, Guid> newEditPanels = new Dictionary<Guid, Guid>();
 | 
						|
                var dicMenu = new Dictionary<Guid, object>();
 | 
						|
                #region OPT信息                    
 | 
						|
                var orgs = this.GetEntities<T_FM_ORGANIZATION>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, orgFilter);
 | 
						|
                var root = new T_FM_ORGANIZATION();
 | 
						|
                if (tenant.PARENT_ID == null)
 | 
						|
                {
 | 
						|
                    root = orgs.Where(x => x.ID == tenant.ID).FirstOrDefault();
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    var org = orgs.Where(x => x.ID == tenant.PARENT_ID).FirstOrDefault();
 | 
						|
                    root = selectRoot(orgs, org);
 | 
						|
                }
 | 
						|
                var filter = new BaseFilter(root.ID);//当前企业根企业菜单,表单等
 | 
						|
                filter.Level = -1;
 | 
						|
                filter.IsParentData = true;
 | 
						|
                #region  表单配置信息
 | 
						|
                //var optForms = this.GetEntities<T_PF_FORM>(x => x.ORG_ID == filter.OrgId, filter);
 | 
						|
                var optMenusTree = this.GetTreeOrderEntities<T_PF_MENU>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.ORG_ID == filter.OrgId, filter);
 | 
						|
                var optMenus = this.GetEntities<T_PF_MENU>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.ORG_ID == filter.OrgId, filter);
 | 
						|
 | 
						|
                List<T_PF_PARAM_ITEM> srcParamItems = null;
 | 
						|
                List<T_PF_PARAM_SCHEME> srcParamSchemes = null;
 | 
						|
                List<T_PF_PARAM_SCHEME_DETAIL> srcParamSchemeDetails = null;
 | 
						|
                List<T_PF_VERSION_MANAGE> srcVersionManages = null;
 | 
						|
                List<T_PF_CODE_RULE> srcCodeRules = null;
 | 
						|
                List<T_FM_SYNC_TASK> srcSyncTasks = null;
 | 
						|
             
 | 
						|
                List<T_FM_ENUM_TYPE> srcEnumType = null;
 | 
						|
                List<T_FM_ENUM> srcEnum = null;
 | 
						|
                List<T_BD_PICTURE> srcPicture = null;
 | 
						|
              
 | 
						|
                List<T_PF_DATA_FREQUENCY> srcDataFrequency = null;
 | 
						|
                
 | 
						|
                List<T_FM_ENUM_ITEM> srcEnumItem = null;
 | 
						|
                
 | 
						|
                srcParamItems = this.GetEntities<T_PF_PARAM_ITEM>(null, filter).ToList();
 | 
						|
                srcParamSchemes = this.GetEntities<T_PF_PARAM_SCHEME>(null, filter).ToList();
 | 
						|
                srcParamSchemeDetails = this.GetEntities<T_PF_PARAM_SCHEME_DETAIL>(null, filter).ToList();
 | 
						|
                srcVersionManages = this.GetEntities<T_PF_VERSION_MANAGE>(null, filter).ToList();
 | 
						|
                srcCodeRules = this.GetEntities<T_PF_CODE_RULE>(null, filter).ToList();
 | 
						|
                srcSyncTasks = this.GetEntities<T_FM_SYNC_TASK>(null, filter).ToList();
 | 
						|
 | 
						|
              
 | 
						|
                srcEnumType = this.GetEntities<T_FM_ENUM_TYPE>(null, filter).ToList();
 | 
						|
                srcEnum = this.GetEntities<T_FM_ENUM>(null, filter).ToList();
 | 
						|
                srcPicture = this.GetEntities<T_BD_PICTURE>(null, filter).ToList();
 | 
						|
               
 | 
						|
                srcDataFrequency = this.GetEntities<T_PF_DATA_FREQUENCY>(null, filter).ToList();
 | 
						|
               
 | 
						|
                srcEnumItem = this.GetEntities<T_FM_ENUM_ITEM>(null, filter).ToList();
 | 
						|
                
 | 
						|
 | 
						|
                #endregion
 | 
						|
                #endregion
 | 
						|
                List<Guid> existForm = new List<Guid>();
 | 
						|
                List<Guid> existTable = new List<Guid>();
 | 
						|
                List<Guid> existPermForm = new List<Guid>();
 | 
						|
                if (tenant.CheckKeys.Count > 0)
 | 
						|
                {
 | 
						|
                    var tenantFilter = new BaseFilter(tenant.ID);//当前企业
 | 
						|
                    var perOPMenu = this.GetEntities<T_NW_ROLE_MENU>(x => x.ENTERPRISE_ID == tenant.ID, orgFilter);
 | 
						|
                    var tenantMenus = this.GetEntities<T_PF_MENU>(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter);
 | 
						|
                    List<T_PF_PARAM_ITEM> tenantParamItems = null;
 | 
						|
                    List<T_PF_PARAM_SCHEME> tenantParamSchemes = null;
 | 
						|
                    List<T_PF_PARAM_SCHEME_DETAIL> tenantParamSchemeDetails = null;
 | 
						|
                    List<T_PF_VERSION_MANAGE> tenantVersionManages = null;
 | 
						|
                    List<T_PF_CODE_RULE> tenantCodeRules = null;
 | 
						|
                    List<T_FM_SYNC_TASK> tenantSyncTasks = null;
 | 
						|
                    List<T_FM_ENUM_TYPE> tenantEnumType = null;//枚举类别
 | 
						|
                    List<T_FM_ENUM> tenantEnum = null;//枚举管理
 | 
						|
                    List<T_FM_ENUM_ITEM> tenantEnumItem = null;
 | 
						|
                    List<T_BD_PICTURE> tenantPicture = null;//图片管理
 | 
						|
                    List<T_PF_DATA_FREQUENCY> tenantDataFrequency = null;//数据采集频率
 | 
						|
                    tenantParamItems = this.GetEntities<T_PF_PARAM_ITEM>(null, tenantFilter).ToList();
 | 
						|
                    tenantParamSchemes = this.GetEntities<T_PF_PARAM_SCHEME>(null, tenantFilter).ToList();
 | 
						|
                    tenantParamSchemeDetails = this.GetEntities<T_PF_PARAM_SCHEME_DETAIL>(null, tenantFilter).ToList();
 | 
						|
                    tenantVersionManages = this.GetEntities<T_PF_VERSION_MANAGE>(null, tenantFilter).ToList();
 | 
						|
                    tenantCodeRules = this.GetEntities<T_PF_CODE_RULE>(null, tenantFilter).ToList();
 | 
						|
                    tenantSyncTasks = this.GetEntities<T_FM_SYNC_TASK>(null, tenantFilter).ToList();
 | 
						|
 | 
						|
                    tenantEnumType = this.GetEntities<T_FM_ENUM_TYPE>(null, tenantFilter).ToList();
 | 
						|
                    tenantEnum = this.GetEntities<T_FM_ENUM>(null, tenantFilter).ToList();
 | 
						|
                    tenantEnumItem = this.GetEntities<T_FM_ENUM_ITEM>(null, tenantFilter).ToList();
 | 
						|
                    tenantPicture = this.GetEntities<T_BD_PICTURE>(null, tenantFilter).ToList();
 | 
						|
                    tenantDataFrequency = this.GetEntities<T_PF_DATA_FREQUENCY>(null, tenantFilter).ToList();
 | 
						|
 | 
						|
                    #region 系统参数模板           
 | 
						|
                    if (!tenantParamItems.Any(x => x.ORG_ID == tenant.ID) && !tenantParamSchemes.Any(x => x.ORG_ID == tenant.ID) && !tenantParamSchemeDetails.Any(x => x.SRC_ID == tenant.ID))
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcParamItems)
 | 
						|
                        {
 | 
						|
                            T_PF_PARAM_ITEM parmItem = item;
 | 
						|
                            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);
 | 
						|
                        }
 | 
						|
                        foreach (var item in srcParamSchemes)
 | 
						|
                        {
 | 
						|
                            T_PF_PARAM_SCHEME paramScheme = item;
 | 
						|
                            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;
 | 
						|
                            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 编码规则表          
 | 
						|
                    if (!tenantCodeRules.Any(x => x.ORG_ID == tenant.ID))
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcCodeRules)
 | 
						|
                        {
 | 
						|
                            T_PF_CODE_RULE codeRule = item;
 | 
						|
                            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         
 | 
						|
                    if (!tenantSyncTasks.Any(x => x.ORG_ID == tenant.ID))
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcSyncTasks)
 | 
						|
                        {
 | 
						|
                            T_FM_SYNC_TASK syncTask = item;
 | 
						|
                            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 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
 | 
						|
                    #region 基础参数下发                            
 | 
						|
                   
 | 
						|
                    Dictionary<Guid, Guid> dicEnumType = new Dictionary<Guid, Guid>();
 | 
						|
                    Dictionary<Guid, Guid> dicEnum = new Dictionary<Guid, Guid>();
 | 
						|
                    Dictionary<Guid, Guid> dicEnumItem = new Dictionary<Guid, Guid>();
 | 
						|
                    Dictionary<Guid, Guid> dicEnergyType = new Dictionary<Guid, Guid>();
 | 
						|
                    Dictionary<Guid, Guid> dicReductionFactor = new Dictionary<Guid, Guid>();
 | 
						|
                    Dictionary<Guid, Guid> dicPicture = new Dictionary<Guid, Guid>();
 | 
						|
                    if (!tenantEnumType.Any(x => x.ORG_ID == tenant.ID))//枚举类别(枚举管理)
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcEnumType)
 | 
						|
                        {
 | 
						|
                            T_FM_ENUM_TYPE enumType = item;
 | 
						|
                            var newID = Guid.NewGuid();
 | 
						|
                            dicEnumType.Add(enumType.ID, newID);
 | 
						|
                            enumType.ID = newID;
 | 
						|
                            enumType.ORG_ID = tenant.ID;
 | 
						|
                            addEnumType.Add(enumType);//添加到对应租户  
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (!tenantEnum.Any(x => x.ORG_ID == tenant.ID))//枚举管理
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcEnum)
 | 
						|
                        {
 | 
						|
                            T_FM_ENUM enumInfo = item;
 | 
						|
                            var newID = Guid.NewGuid();
 | 
						|
                            dicEnum.Add(enumInfo.ID, newID);
 | 
						|
                            enumInfo.ID = newID;
 | 
						|
                            enumInfo.ORG_ID = tenant.ID;
 | 
						|
                            enumInfo.ENUM_TYPE_ID = dicEnumType[enumInfo.ENUM_TYPE_ID];
 | 
						|
                            addEnum.Add(enumInfo);//添加到对应租户  
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    if (!tenantEnumItem.Any(x => x.ORG_ID == tenant.ID))//枚举管理
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcEnumItem)
 | 
						|
                        {
 | 
						|
                            T_FM_ENUM_ITEM enumItem = item;
 | 
						|
                            var newID = Guid.NewGuid();
 | 
						|
                            dicEnumItem.Add(enumItem.ID, newID);
 | 
						|
                            enumItem.ID = newID;
 | 
						|
                            enumItem.ORG_ID = tenant.ID;
 | 
						|
                            enumItem.ENUM_ID = dicEnum[enumItem.ENUM_ID];
 | 
						|
                            addEnumItem.Add(enumItem);//添加到对应租户  
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                   
 | 
						|
                    if (!tenantPicture.Any(x => x.ORG_ID == tenant.ID))//图片资源
 | 
						|
                    {
 | 
						|
                        foreach (var item in srcPicture)
 | 
						|
                        {
 | 
						|
                            T_BD_PICTURE picture = item;
 | 
						|
                            var newID = Guid.NewGuid();
 | 
						|
                            dicPicture.Add(picture.ID, newID);
 | 
						|
                            picture.ID = newID;
 | 
						|
                            picture.ORG_ID = tenant.ID;
 | 
						|
                            if (picture.ENUM_ID != null)
 | 
						|
                            {
 | 
						|
                                picture.ENUM_ID = dicEnum[(Guid)picture.ENUM_ID];
 | 
						|
                            }
 | 
						|
                            if (picture.ENUM_ITEM_ID != null)
 | 
						|
                            {
 | 
						|
                                picture.ENUM_ITEM_ID = dicEnumItem[(Guid)picture.ENUM_ITEM_ID];
 | 
						|
                            }
 | 
						|
                            addPicture.Add(picture);//添加到对应租户  
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
 | 
						|
                    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);//添加到对应租户  
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                   
 | 
						|
                    #endregion
 | 
						|
                    #region 添加租户管理员
 | 
						|
                    var tenantUser = this.GetEntities<T_FM_USER>(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter);
 | 
						|
                    var tenantRole = this.GetEntities<T_FM_ROLE>(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter);
 | 
						|
                    var tenantUserBelongRole = this.GetEntities<T_FM_USER_BELONG_ROLE>(x => x.ORG_ID == tenantFilter.OrgId, tenantFilter);
 | 
						|
                    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);
 | 
						|
                    }
 | 
						|
                    #endregion
 | 
						|
                    foreach (var CheckKey in tenant.CheckKeys)
 | 
						|
                    {
 | 
						|
                        var checkMenu = optMenusTree.FirstOrDefault(x => x.Node.ID == new Guid(CheckKey));
 | 
						|
                        if (checkMenu == null)
 | 
						|
                        {
 | 
						|
                            foreach (var item in optMenusTree)
 | 
						|
                            {
 | 
						|
                                checkMenu = selectNode(item, CheckKey);
 | 
						|
                                if (checkMenu != null)
 | 
						|
                                    break;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        if (checkMenu != null && checkMenu.Node.IS_PERMISSION_SUB == (int)FMSubPermEnum.子企业可见)
 | 
						|
                        {
 | 
						|
                            if (checkMenu.IsLeaf && checkMenu.Node.MENU_FORM_ID != null)//叶子节点
 | 
						|
                            {
 | 
						|
                                dicMenu.Add(new Guid(CheckKey), checkMenu.Node.MENU_FORM_ID);
 | 
						|
                                // T_PF_FORM t_PF_FORM = this.GetEntities<T_PF_FORM>(x=>x.ORG_ID==filter.OrgId, filter).FirstOrDefault(x => x.ID == checkMenu.Node.MENU_FORM_ID);//OPT
 | 
						|
                                T_PF_MENU t_PF_MENU = this.GetEntities<T_PF_MENU>(x => x.ORG_ID == filter.OrgId, filter).Where(x => x.ID == new Guid(CheckKey)).FirstOrDefault();
 | 
						|
                                if (tenantMenus.Any(x => x.SRC_ID == new Guid(CheckKey)))//菜单存在
 | 
						|
                                {
 | 
						|
                                    #region 生成菜单      
 | 
						|
                                    var tenantMenu = tenantMenus.FirstOrDefault(x => x.SRC_ID == new Guid(CheckKey));
 | 
						|
                                    if (!perOPMenu.Any(x => x.MENU_ID == new Guid(CheckKey)))//未授权
 | 
						|
                                    {
 | 
						|
                                        savePermOPMenu.Add(new T_NW_ROLE_MENU() { ENTERPRISE_ID = tenant.ID, MENU_ID = new Guid(CheckKey), ENTERPRISE_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;
 | 
						|
                                    relationMenu.Add(checkMenu.Node.ID.ToString(), checkMenu.Node.PARENT_ID);
 | 
						|
                                    newRelationMenu.Add(checkMenu.Node.ID.ToString(), tenantMenu.ID.ToString());
 | 
						|
                                    #endregion
 | 
						|
                                }
 | 
						|
                                else
 | 
						|
                                {
 | 
						|
                                    #region 菜单授权
 | 
						|
                                    var newMenuID = Guid.NewGuid();
 | 
						|
                                    savePermOPMenu.Add(new T_NW_ROLE_MENU() { ENTERPRISE_ID = tenant.ID, MENU_ID = new Guid(CheckKey), ENTERPRISE_MENU_ID = newMenuID, ORG_ID = tenant.ID });//菜单授权
 | 
						|
                                    #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;
 | 
						|
                                    relationMenu.Add(checkMenu.Node.ID.ToString(), checkMenu.Node.PARENT_ID);
 | 
						|
                                    newRelationMenu.Add(checkMenu.Node.ID.ToString(), newMenuID.ToString());
 | 
						|
                                    #endregion
 | 
						|
                                }
 | 
						|
                                //savePermPFForm.Add(t_PF_FORM);//添加表单到对应租户
 | 
						|
                                savePermPFMenu.Add(t_PF_MENU);//添加菜单到对应租户                            
 | 
						|
                            }
 | 
						|
                            else
 | 
						|
                            {
 | 
						|
                                dicMenu.Add(new Guid(CheckKey), null);
 | 
						|
                                T_PF_MENU t_PF_MENU = this.GetEntities<T_PF_MENU>(x => x.ORG_ID == filter.OrgId, filter).Where(x => x.ID == new Guid(CheckKey)).FirstOrDefault();
 | 
						|
                                if (tenantMenus.Any(x => x.SRC_ID == new Guid(CheckKey)))//菜单存在
 | 
						|
                                {
 | 
						|
                                    var tenantMenu = tenantMenus.FirstOrDefault(x => x.SRC_ID == new Guid(CheckKey));
 | 
						|
                                    if (!perOPMenu.Any(x => x.MENU_ID == new Guid(CheckKey)))//未授权
 | 
						|
                                    {
 | 
						|
                                        savePermOPMenu.Add(new T_NW_ROLE_MENU() { ENTERPRISE_ID = tenant.ID, MENU_ID = new Guid(CheckKey), ENTERPRISE_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(checkMenu.Node.ID.ToString(), checkMenu.Node.PARENT_ID);
 | 
						|
                                    newRelationMenu.Add(checkMenu.Node.ID.ToString(), tenantMenu.ID.ToString());
 | 
						|
                                }
 | 
						|
                                else
 | 
						|
                                {
 | 
						|
                                    var newMenuID = Guid.NewGuid();
 | 
						|
                                    savePermOPMenu.Add(new T_NW_ROLE_MENU() { ENTERPRISE_ID = tenant.ID, MENU_ID = new Guid(CheckKey), ENTERPRISE_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(checkMenu.Node.ID.ToString(), checkMenu.Node.PARENT_ID);
 | 
						|
                                    newRelationMenu.Add(checkMenu.Node.ID.ToString(), newMenuID.ToString());
 | 
						|
                                }
 | 
						|
                                savePermPFMenu.Add(t_PF_MENU);//添加菜单到对应租户                            
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    var deleteFilter = new BaseFilter(tenant.ID);//OPT创建的菜单,表单等
 | 
						|
                    deleteFilter.Level = -1;
 | 
						|
                    deleteFilter.IsParentData = true;
 | 
						|
                    var tenantMenusTree = this.GetTreeOrderEntities<T_PF_MENU>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, deleteFilter);
 | 
						|
                    foreach (var item in permOPMenu)
 | 
						|
                    {
 | 
						|
                        if (!dicMenu.Keys.Contains(item.MENU_ID))
 | 
						|
                        {
 | 
						|
                            var deleteMenu = tenantMenusTree.FirstOrDefault(x => x.Node.ID == item.ENTERPRISE_MENU_ID);
 | 
						|
                            if (deleteMenu == null)
 | 
						|
                            {
 | 
						|
                                foreach (var tenantMenu in tenantMenusTree)
 | 
						|
                                {
 | 
						|
                                    deleteMenu = selectNode(tenantMenu, item.ENTERPRISE_MENU_ID.ToString());
 | 
						|
                                    if (deleteMenu != null)
 | 
						|
                                        break;
 | 
						|
                                }
 | 
						|
                            }
 | 
						|
                            if (deleteMenu != null)
 | 
						|
                            {
 | 
						|
                                var cancelMenu = this.GetEntities<T_PF_MENU>(x => x.ID == deleteMenu.Node.ID, orgFilter).FirstOrDefault();
 | 
						|
                                cancelMenu.IS_PERMISSION_MENU = false;
 | 
						|
                                deletePermPFMenu.Add(cancelMenu);
 | 
						|
                                deletePermOPMenu.Add(item.ID);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    #region 菜单节点关系
 | 
						|
                    foreach (var item in relationMenu)
 | 
						|
                    {
 | 
						|
                        if (item.Value != null)
 | 
						|
                        {
 | 
						|
                            var newMenuID = newRelationMenu[item.Key];//需要更新父ID
 | 
						|
                            savePermPFMenu.Where(x => x.ID == new Guid(newMenuID)).FirstOrDefault().PARENT_ID = new Guid(newRelationMenu[item.Value.ToString()]);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    #endregion
 | 
						|
                    #region 数据权限
 | 
						|
                    var permissionOrg = this.GetEntities<T_NW_ROLE_DATA_PERM>(x => x.ENTERPRISE_ID == tenant.ID, orgFilter).ToList();
 | 
						|
                    if (tenant.OrgCheckKeys.Count > 0)
 | 
						|
                    {
 | 
						|
                        foreach (var item in tenant.OrgCheckKeys)
 | 
						|
                        {
 | 
						|
                            dicCheckKeys.Add(new Guid(item));
 | 
						|
                            if (!permissionOrg.Any(x => x.PREM_ENTERPRISE_ID == new Guid(item)))
 | 
						|
                            {
 | 
						|
                                saveDataPerm.Add(new T_NW_ROLE_DATA_PERM() { ORG_ID = tenant.ORG_ID, PREM_ENTERPRISE_ID = new Guid(item), ENTERPRISE_ID = tenant.ID });
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        foreach (var item in permissionOrg)
 | 
						|
                        {
 | 
						|
                            if (!dicCheckKeys.Contains(item.PREM_ENTERPRISE_ID))
 | 
						|
                            {
 | 
						|
                                deleteDataPerm.Add(item.ID);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        foreach (var item in permissionOrg)
 | 
						|
                        {
 | 
						|
                            deleteDataPerm.Add(item.ID);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    #endregion
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        tenant.CheckKeys = null;
 | 
						|
                        tenant.OrgCheckKeys = null;
 | 
						|
                        this.UpdateEntity(tenant);
 | 
						|
 | 
						|
                        if (deletePermOPMenu.Count > 0)
 | 
						|
                            this.BantchDeleteEntityNoCommit<T_NW_ROLE_MENU>(deletePermOPMenu);
 | 
						|
                        if (deletePermPFMenu != null && deletePermPFMenu.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(deletePermPFMenu);
 | 
						|
                        if (savePermOPMenu != null && savePermOPMenu.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(savePermOPMenu);
 | 
						|
                        if (savePermPFMenu != null && savePermPFMenu.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(savePermPFMenu);
 | 
						|
                        if (saveUser != null && saveUser.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(saveUser);
 | 
						|
                        if (saveRole != null && saveRole.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(saveRole);
 | 
						|
                        if (saveUserBelongRole != null && saveUserBelongRole.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(saveUserBelongRole);
 | 
						|
 | 
						|
                       
 | 
						|
                        if (addCodeRules != null && addCodeRules.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addCodeRules);                   
 | 
						|
                        if (addSyncTasks != null && addSyncTasks.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addSyncTasks);
 | 
						|
                        if (saveVersions != null && saveVersions.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(saveVersions);
 | 
						|
                     
 | 
						|
                        if (addEnumType != null && addEnumType.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addEnumType);
 | 
						|
                        if (addEnum != null && addEnum.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addEnum);
 | 
						|
                        if (addEnumItem != null && addEnumItem.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addEnumItem);
 | 
						|
                        if (addPicture != null && addPicture.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addPicture);
 | 
						|
                        if (addDataFrequency != null && addDataFrequency.Any())
 | 
						|
                           this.BantchSaveEntityNoCommit(addDataFrequency);
 | 
						|
                        if (saveDataPerm != null && saveDataPerm.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(saveDataPerm);
 | 
						|
                        if (deleteDataPerm != null && deleteDataPerm.Any())
 | 
						|
                            this.BantchDeleteEntityNoCommit<T_NW_ROLE_DATA_PERM>(deleteDataPerm);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                else
 | 
						|
                {
 | 
						|
                    if (permOPMenu.Count > 0)
 | 
						|
                    {
 | 
						|
                        deletePermOPMenu.AddRange(permOPMenu.Select(x => x.ID).ToList());
 | 
						|
                    }
 | 
						|
                    if (tenant.PARENT_ID != null)
 | 
						|
                    {
 | 
						|
                        if (permPFMenu.Count > 0)
 | 
						|
                        {
 | 
						|
                            foreach (var item in permPFMenu)
 | 
						|
                            {
 | 
						|
                                item.IS_PERMISSION_MENU = false;
 | 
						|
                                deletePermPFMenu.Add(item);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    #region 数据权限
 | 
						|
                    var permissionOrg = this.GetEntities<T_NW_ROLE_DATA_PERM>(x => x.ENTERPRISE_ID == tenant.ID, orgFilter).ToList();
 | 
						|
                    if (tenant.OrgCheckKeys.Count > 0)
 | 
						|
                    {
 | 
						|
                        foreach (var item in tenant.OrgCheckKeys)
 | 
						|
                        {
 | 
						|
                            dicCheckKeys.Add(new Guid(item));
 | 
						|
                            if (!permissionOrg.Any(x => x.PREM_ENTERPRISE_ID == new Guid(item)))
 | 
						|
                            {
 | 
						|
                                saveDataPerm.Add(new T_NW_ROLE_DATA_PERM() { ORG_ID = tenant.ORG_ID, PREM_ENTERPRISE_ID = new Guid(item), ENTERPRISE_ID = tenant.ID });
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        foreach (var item in permissionOrg)
 | 
						|
                        {
 | 
						|
                            if (!dicCheckKeys.Contains(item.PREM_ENTERPRISE_ID))
 | 
						|
                            {
 | 
						|
                                deleteDataPerm.Add(item.ID);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        foreach (var item in permissionOrg)
 | 
						|
                        {
 | 
						|
                            deleteDataPerm.Add(item.ID);
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    #endregion
 | 
						|
                    UnifiedCommit(() =>
 | 
						|
                    {
 | 
						|
                        tenant.CheckKeys = null;
 | 
						|
                        tenant.OrgCheckKeys = null;
 | 
						|
                        this.UpdateEntityNoCommit(tenant);
 | 
						|
                        if (deletePermOPMenu.Count > 0)
 | 
						|
                            this.BantchDeleteEntityNoCommit<T_NW_ROLE_MENU>(deletePermOPMenu);
 | 
						|
                        if (deletePermPFMenu != null && deletePermPFMenu.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(deletePermPFMenu);
 | 
						|
                        if (saveDataPerm != null && saveDataPerm.Any())
 | 
						|
                            this.BantchSaveEntityNoCommit(saveDataPerm);
 | 
						|
                        if (deleteDataPerm != null && deleteDataPerm.Any())
 | 
						|
                            this.BantchDeleteEntityNoCommit<T_NW_ROLE_DATA_PERM>(deleteDataPerm);
 | 
						|
                    });
 | 
						|
                }
 | 
						|
                return true;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        public T_FM_ORGANIZATION selectRoot(IEnumerable<T_FM_ORGANIZATION> orgs, T_FM_ORGANIZATION org)
 | 
						|
        {
 | 
						|
            if (org.PARENT_ID == null)
 | 
						|
            {
 | 
						|
                return org;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                T_FM_ORGANIZATION checkRoot = null;
 | 
						|
                T_FM_ORGANIZATION pOrg = orgs.Where(x => x.ID == org.PARENT_ID).FirstOrDefault();
 | 
						|
                checkRoot = selectRoot(orgs, pOrg);
 | 
						|
                if (checkRoot != null)
 | 
						|
                {
 | 
						|
                    return checkRoot;
 | 
						|
                }
 | 
						|
                return checkRoot;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        public TreeNode<T_PF_MENU> selectNode(TreeNode<T_PF_MENU> treeNode, string checkKey)
 | 
						|
        {
 | 
						|
            if (treeNode.Node.ID == new Guid(checkKey))
 | 
						|
            {
 | 
						|
                return treeNode;
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                TreeNode<T_PF_MENU> checkNode = null;
 | 
						|
                foreach (var item in treeNode.Children)
 | 
						|
                {
 | 
						|
                    checkNode = selectNode(item, checkKey);
 | 
						|
                    if (checkNode != null)
 | 
						|
                    {
 | 
						|
                        return checkNode;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                return checkNode;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 树形授权
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="role"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        [HttpPost, Route("GetTreePermissionForms")]
 | 
						|
        public JsonActionResult<RolePermissionResul> GetTreePermissionForms([FromBody] KeywordPageFilter pageFilter)
 | 
						|
        {
 | 
						|
            return SafeExecute<RolePermissionResul>(() =>
 | 
						|
            {
 | 
						|
                List<RolePermissionTreeModel> result = new List<RolePermissionTreeModel>();//最终返回树结果
 | 
						|
                var orgfilter = new BaseFilter();
 | 
						|
                orgfilter.IgnoreOrgRule = true;
 | 
						|
                var org = this.GetEntities<T_FM_ORGANIZATION>(x => x.ID == new Guid(pageFilter.Keyword), orgfilter).FirstOrDefault();
 | 
						|
                bool isRoot = org.PARENT_ID == null ? true : false;
 | 
						|
                var filter = new BaseFilter(pageFilter.OrgId);//OPT OrgId
 | 
						|
                filter.Level = -1;
 | 
						|
                filter.IsParentData = true;
 | 
						|
                string tenantId = pageFilter.Keyword;//租户ID
 | 
						|
                List<T_NW_ROLE_MENU> permissionMenu = null;
 | 
						|
                var menuTree = this.GetTreeOrderEntities<T_PF_MENU>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.PLATFORM_CATEGORY == 0, filter);
 | 
						|
                if (!string.IsNullOrEmpty(tenantId))
 | 
						|
                {
 | 
						|
                    permissionMenu = this.GetEntities<T_NW_ROLE_MENU>(x => x.ENTERPRISE_ID == new Guid(tenantId), orgfilter).ToList();
 | 
						|
                }
 | 
						|
                List<FormInfo> formInfos = new List<FormInfo>();
 | 
						|
                List<FormInfo> orgInfos = new List<FormInfo>();
 | 
						|
                List<string> checks = new List<string>();
 | 
						|
                List<string> checkLastKey = new List<string>();
 | 
						|
                List<string> orgChecks = new List<string>();
 | 
						|
                List<string> orgCheckLastKey = new List<string>();
 | 
						|
                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);
 | 
						|
                }
 | 
						|
                #region 数据授权
 | 
						|
                var orgFilter = new BaseFilter();
 | 
						|
                orgFilter.IgnoreOrgRule = true;
 | 
						|
                var orgs = this.GetTreeOrderEntities<T_FM_ORGANIZATION>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.ORG_ID == pageFilter.OrgId, orgFilter);
 | 
						|
            
 | 
						|
                var permissionOrg = this.GetEntities<T_NW_ROLE_DATA_PERM>(x => x.ENTERPRISE_ID == new Guid(tenantId), filter).ToList();
 | 
						|
                foreach (var item in orgs)
 | 
						|
                {
 | 
						|
                    AddOrgChildren(item, permissionOrg, orgInfos);
 | 
						|
                }
 | 
						|
                List<RolePermissionTreeModel> orgResult = new List<RolePermissionTreeModel>();//最终返回树结果
 | 
						|
                orgResult = RolePermissionTreeModel.GetRolePermissionTree(orgInfos);
 | 
						|
                orgResult = orgResult[0].children;
 | 
						|
                foreach (var item in orgResult)
 | 
						|
                {
 | 
						|
                    SelectCheck(item, orgChecks, orgCheckLastKey);
 | 
						|
                }
 | 
						|
                #endregion
 | 
						|
                var rlt = new RolePermissionResul()
 | 
						|
                {
 | 
						|
                    checks = checks,
 | 
						|
                    checkLastKey = checkLastKey,
 | 
						|
                    rolePermissionTreeModels = result,
 | 
						|
                    isRoot = isRoot,
 | 
						|
                    orgChecks = orgChecks,
 | 
						|
                    orgCheckLastKey = orgCheckLastKey,
 | 
						|
                    orgRolePermissionTreeModels = orgResult
 | 
						|
                };
 | 
						|
                return rlt;
 | 
						|
            });
 | 
						|
        }
 | 
						|
        public void AddChildren(TreeNode<T_PF_MENU> treeNode, IEnumerable<T_NW_ROLE_MENU> permissionMenu, List<FormInfo> 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 AddOrgChildren(TreeNode<T_FM_ORGANIZATION> treeNode, IEnumerable<T_NW_ROLE_DATA_PERM> permissionOrg, List<FormInfo> orgInfos)
 | 
						|
        {
 | 
						|
            var permission = false;
 | 
						|
            if (!treeNode.Node.IS_LEAF)
 | 
						|
            {
 | 
						|
                permission = permissionOrg == null ? false : permissionOrg.Any(x => x.PREM_ENTERPRISE_ID == treeNode.Node.ID);
 | 
						|
                orgInfos.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)
 | 
						|
                {
 | 
						|
                    AddOrgChildren(item, permissionOrg, orgInfos);
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                permission = permissionOrg == null ? false : permissionOrg.Any(x => x.PREM_ENTERPRISE_ID == treeNode.Node.ID);
 | 
						|
                orgInfos.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<string> checks, List<string> 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);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
        }
 | 
						|
 | 
						|
    }
 | 
						|
}
 |