Browse Source

修改时明细项目逻辑修改

master
wxd 11 months ago
parent
commit
67a93499b4
  1. 82
      src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs

82
src/Shentun.Peis.Domain/RegisterCheckAsbitems/RegisterCheckAsbitemManager.cs

@ -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,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<Guid> NoInsertRegisterCheckItemRegisterCheckIds = new List<Guid>();
//将更新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);
}
}
}
}

Loading…
Cancel
Save