d_sms_service/APT.BaseData.Services/Services/FM/FMDepartmentService.cs
2024-10-28 13:45:58 +08:00

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);
});
}
}
}