70 lines
2.1 KiB
C#
70 lines
2.1 KiB
C#
|
|
using APT.BaseData.Domain.IServices;
|
|||
|
|
using APT.Infrastructure.Core;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using APT.Infrastructure.Api;
|
|||
|
|
namespace APT.BaseData.Services.Sys
|
|||
|
|
{
|
|||
|
|
public class FMOrganizationService: CommonService, IFMOrganizationService
|
|||
|
|
{
|
|||
|
|
public FMOrganizationService(IRepository repository)
|
|||
|
|
: base(repository)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 重置组织缓存
|
|||
|
|
/// </summary>
|
|||
|
|
public void SetOrgCache()
|
|||
|
|
{
|
|||
|
|
var orgs = this.GetEntities<T_FM_ORGANIZATION>(t => t.ENABLE_STATUS==0, new BaseFilter()).ToList();
|
|||
|
|
SysPermission sysPermission = APT.Infrastructure.Api.AppContext.SysPermission;
|
|||
|
|
if (sysPermission == null)
|
|||
|
|
{
|
|||
|
|
sysPermission = new SysPermission();
|
|||
|
|
APT.Infrastructure.Api.AppContext.SysPermission = sysPermission;
|
|||
|
|
}
|
|||
|
|
this.DoGetChildrenOrgCache(orgs, null, null, sysPermission);
|
|||
|
|
foreach (var o in orgs)
|
|||
|
|
sysPermission.OrgCodeCaches[o.CODE] = o.ID;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private void DoGetChildrenOrgCache(List<T_FM_ORGANIZATION> orgList,
|
|||
|
|
Guid? parentId, OrgCache parentCache, SysPermission sysPermission)
|
|||
|
|
{
|
|||
|
|
if (orgList == null || !orgList.Any()) return;
|
|||
|
|
var tempOrgs = orgList.Where(t => t.PARENT_ID == parentId).ToList();
|
|||
|
|
if (tempOrgs != null && tempOrgs.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var item in tempOrgs)
|
|||
|
|
{
|
|||
|
|
OrgCache orgCache = new OrgCache();
|
|||
|
|
orgCache.OrgId = item.ID;
|
|||
|
|
orgCache.Code = item.CODE;
|
|||
|
|
sysPermission.OrgCaches[item.ID] = orgCache;
|
|||
|
|
if (parentCache != null)
|
|||
|
|
{
|
|||
|
|
parentCache.AllChildrenIds.Add(item.ID);
|
|||
|
|
if (parentCache.AllParentIds != null && parentCache.AllParentIds.Any())
|
|||
|
|
{
|
|||
|
|
orgCache.AllParentIds.AddRange(parentCache.AllParentIds);
|
|||
|
|
foreach(var pId in parentCache.AllParentIds)
|
|||
|
|
{
|
|||
|
|
OrgCache pOrgCache = null;
|
|||
|
|
if (sysPermission.OrgCaches.TryGetValue(pId, out pOrgCache))
|
|||
|
|
{
|
|||
|
|
if (!pOrgCache.AllChildrenIds.Contains(item.ID))
|
|||
|
|
pOrgCache.AllChildrenIds.Add(item.ID);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
orgCache.AllParentIds.Add(parentCache.OrgId);
|
|||
|
|
}
|
|||
|
|
this.DoGetChildrenOrgCache(orgList, item.ID, orgCache, sysPermission);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|