feat 设备考勤记录考勤上传

This commit is contained in:
2024-01-11 16:31:23 +08:00
parent 353844f348
commit 5d1b3ad0f7
7 changed files with 77 additions and 8 deletions

View File

@@ -12,5 +12,5 @@ public interface IDevicePermissionService : IScopeDependency
/// <returns></returns> /// <returns></returns>
Task AssignmentAsync(List<DevicePermissionSaveReuqest> reuqests); Task AssignmentAsync(List<DevicePermissionSaveReuqest> reuqests);
Task<List<Guid>> GetAssignmentsAsync(string userId, DeviceAssignmentTypeEnumType uniqueType, Guid? uniqueValue); Task<List<Guid>> GetAssignmentsAsync(string userNo, DeviceAssignmentTypeEnumType uniqueType, Guid? uniqueValue);
} }

View File

@@ -36,12 +36,12 @@ public class DevicePermissionService : IDevicePermissionService
} }
} }
public async Task<List<Guid>> GetAssignmentsAsync(string userId, DeviceAssignmentTypeEnumType uniqueType, Guid? uniqueValue) public async Task<List<Guid>> GetAssignmentsAsync(string userNo, DeviceAssignmentTypeEnumType uniqueType, Guid? uniqueValue)
{ {
var assignments = await _dbContext.Queryable<DevicePermissionEntity>() var assignments = await _dbContext.Queryable<DevicePermissionEntity>()
.Where(x => x.UniqueType == uniqueType) .Where(x => x.UniqueType == uniqueType)
.WhereIF(uniqueValue.HasValue, x => x.UniqueValue == uniqueValue) .WhereIF(uniqueValue.HasValue, x => x.UniqueValue == uniqueValue)
.Where(x => x.UserNo == userId) .Where(x => x.UserNo == userNo)
.Select(x => x.UniqueValue) .Select(x => x.UniqueValue)
.ToListAsync(); .ToListAsync();

View File

@@ -1,12 +1,17 @@
using Kurisu.Core.DataAccess.Entity; using Kurisu.Core.DataAccess.Entity;
using Kurisu.SqlSugar;
using SqlSugar; using SqlSugar;
namespace Dlhis.Entity.Device.Entities; namespace Dlhis.Entity.Device.Entities;
[SugarTable(TableName = "DeviceUploadLog", TableDescription = "设备上传记录")] [SugarTable(TableName = "DeviceUploadLog", TableDescription = "设备上传记录")]
public class DeviceUploadLogEntity : SugarBaseEntity, ITenantId public class DeviceUploadLogEntity : ITenantId
{ {
/// <summary>
/// id
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long Id { get; set; }
/// <summary> /// <summary>
/// 设备号 /// 设备号
/// </summary> /// </summary>
@@ -27,5 +32,10 @@ public class DeviceUploadLogEntity : SugarBaseEntity, ITenantId
/// </summary> /// </summary>
public string Ip { get; set; } public string Ip { get; set; }
/// <summary>
/// 上传时间
/// </summary>
public DateTime UploadTime { get; set; }
public string TenantId { get; set; } public string TenantId { get; set; }
} }

View File

@@ -32,4 +32,15 @@ public class DeviceUploadLogsController : ControllerBase
{ {
return await _deviceUploadLogService.GetPageAsync(request); return await _deviceUploadLogService.GetPageAsync(request);
} }
/// <summary>
/// 上传记录
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost("record")]
public async Task UploadLogAsync(DeviceUploadLogUploadRequest request)
{
await _deviceUploadLogService.UploadLogAsync(request);
}
} }

View File

@@ -0,0 +1,23 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.ScheduledTask.DeviceUploadLog.Request;
public class DeviceUploadLogUploadRequest
{
/// <summary>
/// 设备唯一号
/// </summary>
[Required(ErrorMessage = "设备唯一号不能为空")]
public string DeviceUniqueNo { get; set; }
/// <summary>
/// 用户学工号
/// </summary>
[Required(ErrorMessage = "用户学工号不能为空")]
public string UserCode { get; set; }
/// <summary>
/// 上传时间
/// </summary>
public DateTime UploadTime { get; set; }
}

