diff --git a/src/Shentun.Peis.Application/RegisterCheckItems/RegisterCheckItemAppService.cs b/src/Shentun.Peis.Application/RegisterCheckItems/RegisterCheckItemAppService.cs index c299e1c..a389513 100644 --- a/src/Shentun.Peis.Application/RegisterCheckItems/RegisterCheckItemAppService.cs +++ b/src/Shentun.Peis.Application/RegisterCheckItems/RegisterCheckItemAppService.cs @@ -4,7 +4,9 @@ using Microsoft.EntityFrameworkCore; using Shentun.Peis.Enums; using Shentun.Peis.GuideTypes; using Shentun.Peis.Models; +using Shentun.Peis.PatientRegisters; using Shentun.Peis.ReferenceRanges; +using Shentun.Peis.RegisterCheckAsbitems; using System; using System.Collections.Generic; using System.Linq; @@ -33,6 +35,9 @@ namespace Shentun.Peis.RegisterCheckItems private readonly IRepository _unitRepository; private readonly RegisterCheckItemManager _registerCheckItemManager; private readonly ReferenceRangeManager _referenceRangeManager; + private readonly IRepository _registerCheckRepository; + private readonly IRepository _registerCheckAsbitemRepository; + private readonly IRepository _asbitemDetailRepository; private readonly CacheService _cacheService; public RegisterCheckItemAppService( IRepository registerCheckItemRepository, @@ -42,7 +47,10 @@ namespace Shentun.Peis.RegisterCheckItems IRepository patientRegisterRepository, IRepository referenceRangeRepository, IRepository unitRepository, - CacheService cacheService) + CacheService cacheService, + IRepository registerCheckRepository, + IRepository registerCheckAsbitemRepository, + IRepository asbitemDetailRepository) { this._registerCheckItemRepository = registerCheckItemRepository; this._userRepository = userRepository; @@ -52,6 +60,9 @@ namespace Shentun.Peis.RegisterCheckItems this._referenceRangeRepository = referenceRangeRepository; _unitRepository = unitRepository; _cacheService = cacheService; + _registerCheckRepository = registerCheckRepository; + _registerCheckAsbitemRepository = registerCheckAsbitemRepository; + _asbitemDetailRepository = asbitemDetailRepository; } /// @@ -223,5 +234,117 @@ namespace Shentun.Peis.RegisterCheckItems await _registerCheckItemManager.CheckAndDeleteAsync(RegisterCheckId, ItemId); } + /// + /// 同步明细项目 + /// + /// + [HttpPost("api/app/RegisterCheckItem/SyncRegisterCheckItem")] + public async Task SyncRegisterCheckItemAsync(PatientRegisterIdInputDto input) + { + var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + where patientRegister.Id == input.PatientRegisterId + && patientRegister.CompleteFlag != PatientRegisterCompleteFlag.SumCheck + && registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked + select new + { + registerCheckId = registerCheck.Id, + asbitemId = registerCheckAsbitem.AsbitemId + }).ToList(); + + if (query.Any()) + { + + List registerCheckItemList = new List(); + + foreach (var item in query) + { + //增加register_check_item + var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == item.asbitemId).ToList(); + foreach (var asbitemDetail in asbitemDetails) + { + var registerCheckItem = new RegisterCheckItem() + { + RegisterCheckId = item.registerCheckId, + ItemId = asbitemDetail.ItemId, + ResultStatusId = ResultStatusFlag.Normal + }; + registerCheckItemList.Add(registerCheckItem); + } + } + + //删除原有的明细 + await _registerCheckItemRepository.DeleteAsync(d => query.Select(s => s.registerCheckId).Contains(d.RegisterCheckId), true); + + //增加新的明细 + await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList); + + } + else + { + throw new UserFriendlyException("该人员已总检或者项目已检查"); + } + + } + + + /// + /// 临时处理明细项目 + /// + /// 组合项目ID + /// + /// + [HttpPost("api/app/RegisterCheckItem/TempHandRegisterCheckItem")] + public async Task TempHandRegisterCheckItemAsync(Guid AsbitemId) + { + var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + where registerCheckAsbitem.AsbitemId == AsbitemId + && patientRegister.CompleteFlag != PatientRegisterCompleteFlag.SumCheck + && registerCheck.CompleteFlag == RegisterCheckCompleteFlag.UnChecked + && patientRegister.MedicalStartDate > Convert.ToDateTime("2024-05-01") + select new + { + registerCheckId = registerCheck.Id, + asbitemId = registerCheckAsbitem.AsbitemId + }).ToList(); + + if (query.Any()) + { + + List registerCheckItemList = new List(); + + foreach (var item in query) + { + //增加register_check_item + var asbitemDetails = (await _asbitemDetailRepository.GetQueryableAsync()).Where(o => o.AsbitemId == item.asbitemId).ToList(); + foreach (var asbitemDetail in asbitemDetails) + { + var registerCheckItem = new RegisterCheckItem() + { + RegisterCheckId = item.registerCheckId, + ItemId = asbitemDetail.ItemId, + ResultStatusId = ResultStatusFlag.Normal + }; + registerCheckItemList.Add(registerCheckItem); + } + } + + //删除原有的明细 + await _registerCheckItemRepository.DeleteAsync(d => query.Select(s => s.registerCheckId).Contains(d.RegisterCheckId), true); + + //增加新的明细 + await _registerCheckItemRepository.InsertManyAsync(registerCheckItemList); + + } + + } + } }