feat 获取我的考勤记录

This commit is contained in:
2024-07-05 16:39:14 +08:00
parent 28f96c59c0
commit 48609a2c28
6 changed files with 71 additions and 4 deletions

View File

@@ -37,7 +37,6 @@ public class DevicesController : ControllerBase
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize(Roles = "admin,tenant-admin")]
[HttpGet("template/page")]
public async Task<Pagination<DeviceTemplateResponse>> GetTemplatePageAsync([FromQuery] DeviceTemplatePageRequest request)
{

View File

@@ -45,4 +45,15 @@ public class DeviceUploadLogsController : ControllerBase
{
await _deviceUploadLogService.UploadLogsAsync(requests);
}
/// <summary>
/// 获取考勤记录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("my")]
public async Task<List<DeviceUploadLogResponse>> GetMyRecordsAsync([FromQuery] DeviceUploadLogMyRecordRequest request)
{
return await _deviceUploadLogService.GetMyRecordsAsync(request);
}
}

View File

@@ -0,0 +1,26 @@
using System.ComponentModel.DataAnnotations;
using Kurisu.AspNetCore.CustomClass;
namespace Dlhis.ScheduledTask.DeviceUploadLog.Request;
public class DeviceUploadLogMyRecordRequest : IValidatableObject
{
public DateTimePeriod DateTimePeriod { get; set; }
/// <inheritdoc />
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (DateTimePeriod == null)
{
DateTimePeriod = new DateTimePeriod();
}
if (DateTimePeriod.Start != null)
{
DateTimePeriod.End = DateTimePeriod.Start.Value.AddDays(1);
}
yield break;
}
}

View File

@@ -9,4 +9,6 @@ public interface IDeviceUploadLogService : IScopeDependency
Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request);
Task UploadLogsAsync(List<DeviceUploadLogUploadRequest> requests);
Task<List<DeviceUploadLogResponse>> GetMyRecordsAsync(DeviceUploadLogMyRecordRequest request);
}

View File

@@ -3,6 +3,7 @@ using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Dlhis.ScheduledTask.DeviceUploadLog.Request;
using Dlhis.ScheduledTask.DeviceUploadLog.Response;
using Kurisu.AspNetCore.Authentication.Abstractions;
using Kurisu.AspNetCore.CustomClass;
using Kurisu.AspNetCore.DataAccess.Dto;
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
@@ -15,10 +16,38 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Services.Implements;
public class DeviceUploadLogService : IDeviceUploadLogService
{
private readonly IDbContext _dbContext;
private readonly ICurrentUser _currentUser;
public DeviceUploadLogService(IDbContext dbContext)
public DeviceUploadLogService(IDbContext dbContext, ICurrentUser currentUser)
{
_dbContext = dbContext;
_currentUser = currentUser;
}
public async Task<List<DeviceUploadLogResponse>> GetMyRecordsAsync(DeviceUploadLogMyRecordRequest request)
{
var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty;
return await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<DeviceEntity>((log, d) => log.DeviceUniqueNo == d.UniqueNo)
.Where(log => log.UserUniqueNo == jinkoCode)
.WhereIF(request.DateTimePeriod.HasValue(), log => log.RaiseDateTime >= request.DateTimePeriod.Start && log.RaiseDateTime <= request.DateTimePeriod.End)
.Where((log, d) => d.Type == DeviceTypeEnumType.Attendance || (d.Type == DeviceTypeEnumType.Door && d.AsAttendance))
.OrderBy(log => log.RaiseDateTime)
.Select((log, d) => new DeviceUploadLogResponse
{
OriginUserUniqueNo = log.UserUniqueNo,
Supplier = d.Supplier,
DeviceUniqueNo = log.DeviceUniqueNo,
Id = log.Id,
RaiseDateTime = log.RaiseDateTime,
CreateTime = log.CreateTime,
SerialNo = log.SerialNo,
DeployPlace = d.DeployPlace,
Sync = log.Sync,
})
.ToListAsync();
}
public async Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request)

View File

@@ -50,7 +50,7 @@ public class RolesController : ControllerBase
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[Authorize(Roles = "admin")]
[Authorize(Roles = "admin,tenant-admin")]
[HttpPost("assign")]
public async Task AssignRole(RoleAssignRequest request)
{