diff --git a/Src/Dlhis.ScheduledTask/Jobs/AutoRemoveAppointmentJob.cs b/Src/Dlhis.ScheduledTask/Jobs/AutoRemoveAppointmentJob.cs
index 6808af8e..4b2089e5 100644
--- a/Src/Dlhis.ScheduledTask/Jobs/AutoRemoveAppointmentJob.cs
+++ b/Src/Dlhis.ScheduledTask/Jobs/AutoRemoveAppointmentJob.cs
@@ -4,6 +4,7 @@ using Dlhis.Entity.Device.Enums;
using Dlhis.Entity.Visitor.Entity;
using Dlhis.Entity.Visitor.Enums;
using Dlhis.ScheduledTask.Attributes;
+using Kurisu.AspNetCore.Utils.Extensions;
namespace Dlhis.ScheduledTask.Jobs;
@@ -21,14 +22,17 @@ public class AutoRemoveAppointmentJob : BaseJob
///
protected override async Task RunAsync(IServiceProvider serviceProvider)
{
+ var now = DateTime.Now;
+
var details = await DbContext.Queryable()
- .Where(x => x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived || x.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
+ .Where(x => (x.IsEnterDoorArea && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived) ||
+ (x.IsEnterWorkplace && x.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived))
.ToListAsync();
foreach (var detail in details)
{
var areaCodes = GetValidAreaCodes(detail).ToList();
- if (!areaCodes.Any())
+ if (areaCodes.IsEmpty())
{
continue;
}
@@ -57,12 +61,12 @@ public class AutoRemoveAppointmentJob : BaseJob
Version = 0
}).ToList());
- if (detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
+ if (detail.IsEnterDoorArea && detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived && detail.DoorEnd <= now)
{
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.Leave;
}
- if (detail.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
+ if (detail.IsEnterWorkplace && detail.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived && detail.WorkplaceEnd <= now)
{
detail.WorkplaceStatus = VisitorAppointmentDetailStatusEnumType.Leave;
}