feat 设备上传记录

This commit is contained in:
2024-01-11 10:28:11 +08:00
parent 026fd7b18a
commit 34073e0db0
5 changed files with 188 additions and 0 deletions

View File

@@ -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;
/// <summary>
/// 设备上传记录
/// </summary>
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class DeviceUploadLogsController : ControllerBase
{
private readonly IDeviceUploadLogService _deviceUploadLogService;
public DeviceUploadLogsController(IDeviceUploadLogService deviceUploadLogService)
{
_deviceUploadLogService = deviceUploadLogService;
}
/// <summary>
/// 获取上传记录分页
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpGet("page")]
public async Task<Pagination<DeviceUploadLogResponse>> GetPageAsync([FromQuery] DeviceUploadLogPageRequest request)
{
return await _deviceUploadLogService.GetPageAsync(request);
}
}

View File

@@ -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
{
/// <summary>
/// 查询日期范围类型 DateTimeSearchEnumType
/// </summary>
[EnumDataType(typeof(DateTimeSearchEnumType))]
public DateTimeSearchEnumType? SearchDateTimeDimension { get; set; }
/// <summary>
/// 日期范围查询
/// </summary>
public DateTimePeriod SearchDateTimePeriod { get; set; }
public IEnumerable<ValidationResult> 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;
}
}

View File

@@ -0,0 +1,37 @@
namespace Dlhis.ScheduledTask.DeviceUploadLog.Response;
public class DeviceUploadLogResponse
{
public long Id { get; set; }
/// <summary>
/// 设备号
/// </summary>
public string DeviceUniqueNo { get; set; }
/// <summary>
/// 用户档案号
/// </summary>
public string UserNo { get; set; }
/// <summary>
/// 用户学工号
/// </summary>
public string UserCode { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 上传IP
/// </summary>
public string Ip { get; set; }
/// <summary>
/// 上传时间
/// </summary>
public DateTime UploadTime { get; set; }
}

View File

@@ -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<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request);
}

View File

@@ -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<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request)
{
var page = await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<GainfoEntity>((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;
}
}