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); + } + } } }