fix 可获取记录设备保存时候自动产生初始日志

This commit is contained in:
2024-03-01 12:03:28 +08:00
parent dc1ba173d1
commit 0dc2192dad
11 changed files with 95 additions and 17 deletions

View File

@@ -45,4 +45,16 @@ public class DeviceUploadLogsController : ControllerBase
{
await _deviceUploadLogService.UploadLogsAsync(requests);
}
/// <summary>
/// 设置设备获取记录开始时间
/// </summary>
/// <param name="requests"></param>
/// <returns></returns>
[HttpPost("reset-begintime")]
[Transactional]
public async Task SetUploadLogsBeginDateTime(List<SetUploadLogsBeginDateTimeRequest> requests)
{
await _deviceUploadLogService.SetUploadLogsBeginDateTimeAsync(requests);
}
}

View File

@@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;
namespace Dlhis.ScheduledTask.DeviceUploadLog.Request;
public class SetUploadLogsBeginDateTimeRequest
{
/// <summary>
/// 设备号不能为空
/// </summary>
[Required(ErrorMessage = "设备号不能为空")]
public string DeviceUniqueNo { get; set; }
/// <summary>
/// 开始时间
/// </summary>
public DateTime Begin { get; set; }
}

View File

@@ -10,4 +10,5 @@ public interface IDeviceUploadLogService : IScopeDependency
Task UploadLogsAsync(List<DeviceUploadLogUploadRequest> requests);
Task SetUploadLogsBeginDateTimeAsync(List<SetUploadLogsBeginDateTimeRequest> requests);
}

View File

@@ -1,6 +1,7 @@
using System.Linq.Expressions;
using Dlhis.Entity.Basic.Entity;
using Dlhis.Entity.Device.Entities;
using Dlhis.Entity.Device.Enums;
using Dlhis.ScheduledTask.DeviceUploadLog.Request;
using Dlhis.ScheduledTask.DeviceUploadLog.Response;
using Kurisu.AspNetCore.Utils.Extensions;
@@ -95,4 +96,29 @@ public class DeviceUploadLogService : IDeviceUploadLogService
await _dbContext.InsertAsync(records);
}
public async Task SetUploadLogsBeginDateTimeAsync(List<SetUploadLogsBeginDateTimeRequest> requests)
{
var uniqueNos = requests.DistinctBy(x => x.DeviceUniqueNo).Select(x => x.DeviceUniqueNo).ToList();
var devices = await _dbContext.Queryable<DeviceEntity>()
.Where(x => uniqueNos.Contains(x.UniqueNo))
.Where(x => x.Type == DeviceTypeEnumType.Attendance || x.Type == DeviceTypeEnumType.Door)
.ToListAsync();
(uniqueNos.Count != devices.Count).ThrowIfTrue("存在非考勤和门禁的设备");
var tenantId = devices.FirstOrDefault().TenantId;
var logs = new List<DeviceUploadLogEntity>(requests.Count);
foreach (var request in requests)
{
logs.Add(new DeviceUploadLogEntity
{
DeviceUniqueNo = request.DeviceUniqueNo,
Type = DeviceUploadLogTypeEnumType.Raise,
RaiseDateTime = request.Begin,
TenantId = tenantId
});
}
await _dbContext.InsertAsync(logs);
}
}

View File

@@ -30,7 +30,7 @@ public class JobPack : BaseAppPack
TimeZone = TimeZoneInfo.Local
});
//创建设备获取考勤的任务
//创建设备获取的任务
RecurringJob.AddOrUpdate<CreateGetUploadRecordJob>("CreateGetUploadRecord", s => s.RunAsync(), "0 0/1 * * * ?", new RecurringJobOptions
{
TimeZone = TimeZoneInfo.Local

View File

@@ -25,8 +25,7 @@ public class CreateGetUploadRecordJob
{
var devices = await _dbContext.Queryable<DeviceEntity>()
.Where(x => x.Enable)
.Where(x => x.Type == DeviceTypeEnumType.Attendance || (x.Type == DeviceTypeEnumType.Door && x.AsAttendance)
|| x.Type == DeviceTypeEnumType.Door)
.Where(x => x.Type == DeviceTypeEnumType.Attendance || x.Type == DeviceTypeEnumType.Door)
.ToListAsync();
//过滤处理中的任务

View File

@@ -315,11 +315,6 @@ public class AssignmentService : IAssignmentService
requests = requests.Where(x => taskIds.Contains(x.TaskId)).ToList();
deviceTasks.ForEach(x =>
{
});
var now = DateTime.Now;
var tasks = new List<DeviceTaskEntity>(requests.Count);
foreach (var request in requests)