feat 增加根据厂区/变更时间获取归档数据

This commit is contained in:
2025-07-02 14:44:16 +08:00
parent cc17cfa0f3
commit a57d5ef9a9
4 changed files with 55 additions and 1 deletions

View File

@@ -47,6 +47,16 @@ public class GainfosController : ControllerBase
return await _gainfoService.GetGainfosAsync(factory);
}
/// <summary>
/// 获取归档人员数据
/// </summary>
/// <returns></returns>
[HttpGet("/archive/pagination")]
public async Task<Pagination<GainfoOpenResponse>> GetGainfoLeavePageAsync([FromQuery] GainfoArchivePageRequest request)
{
return await _gainfoService.GetGainfoLeavePageAsync(request);
}
/// <summary>
/// 获取考勤数据
/// </summary>

View File

@@ -0,0 +1,18 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.DataAccess.Dto;
namespace Dlhis.External.OpenApi.Request;
public class GainfoArchivePageRequest : PageDto
{
/// <summary>
/// 厂区不能为空
/// </summary>
[Required(ErrorMessage = "{0}厂区不能为空")]
public string Factory { get; set; }
/// <summary>
/// 数据变更时间
/// </summary>
public DateTime? ModifiedTime { get; set; }
}

View File

@@ -14,4 +14,7 @@ public interface IGainfoService : IScopeDependency
Task<Pagination<DeviceUploadLogResponse>> GetAttendanceRecordPageAsync(DeviceUploadLogMyRecordRequest request);
Task<Pagination<GainfoOpenResponse>> GetGainfoLeavePageAsync(GainfoArchivePageRequest request);
}

View File

@@ -56,7 +56,6 @@ public class GainfoService : IGainfoService
.LeftJoin<DepartmentEntity>((x, d) => x.DepartmentNo == d.No)
.Where(x => x.Factory == "2401")
.Where(x => SqlFunc.Subqueryable<GainfoEntity>()
.Where(p => p.Factory == "2401")
.Where(p => p.Code == x.Code)
.NotAny()
)
@@ -128,4 +127,28 @@ public class GainfoService : IGainfoService
})
.ToPageListAsync(request);
}
public async Task<Pagination<GainfoOpenResponse>> GetGainfoLeavePageAsync(GainfoArchivePageRequest request)
{
return await _dbContext.Queryable<GainfoEntity>().AS("GainfoLeave")
.LeftJoin<DepartmentEntity>((x, d) => x.DepartmentNo == d.No)
.Where(x => x.Factory == request.Factory)
.WhereIF(request.ModifiedTime.HasValue, x => x.ModifiedTime >= request.ModifiedTime)
.Where(x => SqlFunc.Subqueryable<GainfoEntity>()
.Where(p => p.Code == x.Code)
.NotAny()
)
.Select((x, d) => new GainfoOpenResponse
{
Code = x.Code,
Type = SqlFunc.IIF(x.Type == GainfoUserTypeEnumType.SecurityWhite, GainfoUserTypeEnumType.Normal, x.Type),
DepartmentNo = x.DepartmentNo,
DepartmentName = d.Name,
Name = x.Name,
Gender = x.Gender,
Factory = x.Factory,
Status = GainfoStatusEnumType.Leave,
})
.ToPageListAsync(request);
}
}