View File

@@ -7,4 +7,6 @@ namespace Dlhis.ScheduledTask.DeviceUploadLog.Services;
public interface IDeviceUploadLogService : IScopeDependency public interface IDeviceUploadLogService : IScopeDependency
{ {
Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request); Task<Pagination<DeviceUploadLogResponse>> GetPageAsync(DeviceUploadLogPageRequest request);
Task UploadLogAsync(DeviceUploadLogUploadRequest request);
} }

View File

@@ -2,7 +2,9 @@
using Dlhis.Entity.Device.Entities; using Dlhis.Entity.Device.Entities;
using Dlhis.ScheduledTask.DeviceUploadLog.Request; using Dlhis.ScheduledTask.DeviceUploadLog.Request;
using Dlhis.ScheduledTask.DeviceUploadLog.Response; using Dlhis.ScheduledTask.DeviceUploadLog.Response;
using Kurisu.AspNetCore.Utils.Extensions;
using Kurisu.Core.DataAccess.Dto; using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Attributes;
using Kurisu.SqlSugar.Extensions; using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services; using Kurisu.SqlSugar.Services;
@@ -21,14 +23,14 @@ public class DeviceUploadLogService : IDeviceUploadLogService
{ {
var page = await _dbContext.Queryable<DeviceUploadLogEntity>() var page = await _dbContext.Queryable<DeviceUploadLogEntity>()
.LeftJoin<GainfoEntity>((deviceUp, ga) => deviceUp.UserNo == ga.No) .LeftJoin<GainfoEntity>((deviceUp, ga) => deviceUp.UserNo == ga.No)
.WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, deviceUp => deviceUp.CreateTime >= request.SearchDateTimePeriod.Start) .WhereIF(request.SearchDateTimePeriod?.Start.HasValue == true, deviceUp => deviceUp.UploadTime >= request.SearchDateTimePeriod.Start)
.WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, deviceUp => deviceUp.CreateTime <= request.SearchDateTimePeriod.End) .WhereIF(request.SearchDateTimePeriod?.End.HasValue == true, deviceUp => deviceUp.UploadTime <= request.SearchDateTimePeriod.End)
.Select((deviceUp, ga) => new DeviceUploadLogResponse .Select((deviceUp, ga) => new DeviceUploadLogResponse
{ {
DeviceUniqueNo = deviceUp.DeviceUniqueNo, DeviceUniqueNo = deviceUp.DeviceUniqueNo,
Id = deviceUp.Id, Id = deviceUp.Id,
Ip = deviceUp.Ip, Ip = deviceUp.Ip,
UploadTime = deviceUp.CreateTime, UploadTime = deviceUp.UploadTime,
UserNo = deviceUp.UserNo, UserNo = deviceUp.UserNo,
UserCode = deviceUp.UserCode, UserCode = deviceUp.UserCode,
UserName = ga.Name, UserName = ga.Name,
@@ -37,4 +39,25 @@ public class DeviceUploadLogService : IDeviceUploadLogService
return page; return page;
} }
[IgnoreTenant]
public async Task UploadLogAsync(DeviceUploadLogUploadRequest request)
{
var device = await _dbContext.Queryable<DeviceEntity>().Where(x => x.UniqueNo == request.DeviceUniqueNo).SingleAsync();
device.ThrowIfNull("设备信息不存在");
var gainfo = await _dbContext.Queryable<GainfoEntity>().Where(x => x.Code == request.UserCode).FirstAsync();
device.ThrowIfNull("人员信息不存在");
var entity = new DeviceUploadLogEntity
{
DeviceUniqueNo = request.DeviceUniqueNo,
UploadTime = request.UploadTime,
UserCode = request.UserCode,
UserNo = gainfo.No,
TenantId = device.TenantId,
};
await _dbContext.InsertAsync(entity);
}
} }