init commit
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
}
|
||||
35
20220330_Vote/Ewide.Core/Service/Emp/Dto/EmpOutput.cs
Normal file
35
20220330_Vote/Ewide.Core/Service/Emp/Dto/EmpOutput.cs
Normal 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>();
|
||||
}
|
||||
}
|
||||
40
20220330_Vote/Ewide.Core/Service/Emp/Dto/EmpOutput2.cs
Normal file
40
20220330_Vote/Ewide.Core/Service/Emp/Dto/EmpOutput2.cs
Normal 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>();
|
||||
}
|
||||
}
|
||||
23
20220330_Vote/Ewide.Core/Service/Emp/Dto/EmpPosOutput.cs
Normal file
23
20220330_Vote/Ewide.Core/Service/Emp/Dto/EmpPosOutput.cs
Normal 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; }
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
13
20220330_Vote/Ewide.Core/Service/Emp/ISysEmpPosService.cs
Normal file
13
20220330_Vote/Ewide.Core/Service/Emp/ISysEmpPosService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
14
20220330_Vote/Ewide.Core/Service/Emp/ISysEmpService.cs
Normal file
14
20220330_Vote/Ewide.Core/Service/Emp/ISysEmpService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
100
20220330_Vote/Ewide.Core/Service/Emp/SysEmpExtOrgPosService.cs
Normal file
100
20220330_Vote/Ewide.Core/Service/Emp/SysEmpExtOrgPosService.cs
Normal 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();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
85
20220330_Vote/Ewide.Core/Service/Emp/SysEmpPosService.cs
Normal file
85
20220330_Vote/Ewide.Core/Service/Emp/SysEmpPosService.cs
Normal 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();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
126
20220330_Vote/Ewide.Core/Service/Emp/SysEmpService.cs
Normal file
126
20220330_Vote/Ewide.Core/Service/Emp/SysEmpService.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user