fix 调整语法生成

This commit is contained in:
2025-09-01 11:39:35 +08:00
parent e01d58be01
commit 4ed7654aef

View File

@@ -182,30 +182,30 @@ public class AppointmentService : IAppointmentService
public async Task FocusLeaveAsync(long id, string reason)
{
// 根据访客预约详情ID获取记录,若不存在则抛出异常
// 根据访客预约详情ID获取记录,若不存在则抛出异常
var detail = await _dbContext.Queryable<VisitorAppointmentDetailEntity>().Where(x => x.Id == id).SingleAsync();
detail.ThrowIfNull("数据不存在");
// 如果已进入门区且门区状态为“已到达”,则将门区状态更新为“强制离场”
if (detail.IsEnterDoorArea && detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.FocusLeave;
// 如果已进入门区且门区状态为“待到达”,则将门区状态更新为“作废”
if (detail.IsEnterDoorArea && detail.DoorStatus == VisitorAppointmentDetailStatusEnumType.Wait)
detail.DoorStatus = VisitorAppointmentDetailStatusEnumType.Obsolete;
// 如果已进入工作区且工作区状态为“已到达”,则将工作区状态更新为“强制离场”
if (detail.IsEnterWorkplace && detail.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
detail.WorkplaceStatus = VisitorAppointmentDetailStatusEnumType.FocusLeave;
// 如果已进入工作区且工作区状态为“待到达”,则将工作区状态更新为“作废”
if (detail.IsEnterWorkplace && detail.WorkplaceStatus == VisitorAppointmentDetailStatusEnumType.Wait)
detail.WorkplaceStatus = VisitorAppointmentDetailStatusEnumType.Obsolete;
// 记录强制离场时间和原因
detail.FocusLeaveDateTime = DateTime.Now;
detail.Remark += "强制离场:" + reason;
// 生成设备任务并更新数据库
await GenerateDeviceTasksAsync(detail, true, DeviceTaskEnumType.Delete, $"强制离场:{reason}");
await _dbContext.UpdateAsync(detail);
@@ -276,30 +276,32 @@ public class AppointmentService : IAppointmentService
public async Task<AppointmentSummaryResponse> GetSummaryAsync(string factory, DateTime start, DateTime end)
{
start = start.Date;
var total = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && SqlFunc.DateIsSame(x.DoorStart, start))
.Where(x => x.IsEnterDoorArea && x.DoorStart >= start && x.DoorStart <= end)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var @in = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && SqlFunc.DateIsSame(x.ArrivedTime, start) && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Where(x => x.IsEnterDoorArea && x.ArrivedTime >= start && x.ArrivedTime <= end && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var notIn = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && SqlFunc.DateIsSame(x.DoorStart, start))
.Where(x => x.IsEnterDoorArea && x.DoorStart >= start && x.DoorStart <= end)
.Where(x => x.IsEnterDoorArea && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Wait)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var leave = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && SqlFunc.DateIsSame(x.DoorEnd, start))
.Where(x => x.IsEnterDoorArea && x.DoorEnd >= start && x.DoorEnd <= end)
.Where(x => x.IsEnterDoorArea && (x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Leave || x.DoorStatus == VisitorAppointmentDetailStatusEnumType.FocusLeave))
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();
var notLeave = await _dbContext.Queryable<VisitorAppointmentDetailEntity>()
.Where(x => x.IsEnterDoorArea && SqlFunc.DateIsSame(x.DoorEnd, start) && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Where(x => x.IsEnterDoorArea && x.DoorEnd >= start && x.DoorEnd <= end && x.DoorStatus == VisitorAppointmentDetailStatusEnumType.Arrived)
.Where(x => SqlFunc.Subqueryable<VisitorAppointmentEntity>().Where(p => p.No == x.No).Where(p => p.Factory == factory).Any())
.CountAsync();