init commit

This commit is contained in:
路 范
2022-03-30 17:54:33 +08:00
parent df01841625
commit 904bdd16cd
500 changed files with 217251 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
namespace Ewide.Core.Service
{
/// <summary>
/// 附属机构和职位参数
/// </summary>
public class EmpExtOrgPosOutput
{
/// <summary>
/// 附属机构id
/// </summary>
public string OrgId { get; set; }
/// <summary>
/// 附属机构编码
/// </summary>
public string OrgCode { get; set; }
/// <summary>
/// 附属机构名称
/// </summary>
public string OrgName { get; set; }
/// <summary>
/// 附属职位id
/// </summary>
public string PosId { get; set; }
/// <summary>
/// 附属职位编码
/// </summary>
public string PosCode { get; set; }
/// <summary>
/// 附属职位名称
/// </summary>
public string PosName { get; set; }
}
}

View File

@@ -0,0 +1,35 @@
using System.Collections.Generic;
namespace Ewide.Core.Service
{
/// <summary>
/// 员工信息参数
/// </summary>
public class EmpOutput
{
/// <summary>
/// 工号
/// </summary>
public string JobNum { get; set; }
/// <summary>
/// 机构id
/// </summary>
public string OrgId { get; set; }
/// <summary>
/// 机构名称
/// </summary>
public string OrgName { get; set; }
/// <summary>
/// 机构与职位信息
/// </summary>
public List<EmpExtOrgPosOutput> ExtOrgPos { get; set; } = new List<EmpExtOrgPosOutput>();
/// <summary>
/// 职位信息
/// </summary>
public List<EmpPosOutput> Positions { get; set; } = new List<EmpPosOutput>();
}
}

View File

@@ -0,0 +1,40 @@
using System.Collections.Generic;
namespace Ewide.Core.Service
{
/// <summary>
/// 员工信息参数2
/// </summary>
public class EmpOutput2
{
/// <summary>
/// 员工Id
/// </summary>
public string Id { get; set; }
/// <summary>
/// 工号
/// </summary>
public string JobNum { get; set; }
/// <summary>
/// 机构Id
/// </summary>
public string OrgId { get; set; }
/// <summary>
/// 机构名称
/// </summary>
public string OrgName { get; set; }
/// <summary>
/// 附属机构
/// </summary>
public List<EmpExtOrgPosOutput> ExtIds { get; set; } = new List<EmpExtOrgPosOutput>();
/// <summary>
/// 职位集合
/// </summary>
public List<string> PosIdList { get; set; } = new List<string>();
}
}

View File

@@ -0,0 +1,23 @@
namespace Ewide.Core.Service
{
/// <summary>
/// 员工职位参数
/// </summary>
public class EmpPosOutput
{
/// <summary>
/// 职位Id
/// </summary>
public string PosId { get; set; }
/// <summary>
/// 职位编码
/// </summary>
public string PosCode { get; set; }
/// <summary>
/// 职位名称
/// </summary>
public string PosName { get; set; }
}
}

View File

@@ -0,0 +1,14 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Ewide.Core.Service
{
public interface ISysEmpExtOrgPosService
{
Task AddOrUpdate(string empId, List<EmpExtOrgPosOutput> extIdList);
Task DeleteEmpExtInfoByUserId(string empId);
Task<List<EmpExtOrgPosOutput>> GetEmpExtOrgPosList(string empId);
Task<bool> HasExtOrgEmp(string orgId);
Task<bool> HasExtPosEmp(string posId);
}
}

View File

@@ -0,0 +1,13 @@
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Ewide.Core.Service
{
public interface ISysEmpPosService
{
Task AddOrUpdate(string empId, List<string> posIdList);
Task DeleteEmpPosInfoByUserId(string empId);
Task<List<EmpPosOutput>> GetEmpPosList(string empId);
Task<bool> HasPosEmp(string posId);
}
}

View File

@@ -0,0 +1,14 @@
using System.Threading.Tasks;
namespace Ewide.Core.Service
{
public interface ISysEmpService
{
Task AddOrUpdate(EmpOutput2 sysEmpParam);
Task DeleteEmpInfoByUserId(string empId);
Task<EmpOutput> GetEmpInfo(string empId);
Task<string> GetEmpOrgId(string empId);
Task<bool> HasOrgEmp(string orgId);
Task UpdateEmpOrgInfo(string orgId, string orgName);
}
}

View File

@@ -0,0 +1,100 @@
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Ewide.Core.Service
{
/// <summary>
/// 员工附属机构和职位服务
/// </summary>
public class SysEmpExtOrgPosService : ISysEmpExtOrgPosService, ITransient
{
private readonly IRepository<SysEmpExtOrgPos> _sysEmpExtOrgPosRep; // 附属机构表仓储
public SysEmpExtOrgPosService(IRepository<SysEmpExtOrgPos> sysEmpExtOrgPosRep)
{
_sysEmpExtOrgPosRep = sysEmpExtOrgPosRep;
}
/// <summary>
/// 保存或编辑附属机构相关信息
/// </summary>
/// <returns></returns>
[UnitOfWork]
public async Task AddOrUpdate(string empId, List<EmpExtOrgPosOutput> extIdList)
{
// 先删除
await DeleteEmpExtInfoByUserId(empId);
var tasks = new List<Task>();
extIdList.ForEach(u =>
{
tasks.Add(new SysEmpExtOrgPos
{
SysEmpId = empId,
SysOrgId = u.OrgId,
SysPosId = u.PosId
}.InsertAsync());
});
await Task.WhenAll(tasks);
}
/// <summary>
/// 获取附属机构和职位信息
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public async Task<List<EmpExtOrgPosOutput>> GetEmpExtOrgPosList(string empId)
{
return await _sysEmpExtOrgPosRep.DetachedEntities
.Where(u => u.SysEmpId == empId)
.Select(u => new EmpExtOrgPosOutput
{
OrgId = u.SysOrg.Id,
OrgCode = u.SysOrg.Code,
OrgName = u.SysOrg.Name,
PosId = u.SysPos.Id,
PosCode = u.SysPos.Code,
PosName = u.SysPos.Name
}).ToListAsync();
}
/// <summary>
/// 根据机构Id判断该附属机构下是否有员工
/// </summary>
/// <param name="orgId"></param>
/// <returns></returns>
public async Task<bool> HasExtOrgEmp(string orgId)
{
return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysOrgId == orgId);
}
/// <summary>
/// 根据职位Id判断该附属职位下是否有员工
/// </summary>
/// <param name="posId"></param>
/// <returns></returns>
public async Task<bool> HasExtPosEmp(string posId)
{
return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId);
}
/// <summary>
/// 根据员工Id删除对应的员工-附属信息
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public async Task DeleteEmpExtInfoByUserId(string empId)
{
var empExtOrgPos = await _sysEmpExtOrgPosRep.Where(u => u.SysEmpId == empId).ToListAsync();
empExtOrgPos.ForEach(u =>
{
u.Delete();
});
}
}
}

View File

@@ -0,0 +1,85 @@
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Ewide.Core.Service
{
/// <summary>
/// 员工职位服务
/// </summary>
public class SysEmpPosService : ISysEmpPosService, ITransient
{
private readonly IRepository<SysEmpPos> _sysEmpPosRep; // 员工职位表仓储
public SysEmpPosService(IRepository<SysEmpPos> sysEmpPosRep)
{
_sysEmpPosRep = sysEmpPosRep;
}
/// <summary>
/// 增加或编辑员工职位相关信息
/// </summary>
/// <param name="empId">员工Id用户Id</param>
/// <param name="posIdList">职位id集合</param>
/// <returns></returns>
[UnitOfWork]
public async Task AddOrUpdate(string empId, List<string> posIdList)
{
// 先删除
await DeleteEmpPosInfoByUserId(empId);
posIdList.ForEach(u =>
{
new SysEmpPos
{
SysEmpId = empId,
SysPosId = u
}.Insert();
});
}
/// <summary>
/// 获取所属职位信息
/// </summary>
/// <param name="empId">员工Id用户Id</param>
public async Task<List<EmpPosOutput>> GetEmpPosList(string empId)
{
return await _sysEmpPosRep.DetachedEntities
.Where(u => u.SysEmpId == empId)
.Select(u => new EmpPosOutput
{
PosId = u.SysPos.Id,
PosCode = u.SysPos.Code,
PosName = u.SysPos.Name
}).ToListAsync();
}
/// <summary>
/// 根据职位Id判断该职位下是否有员工
/// </summary>
/// <param name="posId"></param>
/// <returns></returns>
public async Task<bool> HasPosEmp(string posId)
{
return await _sysEmpPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId);
}
/// <summary>
/// 根据员工Id删除对用的员工-职位信息
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public async Task DeleteEmpPosInfoByUserId(string empId)
{
var empPos = await _sysEmpPosRep.Where(u => u.SysEmpId == empId).ToListAsync();
empPos.ForEach(u =>
{
u.Delete();
});
}
}
}

View File

@@ -0,0 +1,126 @@
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DependencyInjection;
using Mapster;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
namespace Ewide.Core.Service
{
/// <summary>
/// 员工服务
/// </summary>
public class SysEmpService : ISysEmpService, ITransient
{
private readonly IRepository<SysEmp> _sysEmpRep; // 员工表仓储
private readonly ISysEmpExtOrgPosService _sysEmpExtOrgPosService;
private readonly ISysEmpPosService _sysEmpPosService;
public SysEmpService(IRepository<SysEmp> sysEmpRep,
ISysEmpExtOrgPosService sysEmpExtOrgPosService,
ISysEmpPosService sysEmpPosService)
{
_sysEmpRep = sysEmpRep;
_sysEmpExtOrgPosService = sysEmpExtOrgPosService;
_sysEmpPosService = sysEmpPosService;
}
/// <summary>
/// 获取用户员工相关信息(包括登录)
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public async Task<EmpOutput> GetEmpInfo(string empId)
{
var empInfoOutput = new EmpOutput();
var sysEmp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false);
if (sysEmp == null) return empInfoOutput;
empInfoOutput = sysEmp.Adapt<EmpOutput>();
empInfoOutput.ExtOrgPos = await _sysEmpExtOrgPosService.GetEmpExtOrgPosList(empId);
empInfoOutput.Positions = await _sysEmpPosService.GetEmpPosList(empId);
return empInfoOutput;
}
/// <summary>
/// 增加或编辑员工相关信息
/// </summary>
/// <returns></returns>
[UnitOfWork]
public async Task AddOrUpdate(EmpOutput2 sysEmpParam)
{
// 先删除员工信息
var emps = await _sysEmpRep.Where(u => u.Id == sysEmpParam.Id).ToListAsync();
emps.ForEach(u =>
{
u.Delete();
});
// 再新增新员工信息
var emp = sysEmpParam.Adapt<SysEmp>();
emp.OrgName = (await Db.GetRepository<SysOrg>().DetachedEntities.FirstOrDefaultAsync(p => p.Id.Equals(emp.OrgId))).Name;
await _sysEmpRep.InsertAsync(emp);
// 更新附属机构职位信息
await _sysEmpExtOrgPosService.AddOrUpdate(emp.Id, sysEmpParam.ExtIds);
// 更新职位信息
await _sysEmpPosService.AddOrUpdate(emp.Id, sysEmpParam.PosIdList);
}
/// <summary>
/// 修改员工相关机构信息
/// </summary>
/// <param name="orgId"></param>
/// <param name="orgName"></param>
/// <returns></returns>
public async Task UpdateEmpOrgInfo(string orgId, string orgName)
{
var emps = await _sysEmpRep.Where(u => u.OrgId == orgId).ToListAsync();
emps.ForEach(u =>
{
u.OrgName = orgName;
});
}
/// <summary>
/// 根据机构Id判断该机构下是否有员工
/// </summary>
/// <param name="orgId"></param>
/// <returns></returns>
public async Task<bool> HasOrgEmp(string orgId)
{
return await _sysEmpRep.DetachedEntities.AnyAsync(u => u.OrgId == orgId);
}
/// <summary>
/// 根据员工Id删除对应的员工表信息
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
[UnitOfWork]
public async Task DeleteEmpInfoByUserId(string empId)
{
// 删除员工信息
var emp = await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId);
await emp.DeleteAsync();
// 级联删除对应的员工-附属信息
await _sysEmpExtOrgPosService.DeleteEmpExtInfoByUserId(empId);
// 级联删除对用的员工-职位信息
await _sysEmpPosService.DeleteEmpPosInfoByUserId(empId);
}
/// <summary>
/// 获取员工机构Id
/// </summary>
/// <param name="empId"></param>
/// <returns></returns>
public async Task<string> GetEmpOrgId(string empId)
{
return (await _sysEmpRep.FirstOrDefaultAsync(u => u.Id == empId, false)).OrgId;
}
}
}