231 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			231 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
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<TreeNode<T_FM_DEPARTMENT>> TreeData(KeywordFilter filter)
 | 
						|
        // {
 | 
						|
        //     return this.GetTreeOrderEntities<T_FM_DEPARTMENT>(null, filter);
 | 
						|
        // }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 返回所有下级部门节点
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="orgId"></param>
 | 
						|
        /// <param name="listDepIDInt"></param>
 | 
						|
        /// <param name="departmentIdPs"></param>
 | 
						|
        public void GetDepartmentIds(Guid orgId, List<Guid> listDepIDInt, ref List<Guid> departmentIdPs)
 | 
						|
        {
 | 
						|
            var listDep = GetEntities<T_FM_DEPARTMENT>(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);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 判断是否要权限限制
 | 
						|
        /// 要返回所有下级部门节点
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="orgId"></param>
 | 
						|
        /// <param name="listDepIDInt"></param>
 | 
						|
        /// <param name="departmentIdPs"></param>
 | 
						|
        /// <param name="isAll">是否不限权限</param>
 | 
						|
        public void GetDepartmentIds(Guid orgId, List<Guid> listDepIDInt, ref List<Guid> 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<T_FM_DEPARTMENT>(APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value);
 | 
						|
                if (dep != null && dep.DEPARTMENT_STATUS == 2)
 | 
						|
                {
 | 
						|
                    isAll = true;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            if (!isAll)
 | 
						|
            {
 | 
						|
                List<Guid> departmentIds = new List<Guid>() { APT.Infrastructure.Api.AppContext.CurrentSession.DepartmentID.Value };
 | 
						|
                GetDepartmentIds(orgId, new List<Guid>() { 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);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 返回所有上级部门节点
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="orgId"></param>
 | 
						|
        /// <param name="listDepIDInt"></param>
 | 
						|
        /// <param name="departmentIdPs"></param>
 | 
						|
        public void GetParentDepartmentIds(Guid orgId, List<Guid> listDepIDInt, ref List<Guid> departmentIdPs)
 | 
						|
        {
 | 
						|
            var listDep = GetEntities<T_FM_DEPARTMENT>(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);
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 获取组织ID的部门级组织
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="DepartmentID"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public T_FM_DEPARTMENT GetDEPARTMENTLevel(Guid DepartmentID)
 | 
						|
        {
 | 
						|
            if (DepartmentID != Guid.Empty)
 | 
						|
            {
 | 
						|
                var dep = GetEntity<T_FM_DEPARTMENT>(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;
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 获取人事部
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="DepName"></param>
 | 
						|
        /// <param name="paths"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public T_FM_DEPARTMENT GetRSDep(string DepName = "企业管理部", params string[] paths)
 | 
						|
        {
 | 
						|
            T_FM_DEPARTMENT result = new T_FM_DEPARTMENT();
 | 
						|
            result = GetEntity<T_FM_DEPARTMENT>(e => e.DEPARTMENT_TYPE == 0 && e.NAME.Contains(DepName), paths == null ? paths : null);//部门级
 | 
						|
            return result;
 | 
						|
        }
 | 
						|
        /// <summary>
 | 
						|
        /// 获取人事部
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="DepName"></param>
 | 
						|
        /// <param name="paths"></param>
 | 
						|
        /// <returns></returns>
 | 
						|
        public void AddDocument(string MODULE, string FORM, string FILE_NAME, string VALUE_FIELD, string FILE_TYPE, DateTime VALID_TIME, Guid DATA_ID, List<Guid?> 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<T_SC_DOCUMENT_LIBRARY_DETAIL_FILE> documentDetailFiles = new List<T_SC_DOCUMENT_LIBRARY_DETAIL_FILE>();
 | 
						|
 | 
						|
            ICollection<T_SC_DOCUMENT_LIBRARY_DETAIL> Nav_Details = null;
 | 
						|
            document = GetEntity<T_SC_DOCUMENT_LIBRARY>(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)
 | 
						|
                {
 | 
						|
                    var version = document.Nav_Details.OrderByDescending(t => t.VERSION).FirstOrDefault();
 | 
						|
                    if (version != null)
 | 
						|
                    {
 | 
						|
                        versionNum = version.VERSION;
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        versionNum = 0;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                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);
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |