diff --git a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs index 55b92463..4072f04e 100644 --- a/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs +++ b/Src/Dlhis.Basic/Device/Controllers/DevicesController.cs @@ -37,7 +37,6 @@ public class DevicesController : ControllerBase /// /// /// - [Authorize(Roles = "admin,tenant-admin")] [HttpGet("template/page")] public async Task> GetTemplatePageAsync([FromQuery] DeviceTemplatePageRequest request) { diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs index c7792ab7..0ae52de3 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs @@ -45,4 +45,15 @@ public class DeviceUploadLogsController : ControllerBase { await _deviceUploadLogService.UploadLogsAsync(requests); } -} + + /// + /// 获取考勤记录 + /// + /// + /// + [HttpGet("my")] + public async Task> GetMyRecordsAsync([FromQuery] DeviceUploadLogMyRecordRequest request) + { + return await _deviceUploadLogService.GetMyRecordsAsync(request); + } +} \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogMyRecordRequest.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogMyRecordRequest.cs new file mode 100644 index 00000000..3f863015 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogMyRecordRequest.cs @@ -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; } + + /// + public IEnumerable Validate(ValidationContext validationContext) + { + if (DateTimePeriod == null) + { + DateTimePeriod = new DateTimePeriod(); + } + + if (DateTimePeriod.Start != null) + { + DateTimePeriod.End = DateTimePeriod.Start.Value.AddDays(1); + } + + + yield break; + } +} \ No newline at end of file diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs index 7d8310e2..117570fe 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs @@ -9,4 +9,6 @@ public interface IDeviceUploadLogService : IScopeDependency Task> GetPageAsync(DeviceUploadLogPageRequest request); Task UploadLogsAsync(List requests); + + Task> GetMyRecordsAsync(DeviceUploadLogMyRecordRequest request); } diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs index 071f53c4..06930b8a 100644 --- a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs @@ -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> GetMyRecordsAsync(DeviceUploadLogMyRecordRequest request) + { + var jinkoCode = _currentUser.GetUserClaim("jinko-code") ?? string.Empty; + + return await _dbContext.Queryable() + .LeftJoin((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> GetPageAsync(DeviceUploadLogPageRequest request) diff --git a/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs b/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs index b17eccb8..9a012e28 100644 --- a/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs +++ b/Src/Dlhis.Sys/Identity/Controllers/RolesController.cs @@ -50,7 +50,7 @@ public class RolesController : ControllerBase /// /// /// - [Authorize(Roles = "admin")] + [Authorize(Roles = "admin,tenant-admin")] [HttpPost("assign")] public async Task AssignRole(RoleAssignRequest request) {