From 0ce514936617fca61e7cd49b7208c93815d5f5c5 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Thu, 14 Aug 2025 18:11:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChargeRequests/ChargeRequestAppService.cs | 121 ++++++------ .../LisRequests/LisRequestAppService.cs | 172 +++++++++--------- .../PrintReports/PrintReportAppService.cs | 17 +- 3 files changed, 160 insertions(+), 150 deletions(-) diff --git a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs index defb50c..4b731d9 100644 --- a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs +++ b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs @@ -68,73 +68,76 @@ namespace Shentun.Peis.ChargeRequests { throw new UserFriendlyException("input参数不能为空"); } + var chargeRequest = new ChargeRequest(); - var patientRegisterEnt = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId); - if (patientRegisterEnt == null) - throw new UserFriendlyException("人员不存在"); - - var isThirdInterface = await _thirdInterfaceRepository.CountAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest - && o.MedicalCenterId == patientRegisterEnt.MedicalCenterId && o.IsActive == 'Y'); - - if (isThirdInterface == 0) - return null; - - var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() - on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId - join asbitem in await _asbitemRepository.GetQueryableAsync() - on registerCheckAsbitem.AsbitemId equals asbitem.Id - where registerCheck.PatientRegisterId == input.PatientRegisterId && - input.RegisterCheckAsbitems.Select(o => o.RegisterCheckAsbitemId) - .Contains(registerCheckAsbitem.Id) - select new - { - registerCheckAsbitem, - asbitem - }).ToList(); - var chargeRequestSource = new ChargeRequest() + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { - PatientRegisterId = input.PatientRegisterId - }; - var chargeRequest = await _chargeRequestManager.CreateAsync(chargeRequestSource); - //更新登记组合项目 - foreach (var item in list) - { - if (item.registerCheckAsbitem.ChargeRequestId != null) + var patientRegisterEnt = await _patientRegisterRepository.FirstOrDefaultAsync(f => f.Id == input.PatientRegisterId); + if (patientRegisterEnt == null) + throw new UserFriendlyException("人员不存在"); + + var isThirdInterface = await _thirdInterfaceRepository.CountAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest + && o.MedicalCenterId == patientRegisterEnt.MedicalCenterId && o.IsActive == 'Y'); + + if (isThirdInterface == 0) + return null; + + var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + join asbitem in await _asbitemRepository.GetQueryableAsync() + on registerCheckAsbitem.AsbitemId equals asbitem.Id + where registerCheck.PatientRegisterId == input.PatientRegisterId && + input.RegisterCheckAsbitems.Select(o => o.RegisterCheckAsbitemId) + .Contains(registerCheckAsbitem.Id) + select new + { + registerCheckAsbitem, + asbitem + }).ToList(); + var chargeRequestSource = new ChargeRequest() { - var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId); - if (haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest || - haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest || - haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest) + PatientRegisterId = input.PatientRegisterId + }; + chargeRequest = await _chargeRequestManager.CreateAsync(chargeRequestSource); + //更新登记组合项目 + foreach (var item in list) + { + if (item.registerCheckAsbitem.ChargeRequestId != null) { - throw new UserFriendlyException($"{item.asbitem.DisplayName}已经处于收费、作废、退费申请状态"); + var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId); + if (haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest || + haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest || + haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest) + { + throw new UserFriendlyException($"{item.asbitem.DisplayName}已经处于收费、作废、退费申请状态"); + } } + item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id; + await _registerCheckAsbitemRepository.UpdateAsync(item.registerCheckAsbitem); } - item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id; - await _registerCheckAsbitemRepository.UpdateAsync(item.registerCheckAsbitem); - } - //插入申请单信息 - chargeRequest = await _chargeRequestRepository.InsertAsync(chargeRequest); - foreach (var item in list) - { - var chargeRequestAsbitemSource = new ChargeRequestAsbitem() + //插入申请单信息 + chargeRequest = await _chargeRequestRepository.InsertAsync(chargeRequest); + foreach (var item in list) { - ChargeRequestId = chargeRequest.Id, - AsbitemId = item.registerCheckAsbitem.AsbitemId, - RegisterCheckAsbitemId = item.registerCheckAsbitem.Id, - Amount = item.registerCheckAsbitem.Amount, - ChargePrice = item.registerCheckAsbitem.ChargePrice, - IsCharge = 'N' - }; - var chargeRequestAsbitem = await _chargeRequestAsbitemManager.CreateAsync(chargeRequestAsbitemSource); - await _chargeRequestAsbitemRepository.InsertAsync(chargeRequestAsbitem); + var chargeRequestAsbitemSource = new ChargeRequestAsbitem() + { + ChargeRequestId = chargeRequest.Id, + AsbitemId = item.registerCheckAsbitem.AsbitemId, + RegisterCheckAsbitemId = item.registerCheckAsbitem.Id, + Amount = item.registerCheckAsbitem.Amount, + ChargePrice = item.registerCheckAsbitem.ChargePrice, + IsCharge = 'N' + }; + var chargeRequestAsbitem = await _chargeRequestAsbitemManager.CreateAsync(chargeRequestAsbitemSource); + await _chargeRequestAsbitemRepository.InsertAsync(chargeRequestAsbitem); + } + //await _unitOfWorkManager.Current.SaveChangesAsync(); + await uow.CompleteAsync(); + //await UnitOfWorkManager.Current.SaveChangesAsync(); + //await UnitOfWorkManager.Current.CompleteAsync(); } - await _unitOfWorkManager.Current.SaveChangesAsync(); - await _unitOfWorkManager.Current.CompleteAsync(); - //await UnitOfWorkManager.Current.SaveChangesAsync(); - //await UnitOfWorkManager.Current.CompleteAsync(); - - using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + using (var unitOfWork = _unitOfWorkManager.Begin(requiresNew: false, isTransactional: false)) { await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id, "SendChargeRequestAsync"); await unitOfWork.CompleteAsync(); diff --git a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs index d9df35b..672f5ee 100644 --- a/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs +++ b/src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs @@ -653,104 +653,104 @@ namespace Shentun.Peis.LisRequests //生成LIS条码 var lisRequests = await _lisRequestManager.SetLisRequestAsync(patientRegisterId); - await _unitOfWorkManager.Current.SaveChangesAsync(); - await _unitOfWorkManager.Current.CompleteAsync(); + //await _unitOfWorkManager.Current.SaveChangesAsync(); + //await _unitOfWorkManager.Current.CompleteAsync(); - using (var uow = _unitOfWorkManager.Begin( - requiresNew: false, isTransactional: false - )) + // using (var uow = _unitOfWorkManager.Begin( + // requiresNew: false, isTransactional: false + //)) + // { + if (lisRequestNoPrintMode == "0") { - if (lisRequestNoPrintMode == "0") + var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId + join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id + join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id + join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id + where lisRequest.LisRequestNo == input.LisRequestNo + select new + { + lisRequest, + registerCheckAsbitem, + asbitem, + registerCheck, + patientRegister, + patient + }).ToList(); + + if (query.Count == 0) { - var query = (from lisRequest in await _lisRequestRepository.GetQueryableAsync() - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() on lisRequest.Id equals registerCheckAsbitem.LisRequestId - join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id - join registerCheck in await _registerCheckRepository.GetQueryableAsync() on registerCheckAsbitem.RegisterCheckId equals registerCheck.Id - join patientRegister in await _patientRegisterRepository.GetQueryableAsync() on registerCheck.PatientRegisterId equals patientRegister.Id - join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id - where lisRequest.LisRequestNo == input.LisRequestNo - select new - { - lisRequest, - registerCheckAsbitem, - asbitem, - registerCheck, - patientRegister, - patient - }).ToList(); - - if (query.Count == 0) - { - throw new UserFriendlyException("检验单号不存在"); - } + throw new UserFriendlyException("检验单号不存在"); + } - var patientRegisterGroup = query.GroupBy(g => g.patientRegister); + var patientRegisterGroup = query.GroupBy(g => g.patientRegister); - var resultDto = new LisPatientRegisterDto + var resultDto = new LisPatientRegisterDto + { + Age = patientRegisterGroup.FirstOrDefault().Key.Age, + LisRequestNo = input.LisRequestNo, + PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, + SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, + SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, + AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto { - Age = patientRegisterGroup.FirstOrDefault().Key.Age, - LisRequestNo = input.LisRequestNo, - PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, - SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, - SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, - AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto - { - AsbitemId = ss.registerCheckAsbitem.AsbitemId, - AsbitemName = ss.asbitem.DisplayName, - AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount - }).ToList() - }; + AsbitemId = ss.registerCheckAsbitem.AsbitemId, + AsbitemName = ss.asbitem.DisplayName, + AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount + }).ToList() + }; - return resultDto; - } - else + return resultDto; + } + else + { + //人员条码模式 + var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() + join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id + join registerCheck in await _registerCheckRepository.GetQueryableAsync() + on patientRegister.Id equals registerCheck.PatientRegisterId + join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() + on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId + join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id + join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id + where patientRegister.PatientRegisterNo == input.LisRequestNo + select new + { + registerCheckAsbitem, + asbitem, + registerCheck, + patientRegister, + patient, + lisRequest + }).ToList(); + + if (query.Count == 0) { - //人员条码模式 - var query = (from patientRegister in await _patientRegisterRepository.GetQueryableAsync() - join patient in await _patientRepository.GetQueryableAsync() on patientRegister.PatientId equals patient.Id - join registerCheck in await _registerCheckRepository.GetQueryableAsync() - on patientRegister.Id equals registerCheck.PatientRegisterId - join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() - on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId - join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id - join lisRequest in await _lisRequestRepository.GetQueryableAsync() on registerCheckAsbitem.LisRequestId equals lisRequest.Id - where patientRegister.PatientRegisterNo == input.LisRequestNo - select new - { - registerCheckAsbitem, - asbitem, - registerCheck, - patientRegister, - patient, - lisRequest - }).ToList(); - - if (query.Count == 0) - { - throw new UserFriendlyException("人员条码号不存在"); - } + throw new UserFriendlyException("人员条码号不存在"); + } - var patientRegisterGroup = query.GroupBy(g => g.patientRegister); + var patientRegisterGroup = query.GroupBy(g => g.patientRegister); - var resultDto = new LisPatientRegisterDto + var resultDto = new LisPatientRegisterDto + { + Age = patientRegisterGroup.FirstOrDefault().Key.Age, + LisRequestNo = input.LisRequestNo, + PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, + SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, + SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, + AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto { - Age = patientRegisterGroup.FirstOrDefault().Key.Age, - LisRequestNo = input.LisRequestNo, - PatientName = patientRegisterGroup.FirstOrDefault().Key.PatientName, - SexName = _cacheService.GetSexNameAsync(patientRegisterGroup.FirstOrDefault().Key.SexId).Result, - SampleTypeName = _cacheService.GetSampleTypeNameAsync(patientRegisterGroup.FirstOrDefault().FirstOrDefault().lisRequest.SampleTypeId).Result, - AsbitemDetail = patientRegisterGroup.FirstOrDefault().Select(ss => new LisPatientRegisterDetailDto - { - AsbitemId = ss.registerCheckAsbitem.AsbitemId, - AsbitemName = ss.asbitem.DisplayName, - AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount, - SamplingTime = DataHelper.ConversionDateToString(ss.lisRequest.SamplingTime) - }).ToList() - }; - - return resultDto; - } + AsbitemId = ss.registerCheckAsbitem.AsbitemId, + AsbitemName = ss.asbitem.DisplayName, + AsbitemPrice = ss.registerCheckAsbitem.ChargePrice * ss.registerCheckAsbitem.Amount, + SamplingTime = DataHelper.ConversionDateToString(ss.lisRequest.SamplingTime) + }).ToList() + }; + + return resultDto; } + //} } diff --git a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs index 54124d6..642e395 100644 --- a/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs +++ b/src/Shentun.Peis.Application/PrintReports/PrintReportAppService.cs @@ -310,10 +310,17 @@ namespace Shentun.Peis.PrintReports [HttpPost("api/app/PrintReport/GetLisRequestReportByPatientRegisterId")] public async Task> GetLisRequestReportByPatientRegisterIdAsync(PatientRegisterIdInputDto input) { - //生成LIS条码 - var lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId); - await _unitOfWorkManager.Current.SaveChangesAsync(); - await _unitOfWorkManager.Current.CompleteAsync(); + var lisRequests = new List(); + + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + //生成LIS条码 + lisRequests = await _lisRequestManager.SetLisRequestAsync(input.PatientRegisterId); + //await _unitOfWorkManager.Current.SaveChangesAsync(); + await uow.CompleteAsync(); + } + + var entlist = new List(); @@ -487,7 +494,7 @@ namespace Shentun.Peis.PrintReports }).ToList(); await uow.CompleteAsync(); - + }