From b11a656228c79912bba20f925e0ecb7b447e6a2c Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Tue, 23 Jul 2024 11:25:55 +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 --- .../GetScreenQueueRegisterListByRoomIdDto.cs | 49 +++++++++++++++ .../QueueRegisters/QueueRegisterAppService.cs | 62 +++++++++++++++++++ .../LisRequests/LisRequestManager.cs | 3 + .../QueueRegisters/QueueRegisterManager.cs | 33 +++++----- 4 files changed, 133 insertions(+), 14 deletions(-) create mode 100644 src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs diff --git a/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs new file mode 100644 index 0000000..eb34ef8 --- /dev/null +++ b/src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Shentun.Peis.QueueRegisters +{ + public class GetScreenQueueRegisterListByRoomIdDto + { + + /// + /// 当前就诊人姓名 + /// + public string VisitName { get; set; } + + /// + /// 当前就诊人号码 + /// + public int VisitNumber { get; set; } + + /// + /// 候诊列表 + /// + public List WaitDetail { get; set; } = new List(); + + + /// + /// 过号列表 + /// + public List OverNumberDetail { get; set; } = new List(); + } + + + + + + public class GetScreenQueueRegisterListByRoomIdDetailDto + { + /// + /// 姓名 + /// + public string PatientName { get; set; } + + /// + /// 排队号码 + /// + public int QueueRegisterNumber { get; set; } + + } +} diff --git a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs index 3edafcc..c236ede 100644 --- a/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs +++ b/src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs @@ -178,6 +178,16 @@ namespace Shentun.Peis.QueueRegisters public async Task> GetYesTriageAsbitemListAsync(PatientRegisterIdInputDto input) { + + var asbitemIds = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join registerCheck in await _registerCheckRepository.GetQueryableAsync() on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + where patientRegister.Id == input.PatientRegisterId + select registerCheckAsbitem.AsbitemId).ToList(); + + if (!asbitemIds.Any()) + throw new UserFriendlyException("该人员未登记项目"); + var entListDto = (from queueRegister in await _queueRegisterRepository.GetQueryableAsync() join room in await _roomRepository.GetQueryableAsync() on queueRegister.RoomId equals room.Id join roomDetail in await _roomDetailRepository.GetQueryableAsync() on room.Id equals roomDetail.RoomId @@ -185,6 +195,7 @@ namespace Shentun.Peis.QueueRegisters join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id into itemTypeTemp from itemTypeHaveEmpty in itemTypeTemp.DefaultIfEmpty() where queueRegister.PatientRegisterId == input.PatientRegisterId + && asbitemIds.Contains(roomDetail.AsbitemId) orderby queueRegister.CreationTime descending select new YesTriageAsbitemListDto { @@ -318,6 +329,7 @@ namespace Shentun.Peis.QueueRegisters join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on queueRegister.PatientRegisterId equals patientRegister.Id where queueRegister.CreationTime >= DateTime.Now.Date + && queueRegister.RoomId == input.RoomId select new { completeFlag = queueRegister.CompleteFlag, @@ -356,5 +368,55 @@ namespace Shentun.Peis.QueueRegisters return entDto; } + + + /// + /// 获取叫号屏人员数据 + /// + /// + /// + [HttpPost("api/app/QueueRegister/GetScreenQueueRegisterListByRoomId")] + public async Task GetScreenQueueRegisterListByRoomIdAsync(RoomIdInputDto 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 + where queueRegister.CreationTime >= DateTime.Now.Date + && queueRegister.RoomId == input.RoomId + select new + { + completeFlag = queueRegister.CompleteFlag, + patientName = patientRegister.PatientName, + isVip = patientRegister.IsVip, + queueRegisterId = queueRegister.Id, + queueRegisterNumber = queueRegister.DisplayOrder + }; + + + var visitEnt = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.AlreadyCalled).OrderByDescending(o => o.queueRegisterNumber).FirstOrDefault(); + + if (visitEnt != null) + { + entDto.VisitNumber = visitEnt.queueRegisterNumber; + entDto.VisitName = visitEnt.patientName; + } + + entDto.WaitDetail = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.Wait) + .Select(s => new GetScreenQueueRegisterListByRoomIdDetailDto + { + PatientName = s.patientName, + QueueRegisterNumber = s.queueRegisterNumber + }).ToList(); + + entDto.OverNumberDetail = query.Where(m => m.completeFlag == QueueRegisterCompleteFlag.OverNumber) + .Select(s => new GetScreenQueueRegisterListByRoomIdDetailDto + { + PatientName = s.patientName, + QueueRegisterNumber = s.queueRegisterNumber + }).ToList(); + + return entDto; + } } } diff --git a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs index 142b3f6..bdd1905 100644 --- a/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs +++ b/src/Shentun.Peis.Domain/LisRequests/LisRequestManager.cs @@ -118,8 +118,10 @@ namespace Shentun.Peis.LisRequests out List updateRegisterCheckAsbitems, out List createLisRequests) { + //条码分组内存在的对应项目 var registerCheckAsbitemLisList = new List(); updateRegisterCheckAsbitems = new List(); + //根据登记的项目按条码分组明细筛选 foreach (var registerCheckAsbitem in registerCheckAsbitems) { var sampleGroupDetail = sampleGroupDetails.Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).FirstOrDefault(); @@ -142,6 +144,7 @@ namespace Shentun.Peis.LisRequests { continue; } + //查找所属的条码分组是否生成过lis申请号,有就延用 var haveRegisterCheckAsbitemLis = registerCheckAsbitemLisList.Where(o => o.SampleGroupId == registerCheckAsbitemLis.SampleGroupId && o.LisRequestId != null && o.LisRequestId != Guid.Empty).FirstOrDefault(); if (haveRegisterCheckAsbitemLis != null) diff --git a/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs b/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs index 48f0563..bcb8910 100644 --- a/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs +++ b/src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs @@ -91,9 +91,10 @@ namespace Shentun.Peis.QueueRegisters //获取项目所属房间需要等待的时间 var query = (from roomDetail in await _roomDetailRepository.GetQueryableAsync() join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id - join queueRegister in await _queueRegisterRepository.GetQueryableAsync() on room.Id equals queueRegister.RoomId into queueRegisterTemp + join queueRegister in (await _queueRegisterRepository.GetQueryableAsync()).Where(m => m.CreationTime >= DateTime.Now.Date).AsQueryable() + on room.Id equals queueRegister.RoomId into queueRegisterTemp from queueRegisterHaveEmpty in queueRegisterTemp.DefaultIfEmpty() - where queueRegisterHaveEmpty.CreationTime >= DateTime.Now.Date && asbitemIds.Contains(roomDetail.AsbitemId) + where asbitemIds.Contains(roomDetail.AsbitemId) select new { roomId = room.Id, @@ -115,19 +116,23 @@ namespace Shentun.Peis.QueueRegisters } else { - //无排队信息 - var roomId = (from roomDetail in await _roomDetailRepository.GetQueryableAsync() - join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id - where asbitemIds.Contains(roomDetail.AsbitemId) - orderby room.QueueTime, room.DisplayOrder ascending - select room.Id).FirstOrDefault(); - if (roomId == Guid.Empty) - { - throw new UserFriendlyException("该人员登记的项目未在房间中维护"); - } - - return await ManualQueuingRoomAsync(PatientRegisterId, roomId); + throw new UserFriendlyException("该人员登记的项目未在房间中维护"); } + //else + //{ + // //无排队信息 + // var roomId = (from roomDetail in await _roomDetailRepository.GetQueryableAsync() + // join room in await _roomRepository.GetQueryableAsync() on roomDetail.RoomId equals room.Id + // where asbitemIds.Contains(roomDetail.AsbitemId) + // orderby room.QueueTime, room.DisplayOrder ascending + // select room.Id).FirstOrDefault(); + // if (roomId == Guid.Empty) + // { + // throw new UserFriendlyException("该人员登记的项目未在房间中维护"); + // } + + // return await ManualQueuingRoomAsync(PatientRegisterId, roomId); + //} }