From 34073e0db0db058e900a69ddd2e8895eb5fc8da6 Mon Sep 17 00:00:00 2001 From: liguoyang Date: Thu, 11 Jan 2024 10:28:11 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=AE=BE=E5=A4=87=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/DeviceUploadLogsController.cs | 35 ++++++++++ .../Request/DeviceUploadLogPageRequest.cs | 66 +++++++++++++++++++ .../Response/DeviceUploadLogResponse.cs | 37 +++++++++++ .../Services/IDeviceUploadLogService.cs | 10 +++ .../Implements/DeviceUploadLogService.cs | 40 +++++++++++ 5 files changed, 188 insertions(+) create mode 100644 Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs create mode 100644 Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs create mode 100644 Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs create mode 100644 Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs create mode 100644 Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs new file mode 100644 index 00000000..d7809b21 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Controllers/DeviceUploadLogsController.cs @@ -0,0 +1,35 @@ +using Dlhis.ScheduledTask.DeviceUploadLog.Request; +using Dlhis.ScheduledTask.DeviceUploadLog.Response; +using Dlhis.ScheduledTask.DeviceUploadLog.Services; +using Kurisu.Core.DataAccess.Dto; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace Dlhis.ScheduledTask.DeviceUploadLog.Controllers; + +/// +/// 设备上传记录 +/// +[Authorize] +[Route("api/[controller]")] +[ApiController] +public class DeviceUploadLogsController : ControllerBase +{ + private readonly IDeviceUploadLogService _deviceUploadLogService; + + public DeviceUploadLogsController(IDeviceUploadLogService deviceUploadLogService) + { + _deviceUploadLogService = deviceUploadLogService; + } + + /// + /// 获取上传记录分页 + /// + /// + /// + [HttpGet("page")] + public async Task> GetPageAsync([FromQuery] DeviceUploadLogPageRequest request) + { + return await _deviceUploadLogService.GetPageAsync(request); + } +} diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs new file mode 100644 index 00000000..37aef592 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Request/DeviceUploadLogPageRequest.cs @@ -0,0 +1,66 @@ +using Dlhis.Entity.Canteen.Enums; +using Kurisu.Core.CustomClass; +using System.ComponentModel.DataAnnotations; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.ScheduledTask.DeviceUploadLog.Request; + +public class DeviceUploadLogPageRequest : PageDto, IValidatableObject +{ + /// + /// 查询日期范围类型 DateTimeSearchEnumType + /// + [EnumDataType(typeof(DateTimeSearchEnumType))] + public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; } + + /// + /// 日期范围查询 + /// + public DateTimePeriod SearchDateTimePeriod { get; set; } + + public IEnumerable Validate(ValidationContext validationContext) + { + var now = DateTime.Now; + if (SearchDateTimeDimension.HasValue) + { + //重新赋值 + SearchDateTimePeriod = new DateTimePeriod(); + + if (SearchDateTimeDimension == DateTimeSearchEnumType.Day) + { + SearchDateTimePeriod.Start = new DateTime(now.Year, now.Month, now.Day, 0, 0, 1); + SearchDateTimePeriod.End = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59); + } + else if (SearchDateTimeDimension == DateTimeSearchEnumType.Week) + { + SearchDateTimePeriod.Start = now.AddDays(1 - (int)now.DayOfWeek); + SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddDays(6); + } + else if (SearchDateTimeDimension == DateTimeSearchEnumType.Month) + { + SearchDateTimePeriod.Start = new DateTime(now.Year, now.Month, 1); + SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddMonths(1).AddDays(-1); + } + else if (SearchDateTimeDimension == DateTimeSearchEnumType.Season) + { + SearchDateTimePeriod.Start = now.AddMonths(0 - ((now.Month - 1) % 3)); + SearchDateTimePeriod.End = now.AddMonths(3 - ((now.Month - 1) % 3)).AddMonths(1).AddDays(-1); + } + else if (SearchDateTimeDimension == DateTimeSearchEnumType.HalfOfYear) + { + SearchDateTimePeriod.Start = now.AddDays(-180); + SearchDateTimePeriod.End = now; + } + else if (SearchDateTimeDimension == DateTimeSearchEnumType.Year) + { + SearchDateTimePeriod.Start = new DateTime(now.Year, 1, 1); + SearchDateTimePeriod.End = SearchDateTimePeriod.Start.Value.AddYears(1).AddDays(-1); + } + + SearchDateTimePeriod.Start = SearchDateTimePeriod.Start.Value.Date; + SearchDateTimePeriod.End = SearchDateTimePeriod.End.Value.Date; + } + + yield break; + } +} diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs new file mode 100644 index 00000000..1770a7e6 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Response/DeviceUploadLogResponse.cs @@ -0,0 +1,37 @@ +namespace Dlhis.ScheduledTask.DeviceUploadLog.Response; + +public class DeviceUploadLogResponse +{ + public long Id { get; set; } + + /// + /// 设备号 + /// + public string DeviceUniqueNo { get; set; } + + /// + /// 用户档案号 + /// + public string UserNo { get; set; } + + /// + /// 用户学工号 + /// + public string UserCode { get; set; } + + + /// + /// 用户名称 + /// + public string UserName { get; set; } + + /// + /// 上传IP + /// + public string Ip { get; set; } + + /// + /// 上传时间 + /// + public DateTime UploadTime { get; set; } +} diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs new file mode 100644 index 00000000..8ff42806 --- /dev/null +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/IDeviceUploadLogService.cs @@ -0,0 +1,10 @@ +using Dlhis.ScheduledTask.DeviceUploadLog.Request; +using Dlhis.ScheduledTask.DeviceUploadLog.Response; +using Kurisu.Core.DataAccess.Dto; + +namespace Dlhis.ScheduledTask.DeviceUploadLog.Services; + +public interface IDeviceUploadLogService : IScopeDependency +{ + Task> GetPageAsync(DeviceUploadLogPageRequest request); +} diff --git a/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs new file mode 100644 index 00000000..795cd81e --- /dev/null +++ b/Src/Dlhis.ScheduledTask/DeviceUploadLog/Services/Implements/DeviceUploadLogService.cs @@ -0,0 +1,40 @@ +using Dlhis.Entity.Basic.Entity; +using Dlhis.Entity.Device.Entities; +using Dlhis.ScheduledTask.DeviceUploadLog.Request; +using Dlhis.ScheduledTask.DeviceUploadLog.Response; +using Kurisu.Core.DataAccess.Dto; +using Kurisu.SqlSugar.Extensions; +using Kurisu.SqlSugar.Services; + +namespace Dlhis.ScheduledTask.DeviceUploadLog.Services.Implements; + +public class DeviceUploadLogService : IDeviceUploadLogService +{ + private readonly IDbContext _dbContext; + + public DeviceUploadLogService(IDbContext dbContext) + { + _dbContext = dbContext; + } + + public async Task> GetPageAsync(DeviceUploadLogPageRequest request) + { + var page = await _dbContext.Queryable() + .LeftJoin((deviceUp, ga) => deviceUp.UserNo == ga.No) + .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, deviceUp => deviceUp.CreateTime >= request.SearchDateTimePeriod.Start) + .WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, deviceUp => deviceUp.CreateTime <= request.SearchDateTimePeriod.End) + .Select((deviceUp, ga) => new DeviceUploadLogResponse + { + DeviceUniqueNo = deviceUp.DeviceUniqueNo, + Id = deviceUp.Id, + Ip = deviceUp.Ip, + UploadTime = deviceUp.CreateTime, + UserNo = deviceUp.UserNo, + UserCode = deviceUp.UserCode, + UserName = ga.Name, + }) + .ToPageListAsync(request); + + return page; + } +}