From 72b0c1e5e46480e8845adf7a8d2c2cc752837892 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Fri, 29 Nov 2024 15:36:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=AB=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetQueueRegisterListByRoomIdDto.cs | 2 +- .../GetScreenQueueRegisterListByRoomIdDto.cs | 2 +- .../QueueRegisters/QueueRegisterAppService.cs | 76 +++++++++++-------- .../QueueRegisters/QueueRegisterManager.cs | 16 ++++ 4 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetQueueRegisterListByRoomIdDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetQueueRegisterListByRoomIdDto.cs index 779b12d..85984b7 100644 --- a/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetQueueRegisterListByRoomIdDto.cs +++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetQueueRegisterListByRoomIdDto.cs @@ -46,7 +46,7 @@ namespace Shentun.Peis.QueueRegisters /// /// 排队号码 /// - public int QueueRegisterNumber { get; set; } + public string QueueRegisterNumber { get; set; } /// /// 人员ID diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs index eb34ef8..7ae9ed0 100644 --- a/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs +++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs @@ -43,7 +43,7 @@ namespace Shentun.Peis.QueueRegisters /// /// 排队号码 /// - public int QueueRegisterNumber { get; set; } + public string QueueRegisterNumber { get; set; } } } diff --git a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs index ff84ed0..26e8890 100644 --- a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs +++ b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs @@ -83,12 +83,19 @@ namespace Shentun.Peis.QueueRegisters { queueRegister, room, - patientName = patientRegister.PatientName + patientName = patientRegister.PatientName, + isVip = patientRegister.IsVip, }).FirstOrDefault(); if (queueRegisterEnt != null) { - var queueCount = await _queueRegisterRepository.CountAsync(c => c.RoomId == queueRegisterEnt.queueRegister.RoomId - && c.CompleteFlag == QueueRegisterCompleteFlag.Wait && c.CreationTime >= DateTime.Now.Date && c.DisplayOrder < queueRegisterEnt.queueRegister.DisplayOrder); + var queueCount = await (from queueRegister in await _queueRegisterRepository.GetQueryableAsync() + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on queueRegister.PatientRegisterId equals patientRegister.Id + where queueRegister.RoomId == queueRegisterEnt.queueRegister.RoomId + && queueRegister.CompleteFlag == QueueRegisterCompleteFlag.Wait + && queueRegister.CreationTime >= DateTime.Now.Date + && queueRegister.DisplayOrder < queueRegisterEnt.queueRegister.DisplayOrder + && patientRegister.IsVip == queueRegisterEnt.isVip + select queueRegister).CountAsync(); var entDto = new QueueRegisterByPatientRegisterIdDto { @@ -372,7 +379,8 @@ namespace Shentun.Peis.QueueRegisters patientRegisterNo = patientRegister.PatientRegisterNo, roomId = queueRegister.RoomId, asbitemId = roomDetail.AsbitemId, - lastModificationTime = queueRegister.LastModificationTime, + //lastModificationTime = queueRegister.LastModificationTime, + callTime = queueRegister.CallTime }; if (input.ItemTypeIds.Any()) @@ -407,41 +415,46 @@ namespace Shentun.Peis.QueueRegisters isVip = s.FirstOrDefault().isVip, queueRegisterId = s.Key, queueRegisterNumber = s.FirstOrDefault().queueRegisterNumber, - lastModificationTime = s.FirstOrDefault().lastModificationTime, + //lastModificationTime = s.FirstOrDefault().lastModificationTime, patientRegisterId = s.FirstOrDefault().patientRegisterId, patientRegisterNo = s.FirstOrDefault().patientRegisterNo, + callTime = s.FirstOrDefault().callTime }).ToList(); - entDto.WaitDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait).OrderBy(o => o.queueRegisterNumber) + var queueRegisterList = roomGroup.Where(m => m.isVip == 'Y').OrderBy(o => o.queueRegisterNumber).ToList(); + queueRegisterList.AddRange(roomGroup.Where(m => m.isVip == 'N').OrderBy(o => o.queueRegisterNumber).ToList()); + + + entDto.WaitDetail = queueRegisterList.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait) .Select(s => new GetQueueRegisterListByRoomIdDetailDto { IsVip = s.isVip, PatientName = s.patientName, QueueRegisterId = s.queueRegisterId, - QueueRegisterNumber = s.queueRegisterNumber, + QueueRegisterNumber = (s.isVip == 'Y' ? "V" : "") + s.queueRegisterNumber.ToString(), PatientRegisterId = s.patientRegisterId, PatientRegisterNo = s.patientRegisterNo }).ToList(); - entDto.AlreadyCalledDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.AlreadyCalled).OrderByDescending(o => o.lastModificationTime) + entDto.AlreadyCalledDetail = queueRegisterList.Where(m => m.completeFlag == QueueRegisterCompleteFlag.AlreadyCalled).OrderByDescending(o => o.callTime) .Select(s => new GetQueueRegisterListByRoomIdDetailDto { IsVip = s.isVip, PatientName = s.patientName, QueueRegisterId = s.queueRegisterId, - QueueRegisterNumber = s.queueRegisterNumber, + QueueRegisterNumber = (s.isVip == 'Y' ? "V" : "") + s.queueRegisterNumber.ToString(), PatientRegisterId = s.patientRegisterId, PatientRegisterNo = s.patientRegisterNo }).ToList(); - entDto.OverNumberDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.OverNumber).OrderByDescending(o => o.lastModificationTime) + entDto.OverNumberDetail = roomGroup.Where(m => m.completeFlag == QueueRegisterCompleteFlag.OverNumber).OrderByDescending(o => o.callTime) .Select(s => new GetQueueRegisterListByRoomIdDetailDto { IsVip = s.isVip, PatientName = s.patientName, QueueRegisterId = s.queueRegisterId, - QueueRegisterNumber = s.queueRegisterNumber, + QueueRegisterNumber = (s.isVip == 'Y' ? "V" : "") + s.queueRegisterNumber.ToString(), PatientRegisterId = s.patientRegisterId, PatientRegisterNo = s.patientRegisterNo }).ToList(); @@ -459,23 +472,26 @@ namespace Shentun.Peis.QueueRegisters public async Task GetScreenQueueRegisterListByRoomIdAsync(RoomNoInputDto input) { var entDto = new GetScreenQueueRegisterListByRoomIdDto(); - var query = from queueRegister in await _queueRegisterRepository.GetQueryableAsync() - join patientRegister in await _patientRegisterRepository.GetQueryableAsync() - on queueRegister.PatientRegisterId equals patientRegister.Id - join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id - where queueRegister.CreationTime >= DateTime.Now.Date - && room.RoomNo == input.RoomNo - select new - { - completeFlag = queueRegister.CompleteFlag, - patientName = patientRegister.PatientName, - isVip = patientRegister.IsVip, - queueRegisterId = queueRegister.Id, - queueRegisterNumber = queueRegister.DisplayOrder - }; + var query = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync() + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() + on queueRegister.PatientRegisterId equals patientRegister.Id + join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id + where queueRegister.CreationTime >= DateTime.Now.Date + && room.RoomNo == input.RoomNo + select new + { + completeFlag = queueRegister.CompleteFlag, + patientName = patientRegister.PatientName, + isVip = patientRegister.IsVip, + queueRegisterId = queueRegister.Id, + queueRegisterNumber = queueRegister.DisplayOrder, + callTime = queueRegister.CallTime + }).ToList(); + var queueRegisterList = query.Where(m => m.isVip == 'Y').OrderBy(o => o.queueRegisterNumber).ToList(); + queueRegisterList.AddRange(query.Where(m => m.isVip == 'N').OrderBy(o => o.queueRegisterNumber).ToList()); - var visitEnt = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.AlreadyCalled).OrderByDescending(o => o.queueRegisterNumber).FirstOrDefault(); + var visitEnt = queueRegisterList.Where(m => m.completeFlag == QueueRegisterCompleteFlag.AlreadyCalled).FirstOrDefault(); if (visitEnt != null) { @@ -483,18 +499,18 @@ namespace Shentun.Peis.QueueRegisters entDto.VisitName = visitEnt.patientName; } - entDto.WaitDetail = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait) + entDto.WaitDetail = queueRegisterList.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait) .Select(s => new GetScreenQueueRegisterListByRoomIdDetailDto { PatientName = s.patientName, - QueueRegisterNumber = s.queueRegisterNumber + QueueRegisterNumber = (s.isVip == 'Y' ? "V" : "") + s.queueRegisterNumber.ToString() }).ToList(); - entDto.OverNumberDetail = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.OverNumber) + entDto.OverNumberDetail = queueRegisterList.Where(m => m.completeFlag == QueueRegisterCompleteFlag.OverNumber).OrderByDescending(o => o.callTime) .Select(s => new GetScreenQueueRegisterListByRoomIdDetailDto { PatientName = s.patientName, - QueueRegisterNumber = s.queueRegisterNumber + QueueRegisterNumber = (s.isVip == 'Y' ? "V" : "") + s.queueRegisterNumber.ToString() }).ToList(); return entDto; diff --git a/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs b/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs index b5458f4..cf6fa58 100644 --- a/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs +++ b/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs @@ -159,6 +159,22 @@ namespace Shentun.Peis.QueueRegisters queueRegisterEnt.CompleteFlag = CompleteFlag; + if (queueRegisterEnt.CompleteFlag == QueueRegisterCompleteFlag.Wait) + { + //退回,情况呼叫时间 + queueRegisterEnt.CallTime = null; + } + else if (queueRegisterEnt.CompleteFlag == QueueRegisterCompleteFlag.AlreadyCalled) + { + //呼叫操作 + queueRegisterEnt.CallTime = DateTime.Now; + } + else if (queueRegisterEnt.CompleteFlag == QueueRegisterCompleteFlag.OverNumber) + { + //过号操作 + queueRegisterEnt.CallTime = DateTime.Now; + } + return queueRegisterEnt; }