using iWare.Wms.Core; using Furion.DatabaseAccessor; using Furion.DependencyInjection; using Microsoft.EntityFrameworkCore; namespace iWare.Wms.Application { /// /// 员工附属机构和职位服务 /// public class SysEmpExtOrgPosService : ISysEmpExtOrgPosService, ITransient { private readonly IRepository _sysEmpExtOrgPosRep; // 附属机构表仓储 public SysEmpExtOrgPosService(IRepository sysEmpExtOrgPosRep) { _sysEmpExtOrgPosRep = sysEmpExtOrgPosRep; } /// /// 保存或编辑附属机构相关信息 /// /// [UnitOfWork] public async Task AddOrUpdate(long empId, List extIdList) { // 先删除 await DeleteEmpExtInfoByUserId(empId); var extOrgPos = extIdList.Select(u => new SysEmpExtOrgPos { SysEmpId = empId, SysOrgId = u.OrgId, SysPosId = u.PosId }).ToList(); await _sysEmpExtOrgPosRep.InsertAsync(extOrgPos); } /// /// 获取附属机构和职位信息 /// /// /// public async Task> GetEmpExtOrgPosList(long 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(); } /// /// 根据机构Id判断该附属机构下是否有员工 /// /// /// public async Task HasExtOrgEmp(long orgId) { return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysOrgId == orgId); } /// /// 根据职位Id判断该附属职位下是否有员工 /// /// /// public async Task HasExtPosEmp(long posId) { return await _sysEmpExtOrgPosRep.DetachedEntities.AnyAsync(u => u.SysPosId == posId); } /// /// 根据员工Id删除对应的员工-附属信息 /// /// /// public async Task DeleteEmpExtInfoByUserId(long empId) { var eeoprList = await _sysEmpExtOrgPosRep.AsQueryable(u => u.SysEmpId == empId, false).ToListAsync(); await _sysEmpExtOrgPosRep.DeleteAsync(eeoprList); } } }