Browse Source

叫号取消 恢复逻辑

master
wxd 1 week ago
parent
commit
fa7a86fc0c
  1. 30
      src/Shentun.Peis.Application.Contracts/QueueRegisters/GetCancelQueueRegisterByPatientRegisterIdDto.cs
  2. 91
      src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs
  3. 2
      src/Shentun.Peis.Domain/QueueRegisters/QueueRegister.cs
  4. 16973
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20260417084113_update_queue_register_add_soft_del.Designer.cs
  5. 47
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20260417084113_update_queue_register_add_soft_del.cs
  6. 14
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

30
src/Shentun.Peis.Application.Contracts/QueueRegisters/GetCancelQueueRegisterByPatientRegisterIdDto.cs

@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.QueueRegisters
{
public class GetCancelQueueRegisterByPatientRegisterIdDto
{
/// <summary>
/// 排队id
/// </summary>
public Guid QueueRegisterId { get; set; }
/// <summary>
/// 房间名称
/// </summary>
public string RoomName { get; set; }
/// <summary>
/// 排队时间
/// </summary>
public string QueueTime { get; set; }
/// <summary>
/// 号码
/// </summary>
public int DisplayOrder { get; set; }
}
}

91
src/Shentun.Peis.Application/QueueRegisters/QueueRegisterAppService.cs

@ -422,7 +422,7 @@ namespace Shentun.Peis.QueueRegisters
/// <summary>
/// 取消分诊 删除
/// 取消分诊 按排队取消
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@ -432,12 +432,101 @@ namespace Shentun.Peis.QueueRegisters
await _queueRegisterRepository.DeleteAsync(d => d.Id == input.QueueRegisterId);
}
/// <summary>
/// 取消分诊 按人取消
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/DeleteByPatientRegisterId")]
public async Task DeleteByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
await _queueRegisterRepository.DeleteAsync(d => d.PatientRegisterId == input.PatientRegisterId && d.CompleteFlag == QueueRegisterCompleteFlag.Wait);
}
/// <summary>
/// 获取取消的叫号列表 根据人员id
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/GetCancelQueueRegisterByPatientRegisterId")]
public async Task<List<GetCancelQueueRegisterByPatientRegisterIdDto>> GetCancelQueueRegisterByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
var queryable = await _queueRegisterRepository.GetQueryableAsync();
var query = queryable.IgnoreQueryFilters();
// 手动筛选出已删除的数据
var deletedEntities = await AsyncExecuter.ToListAsync(
query.Where(e => e.IsDeleted == true && e.PatientRegisterId == input.PatientRegisterId)
);
var roomList = await _roomRepository.GetListAsync();
var roomDict = roomList.ToDictionary(r => r.Id, r => r.DisplayName);
var entListDto = deletedEntities.Select(s => new GetCancelQueueRegisterByPatientRegisterIdDto
{
DisplayOrder = s.DisplayOrder,
QueueRegisterId = s.Id,
QueueTime = DataHelper.ConversionDateToString(s.CreationTime),
RoomName = roomDict.TryGetValue(s.RoomId, out var name) ? name : ""
}).ToList();
return entListDto;
}
/// <summary>
/// 重新恢复排队 根据排队id
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/app/QueueRegister/RecoverCancelQueueRegisterByQueueRegisterId")]
public async Task RecoverCancelQueueRegisterByQueueRegisterIdAsync(QueueRegisterIdInputDto input)
{
var queryable = await _queueRegisterRepository.GetQueryableAsync();
var queueRegisterFirst = await AsyncExecuter.FirstOrDefaultAsync(
queryable.IgnoreQueryFilters()
.Where(e => e.Id == input.QueueRegisterId)
);
if (queueRegisterFirst == null)
{
throw new UserFriendlyException("数据不存在");
}
if (!queueRegisterFirst.IsDeleted)
{
throw new UserFriendlyException("该排队未被取消,无需恢复");
}
// 恢复字段
queueRegisterFirst.IsDeleted = false;
queueRegisterFirst.DeletionTime = null;
queueRegisterFirst.DeleterId = null;
// 更新
await _queueRegisterRepository.UpdateAsync(queueRegisterFirst);
#region 判断排队数据是否为多房间的 如果是单房间,要删除现在的排队
var roomFirst = await _roomRepository.FirstOrDefaultAsync(f => f.Id == queueRegisterFirst.RoomId);
if (roomFirst != null)
{
if (roomFirst.QueueRoomFlag == '0')
{
//如果单房间,删除其他单房间的排队
var yesDelRoomIds = (await _roomRepository.GetListAsync(m => m.QueueRoomFlag == '0')).Select(s => s.Id).ToList();
//删除排队操作
await _queueRegisterRepository.DeleteAsync(d => d.PatientRegisterId == queueRegisterFirst.PatientRegisterId
&& d.CompleteFlag != QueueRegisterCompleteFlag.AlreadyCalled && yesDelRoomIds.Contains(d.RoomId), true);
}
}
#endregion
}
/// <summary>
/// 人工排队房间
/// </summary>

2
src/Shentun.Peis.Domain/QueueRegisters/QueueRegister.cs

@ -12,7 +12,7 @@ namespace Shentun.Peis.Models
/// 排队登记
/// </summary>
[Table("queue_register")]
public class QueueRegister : AuditedEntity<Guid>, IHasConcurrencyStamp
public class QueueRegister : FullAuditedEntity<Guid>, IHasConcurrencyStamp
{
/// <summary>
/// 病人登记ID

16973
src/Shentun.Peis.EntityFrameworkCore/Migrations/20260417084113_update_queue_register_add_soft_del.Designer.cs
File diff suppressed because it is too large
View File

47
src/Shentun.Peis.EntityFrameworkCore/Migrations/20260417084113_update_queue_register_add_soft_del.cs

@ -0,0 +1,47 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Shentun.Peis.Migrations
{
public partial class update_queue_register_add_soft_del : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<Guid>(
name: "deleter_id",
table: "queue_register",
type: "uuid",
nullable: true);
migrationBuilder.AddColumn<DateTime>(
name: "deletion_time",
table: "queue_register",
type: "timestamp without time zone",
nullable: true);
migrationBuilder.AddColumn<bool>(
name: "is_deleted",
table: "queue_register",
type: "boolean",
nullable: false,
defaultValue: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "deleter_id",
table: "queue_register");
migrationBuilder.DropColumn(
name: "deletion_time",
table: "queue_register");
migrationBuilder.DropColumn(
name: "is_deleted",
table: "queue_register");
}
}
}

14
src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

@ -9103,11 +9103,25 @@ namespace Shentun.Peis.Migrations
.HasColumnType("uuid")
.HasColumnName("creator_id");
b.Property<Guid?>("DeleterId")
.HasColumnType("uuid")
.HasColumnName("deleter_id");
b.Property<DateTime?>("DeletionTime")
.HasColumnType("timestamp without time zone")
.HasColumnName("deletion_time");
b.Property<int>("DisplayOrder")
.HasColumnType("integer")
.HasColumnName("display_order")
.HasComment("排队顺序");
b.Property<bool>("IsDeleted")
.ValueGeneratedOnAdd()
.HasColumnType("boolean")
.HasDefaultValue(false)
.HasColumnName("is_deleted");
b.Property<DateTime?>("LastModificationTime")
.IsRequired()
.HasColumnType("timestamp without time zone")

Loading…
Cancel
Save