fix 调整语法生成
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user