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