Browse Source

叫号

master
wxd 11 months ago
parent
commit
72b0c1e5e4
  1. 2
      src/Shentun.Peis.Application.Contracts/QueueRegisters/GetQueueRegisterListByRoomIdDto.cs
  2. 2
      src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs
  3. 76
      src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
  4. 16
      src/Shentun.Peis.Domain/QueueRegisters/QueueRegisterManager.cs

2
src/Shentun.Peis.Application.Contracts/QueueRegisters/GetQueueRegisterListByRoomIdDto.cs

@ -46,7 +46,7 @@ namespace Shentun.Peis.QueueRegisters
/// <summary>
/// 排队号码
/// </summary>
public int QueueRegisterNumber { get; set; }
public string QueueRegisterNumber { get; set; }
/// <summary>
/// 人员ID

2
src/Shentun.Peis.Application.Contracts/QueueRegisters/GetScreenQueueRegisterListByRoomIdDto.cs

@ -43,7 +43,7 @@ namespace Shentun.Peis.QueueRegisters
/// <summary>
/// 排队号码
/// </summary>
public int QueueRegisterNumber { get; set; }
public string QueueRegisterNumber { get; set; }
}
}

76
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<GetScreenQueueRegisterListByRoomIdDto> 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;

16
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;
}

Loading…
Cancel
Save