using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using ZhonTai.Admin.Core.Dto; using ZhonTai.Admin.Services; using NPP.SmartSchedue.Api.Contracts.Services.Personnel; using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Input; using NPP.SmartSchedue.Api.Contracts.Services.Personnel.Output; using NPP.SmartSchedue.Api.Repositories.Personnel; using NPP.SmartSchedue.Api.Contracts.Domain.Personnel; using ZhonTai.DynamicApi; using ZhonTai.DynamicApi.Attributes; namespace NPP.SmartSchedue.Api.Services.Personnel; /// /// 人员工作限制服务 /// [DynamicApi(Area = "app")] public class PersonnelWorkLimitService : BaseService, IPersonnelWorkLimitService, IDynamicApi { private readonly PersonnelWorkLimitRepository _personnelWorkLimitRepository; public PersonnelWorkLimitService(PersonnelWorkLimitRepository personnelWorkLimitRepository) { _personnelWorkLimitRepository = personnelWorkLimitRepository; } /// /// 查询 /// /// /// public async Task GetAsync(long id) { var output = await _personnelWorkLimitRepository.Select .WhereDynamic(id) .ToOneAsync(); return output; } /// /// 查询分页 /// /// /// [HttpPost] public async Task> GetPageAsync(PageInput input) { var list = await _personnelWorkLimitRepository.Select .WhereIf(input.Filter?.PersonnelId.HasValue == true, a => a.PersonnelId == input.Filter.PersonnelId) .Count(out var total) .OrderByDescending(a => a.Id) .Page(input.CurrentPage, input.PageSize) .ToListAsync(); var data = new PageOutput() { List = list, Total = total }; return data; } /// /// 添加 /// /// /// public async Task AddAsync(PersonnelWorkLimitAddInput input) { var entity = Mapper.Map(input); var result = await _personnelWorkLimitRepository.InsertAsync(entity); return result.Id; } /// /// 修改 /// /// /// public async Task UpdateAsync(PersonnelWorkLimitUpdateInput input) { var entity = await _personnelWorkLimitRepository.GetAsync(input.Id); Mapper.Map(input, entity); await _personnelWorkLimitRepository.UpdateAsync(entity); } /// /// 删除 /// /// /// public async Task DeleteAsync(long id) { await _personnelWorkLimitRepository.DeleteAsync(id); } /// /// 软删除 /// /// /// public async Task SoftDeleteAsync(long id) { await _personnelWorkLimitRepository.SoftDeleteAsync(id); } /// /// 批量软删除 /// /// /// public async Task BatchSoftDeleteAsync(long[] ids) { await _personnelWorkLimitRepository.SoftDeleteAsync(ids); } /// /// 获取人员工作限制 /// /// /// public async Task GetPersonnelWorkLimitAsync(long personnelId) { return await _personnelWorkLimitRepository.Select .Where(a => a.PersonnelId == personnelId) .FirstAsync(); } /// /// 根据人员ID获取其所有工作限制记录 /// /// 人员ID /// 人员的所有工作限制记录 public async Task> GetByPersonnelIdAsync(long personnelId) { try { var workLimitations = await _personnelWorkLimitRepository.Select .Where(pwl => pwl.PersonnelId == personnelId) .OrderByDescending(pwl => pwl.CreatedTime) .ToListAsync(); return workLimitations ?? new List(); } catch (Exception ex) { return new List(); } } }