|
|
|
@ -354,6 +354,13 @@ namespace Shentun.Peis.RegisterAsbitems |
|
|
|
return createRegisterCheckAsbitemEntity; |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// 修改
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="patientRegister"></param>
|
|
|
|
/// <param name="registerAsbitems"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
/// <exception cref="UserFriendlyException"></exception>
|
|
|
|
public async Task<CreateRegisterCheckAsbitemEntity> UpdateManyAsync(PatientRegister patientRegister, List<RegisterCheckAsbitem> 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,17 +555,24 @@ 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<Guid> NoInsertRegisterCheckItemRegisterCheckIds = new List<Guid>(); |
|
|
|
|
|
|
|
//将更新UpdateRegisterChecks对应的所有RegisterCheckItem放入删除中
|
|
|
|
foreach (var registerCheck in createRegisterCheckAsbitemEntity.UpdateRegisterChecks) |
|
|
|
{ |
|
|
|
var registerItems = existRegisterItems.Where(o => o.RegisterCheckId == registerCheck.Id).ToList(); |
|
|
|
//明细项目结果如果有保存过结果,就不删除
|
|
|
|
var isDelete = registerItems.Count(m => !string.IsNullOrWhiteSpace(m.Result)) > 0 ? true : false; |
|
|
|
if (!isDelete) |
|
|
|
{ |
|
|
|
foreach (var registerItem in registerItems) |
|
|
|
{ |
|
|
|
if (createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems. |
|
|
|
@ -552,6 +581,11 @@ namespace Shentun.Peis.RegisterAsbitems |
|
|
|
createRegisterCheckAsbitemEntity.DeleteRegisterCheckItems.Add(registerItem); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
NoInsertRegisterCheckItemRegisterCheckIds.Add(registerCheck.Id); |
|
|
|
} |
|
|
|
//没有检查申请单号的,重新生成检查申请单号
|
|
|
|
if (string.IsNullOrWhiteSpace(registerCheck.CheckRequestNo)) |
|
|
|
{ |
|
|
|
@ -611,6 +645,9 @@ namespace Shentun.Peis.RegisterAsbitems |
|
|
|
|
|
|
|
|
|
|
|
//增加register_check_item
|
|
|
|
//判断是否需要添加,已保存结果的原有项目不需要重新添加
|
|
|
|
if (!NoInsertRegisterCheckItemRegisterCheckIds.Contains(registerCheckId)) |
|
|
|
{ |
|
|
|
var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == registerCheckAsbitem.AsbitemId).ToList(); |
|
|
|
foreach (var asbitemDetail in asbitemDetails) |
|
|
|
{ |
|
|
|
@ -627,6 +664,7 @@ namespace Shentun.Peis.RegisterAsbitems |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|