using APT.Infrastructure.Core; using APT.BaseData.Domain.Entities.FM; using APT.BaseData.Domain.IServices.FM; using System.Collections.Generic; using APT.Infrastructure.Api; using System; using System.Linq; using APT.BaseData.Domain.Enums; using APT.MS.Domain.Entities.SC.SC; using NPOI.SS.Formula.Functions; using APT.MS.Domain.Enums; namespace APT.BaseData.Services.Services.FM { public partial class FMDepartmentService : CommonService, IFMDepartmentService { public FMDepartmentService(IRepository repository) : base(repository) { } //public IEnumerable> TreeData(KeywordFilter filter) // { // return this.GetTreeOrderEntities(null, filter); // } /// /// 返回所有下级部门节点 /// /// /// /// public void GetDepartmentIds(Guid orgId, List listDepIDInt, ref List departmentIdPs) { var listDep = GetEntities(e => e.ORG_ID == orgId && !e.IS_DELETED && e.PARENT_ID.HasValue && listDepIDInt.Contains(e.PARENT_ID.Value)); if (listDep != null && listDep.Any()) { listDepIDInt = listDep.Select(e => e.ID).ToList(); departmentIdPs.AddRange(listDepIDInt); GetDepartmentIds(orgId, listDepIDInt, ref departmentIdPs); } } /// /// 判断是否要权限限制 /// 要返回所有下级部门节点 /// /// /// /// /// 是否不限权限 public void GetDepartmentIds(Guid orgId, List listDepIDInt, ref List departmentIdPs, ref bool isAll) { isAll = false; if (APT.Infrastructure.Api.AppContext.CurrentSession.UserName.StartsWith("admin"))//UserName == "admin" { isAll = true; } if (!isAll && APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.HasValue) { var dep = GetEntity(APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value); if (dep != null && dep.DEPARTMENT_STATUS == 2) { isAll = true; } } if (!isAll) { List departmentIds = new List() { APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value }; GetDepartmentIds(orgId, new List() { APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value }, ref departmentIds); //departmentIdPs.AddRange(departmentIds); //departmentIdPs = departmentIdPs.Distinct().ToList(); foreach (var item in departmentIds) { if (!departmentIdPs.Contains(item)) { departmentIdPs.Add(item); } } } } /// /// 返回所有上级部门节点 /// /// /// /// public void GetParentDepartmentIds(Guid orgId, List listDepIDInt, ref List departmentIdPs) { var listDep = GetEntities(e => e.ORG_ID == orgId && !e.IS_DELETED && listDepIDInt.Contains(e.ID)); if (listDep != null && listDep.Any()) { listDepIDInt = listDep.Where(t => t.PARENT_ID.HasValue).Select(e => e.PARENT_ID.Value).ToList(); departmentIdPs.AddRange(listDepIDInt); GetParentDepartmentIds(orgId, listDepIDInt, ref departmentIdPs); } } /// /// 获取组织ID的部门级组织 /// /// /// public T_FM_DEPARTMENT GetDEPARTMENTLevel(Guid DepartmentID) { if (DepartmentID != Guid.Empty) { var dep = GetEntity(DepartmentID, new string[] { "Nav_Parent" }); if (dep.DEPARTMENT_TYPE == 0)//FMDepartmentType.部门 3 公司//FMDepartmentType.公司 { return dep; } else if (dep.DEPARTMENT_TYPE == 3) { return dep; } else if (dep.Nav_Parent.DEPARTMENT_TYPE == 0) { return dep.Nav_Parent; } else { if (!dep.Nav_Parent.PARENT_ID.HasValue) { return null; } else { return GetDEPARTMENTLevel(dep.Nav_Parent.PARENT_ID.Value); } } } return null; } /// /// 获取人事部 /// /// /// /// public T_FM_DEPARTMENT GetRSDep(string DepName = "企业管理部", params string[] paths) { T_FM_DEPARTMENT result = new T_FM_DEPARTMENT(); result = GetEntity(e => e.DEPARTMENT_TYPE == 0 && e.NAME.Contains(DepName), paths == null ? paths : null);//部门级 return result; } /// /// 获取人事部 /// /// /// /// public void AddDocument(string MODULE, string FORM, string FILE_NAME, string VALUE_FIELD, string FILE_TYPE, DateTime VALID_TIME, Guid DATA_ID, List IMG_FILE_IDs, Guid? USER_ID) { T_SC_DOCUMENT_LIBRARY document = null; T_SC_DOCUMENT_LIBRARY_DETAIL documentDetail = new T_SC_DOCUMENT_LIBRARY_DETAIL(); T_SC_DOCUMENT_LIBRARY_DETAIL_FILE documentDetailFile = new T_SC_DOCUMENT_LIBRARY_DETAIL_FILE(); List documentDetailFiles = new List(); ICollection Nav_Details = null; document = GetEntity(t => t.MODULE == MODULE && t.FORM == FORM && t.FILE_NAME == FILE_NAME, "Nav_Details"); decimal? versionNum = 1; Guid? orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId; if (document == null) { document = new T_SC_DOCUMENT_LIBRARY(); document.ID = Guid.NewGuid(); document.MODULE = MODULE; document.FORM = FORM; document.FILE_NAME = FILE_NAME; document.VALUE_FIELD = VALUE_FIELD; document.FILE_TYPE = FILE_TYPE; document.VALID_TIME = VALID_TIME; document.ORG_ID = orgId; } else { document.VALID_TIME = VALID_TIME; if (document.Nav_Details != null) { versionNum = document.Nav_Details.OrderByDescending(t => t.VERSION).FirstOrDefault().VERSION; } foreach (var item in document.Nav_Details) { item.STATUS = SCStandardSystemEnums.失效; } Nav_Details = document.Nav_Details; } documentDetail.ID = Guid.NewGuid(); documentDetail.DOCUMENT_LIBRARY_ID = document.ID; versionNum++; documentDetail.VERSION = versionNum; documentDetail.DATA_ID = DATA_ID; documentDetail.NAME = FILE_NAME; documentDetail.YEAR = DateTime.Now.Year.ToString(); documentDetail.COMPILE_TIME = DateTime.Now; documentDetail.PUBLISH_TIME = DateTime.Now; documentDetail.ORG_ID = orgId; documentDetail.USER_ID = USER_ID; foreach (var IMG_FILE_ID in IMG_FILE_IDs) { documentDetailFile.DOCUMENT_LIBRARY_ID = documentDetail.ID; documentDetailFile.IMG_FILE_ID = IMG_FILE_ID; documentDetailFile.ORG_ID = orgId; documentDetailFiles.Add(documentDetailFile); } UnifiedCommit(() => { UpdateEntityNoCommit(document); if (documentDetail != null) AddEntityNoCommit(documentDetail); if (documentDetailFiles != null && documentDetailFiles.Any()) BantchAddEntityNoCommit(documentDetailFiles); if (Nav_Details != null && Nav_Details.Any()) BantchSaveEntityNoCommit(Nav_Details); }); } } }