From 67a93499b45a1d46f23bbe1ce5fc1e5c2632a691 Mon Sep 17 00:00:00 2001
From: wxd <123@qq.com>
Date: Thu, 19 Dec 2024 18:02:14 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E6=98=8E=E7=BB=86?=
=?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=80=BB=E8=BE=91=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../RegisterCheckAsbitemManager.cs | 82 ++++++++++++++-----
1 file changed, 60 insertions(+), 22 deletions(-)
diff --git a/src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs b/src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs
index 72ce766..12dd138 100644
--- a/src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs
+++ b/src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs
@@ -354,6 +354,13 @@ namespace Shentun.Peis.RegisterAsbitems
return createRegisterCheckAsbitemEntity;
}
+ ///
+ /// 修改
+ ///
+ ///
+ ///
+ ///
+ ///
public async Task UpdateManyAsync(PatientRegister patientRegister, List registerAsbitems)
{
if (patientRegister == null)
@@ -370,10 +377,14 @@ namespace Shentun.Peis.RegisterAsbitems
}
var createRegisterCheckAsbitemEntity = new CreateRegisterCheckAsbitemEntity();
- //获取已登记的组合项目信息
+ //获取已登记的检查
var existRegisterChecks = (await _registerCheckRepository.GetQueryableAsync()).Where(o => o.PatientRegisterId == patientRegister.Id).ToList();
+
+ //已登记的组合项目
var existRegisterAsbitems = (await _registerCheckAsbitemRepository.GetQueryableAsync()).Where(o =>
existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).ToList();
+
+ //已登记的明细项目
var existRegisterItems = (await _registerCheckItemRepository.GetQueryableAsync()).Where(o =>
existRegisterChecks.Select(x => x.Id).Contains(o.RegisterCheckId)).ToList();
@@ -388,12 +399,14 @@ namespace Shentun.Peis.RegisterAsbitems
// }
// return createRegisterCheckAsbitemEntity;
//}
- //获取删除的组合项目
+
+ //获取删除的组合项目 遍历登记的组合项目
foreach (var existRegisterAsbitem in existRegisterAsbitems)
{
var asbitem = await _cacheService.GetAsbitemAsync(existRegisterAsbitem.AsbitemId);
if (registerAsbitems.Where(o => o.Id == existRegisterAsbitem.Id && o.AsbitemId == existRegisterAsbitem.AsbitemId).Count() == 0)
{
+ //入参里面未找到项目,删除该项目
if (existRegisterAsbitem.IsCharge == 'Y')
{
throw new UserFriendlyException($"{asbitem.DisplayName}已收费不能删除");
@@ -429,23 +442,26 @@ namespace Shentun.Peis.RegisterAsbitems
}
}
+ //登记项目加到删除列表里面
createRegisterCheckAsbitemEntity.DeleteRegisterCheckAsbitems.Add(existRegisterAsbitem);
}
}
- //获取更新的组合项目
+
+ //获取更新的组合项目 遍历请求参数里面的组合项目列表
foreach (var registerAsbitem in registerAsbitems)
{
var asbitem = await _cacheService.GetAsbitemAsync(registerAsbitem.AsbitemId);
+ //根据请求参数里面的登记组合项目查找已登记里面数据
var existRegisterAsbitem = existRegisterAsbitems.Where(o => o.Id == registerAsbitem.Id &&
o.AsbitemId == registerAsbitem.AsbitemId).SingleOrDefault();
if (existRegisterAsbitem == null && registerAsbitem.Id != Guid.Empty)
{
-
throw new UserFriendlyException($"组合项目:{asbitem.DisplayName}传输了registerAsbitem.Id,但不存在");
}
if (registerAsbitem.Id == Guid.Empty)
{
+ //检查组合项目id是否登记,并且删除列表里面是否有组合项目id
if (existRegisterAsbitems.Where(o => o.AsbitemId == registerAsbitem.AsbitemId).Count() > 0 &&
createRegisterCheckAsbitemEntity.DeleteRegisterCheckAsbitems.Where(o => o.AsbitemId == registerAsbitem.AsbitemId).Count() == 0)
{
@@ -455,6 +471,7 @@ namespace Shentun.Peis.RegisterAsbitems
if (existRegisterAsbitem != null)
{
+ //对比登记的组合项目信息,有修改就加到修改列表里面
var isModified = false;
if (registerAsbitem.Amount != existRegisterAsbitem.Amount ||
registerAsbitem.StandardPrice != existRegisterAsbitem.StandardPrice ||
@@ -493,7 +510,8 @@ namespace Shentun.Peis.RegisterAsbitems
createRegisterCheckAsbitemEntity.UpdateRegisterCheckAsbitems.Add(existRegisterAsbitem);
}
}
- //获取新增的组合项目
+
+ //获取新增的组合项目 遍历请求参数里面的组合项目列表
foreach (var registerAsbitem in registerAsbitems)
{
if (registerAsbitem.Id == Guid.Empty)
@@ -512,20 +530,24 @@ namespace Shentun.Peis.RegisterAsbitems
ChargeAsbitemId = registerAsbitem.ChargeAsbitemId
};
+ //添加到新增列表
createRegisterCheckAsbitemEntity.NewRegisterCheckAsbitems.Add(newRegisterCheckAsbitem);
}
}
- //获取更新的RegisterCheck
+
+
+ //获取更新的RegisterCheck 遍历需要修改的登记组合项目
foreach (var registerCheckAsbitem in createRegisterCheckAsbitemEntity.UpdateRegisterCheckAsbitems)
{
if (createRegisterCheckAsbitemEntity.UpdateRegisterChecks.
Where(o => o.Id == registerCheckAsbitem.RegisterCheckId).Count() == 0)
{
+ //从登记的registerCheck里查找实体,添加到RegisterCheck更新列表
var registerCheck = existRegisterChecks.Where(o => o.Id == registerCheckAsbitem.RegisterCheckId).Single();
createRegisterCheckAsbitemEntity.UpdateRegisterChecks.Add(registerCheck);
}
}
- //获取删除的RegisterCheck及其对应的RegisterCheckItem
+ //获取删除的RegisterCheck及其对应的RegisterCheckItem 遍历已登记RegisterCheck
foreach (var registerCheck in existRegisterChecks)
{
if (createRegisterCheckAsbitemEntity.DeleteRegisterCheckAsbitems.
@@ -533,25 +555,37 @@ namespace Shentun.Peis.RegisterAsbitems
createRegisterCheckAsbitemEntity.UpdateRegisterCheckAsbitems.
Where(o => o.RegisterCheckId == registerCheck.Id).Count() == 0)
{
+ //添加registerCheck、registerCheckItem到删除列表
createRegisterCheckAsbitemEntity.DeleteRegisterChecks.Add(registerCheck);
createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems.AddRange(
existRegisterItems.Where(o => o.RegisterCheckId == registerCheck.Id).ToList());
}
}
+ //不需要添加明细的检查id 修改项目时,如果项目保存了结果,加进来
+ List NoInsertRegisterCheckItemRegisterCheckIds = new List();
//将更新UpdateRegisterChecks对应的所有RegisterCheckItem放入删除中
foreach (var registerCheck in createRegisterCheckAsbitemEntity.UpdateRegisterChecks)
{
var registerItems = existRegisterItems.Where(o => o.RegisterCheckId == registerCheck.Id).ToList();
- foreach (var registerItem in registerItems)
+ //明细项目结果如果有保存过结果,就不删除
+ var isDelete = registerItems.Count(m => !string.IsNullOrWhiteSpace(m.Result)) > 0 ? true : false;
+ if (!isDelete)
{
- if (createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems.
- Where(o => o.RegisterCheckId == registerItem.RegisterCheckId && o.ItemId == registerItem.ItemId).Count() == 0)
+ foreach (var registerItem in registerItems)
{
- createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems.Add(registerItem);
+ if (createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems.
+ Where(o => o.RegisterCheckId == registerItem.RegisterCheckId && o.ItemId == registerItem.ItemId).Count() == 0)
+ {
+ createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems.Add(registerItem);
+ }
}
}
+ else
+ {
+ NoInsertRegisterCheckItemRegisterCheckIds.Add(registerCheck.Id);
+ }
//没有检查申请单号的,重新生成检查申请单号
if (string.IsNullOrWhiteSpace(registerCheck.CheckRequestNo))
{
@@ -611,21 +645,25 @@ namespace Shentun.Peis.RegisterAsbitems
//增加register_check_item
- var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).ToList();
- foreach (var asbitemDetail in asbitemDetails)
+ //判断是否需要添加,已保存结果的原有项目不需要重新添加
+ if (!NoInsertRegisterCheckItemRegisterCheckIds.Contains(registerCheckId))
{
- if (createRegisterCheckAsbitemEntity.NewRegisterCheckItems.Where(o => o.RegisterCheckId == registerCheckId &&
- o.ItemId == asbitemDetail.ItemId).Count() == 0)
+ var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).ToList();
+ foreach (var asbitemDetail in asbitemDetails)
{
- var registerCheckItem = new RegisterCheckItem()
+ if (createRegisterCheckAsbitemEntity.NewRegisterCheckItems.Where(o => o.RegisterCheckId == registerCheckId &&
+ o.ItemId == asbitemDetail.ItemId).Count() == 0)
{
- RegisterCheckId = registerCheckId,
- ItemId = asbitemDetail.ItemId,
- ResultStatusId = ResultStatusFlag.Normal
- };
- createRegisterCheckAsbitemEntity.NewRegisterCheckItems.Add(registerCheckItem);
- }
+ var registerCheckItem = new RegisterCheckItem()
+ {
+ RegisterCheckId = registerCheckId,
+ ItemId = asbitemDetail.ItemId,
+ ResultStatusId = ResultStatusFlag.Normal
+ };
+ createRegisterCheckAsbitemEntity.NewRegisterCheckItems.Add(registerCheckItem);
+ }
+ }
}
}