diff --git a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs index 1cb8600..d63ec87 100644 --- a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs +++ b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs @@ -20,7 +20,7 @@ namespace Shentun.Peis.ChargeRequests { [ApiExplorerSettings(GroupName = "Work")] [Authorize] - public class ChargeRequestAppService: ApplicationService + public class ChargeRequestAppService : ApplicationService { private readonly IRepository _chargeRequestRepository; private readonly IRepository _chargeRequestAsbitemRepository; @@ -41,7 +41,7 @@ namespace Shentun.Peis.ChargeRequests ChargeRequestManager chargeRequestManager, ChargeRequestAsbitemManager chargeRequestAsbitemManager, IUnitOfWorkManager unitOfWorkManager - ) + ) { _chargeRequestRepository = chargeRequestRepository; _chargeRequestAsbitemRepository = chargeRequestAsbitemRepository; @@ -65,7 +65,7 @@ namespace Shentun.Peis.ChargeRequests { throw new UserFriendlyException("input参数不能为空"); } - + //var patientRegister = await _patientRegisterRepository.GetAsync(input.PatientRegisterId); var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync() join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync() @@ -73,7 +73,7 @@ namespace Shentun.Peis.ChargeRequests join asbitem in await _asbitemRepository.GetQueryableAsync() on registerCheckAsbitem.AsbitemId equals asbitem.Id where registerCheck.PatientRegisterId == input.PatientRegisterId && - input.RegisterCheckAsbitems.Select(o=>o.RegisterCheckAsbitemId) + input.RegisterCheckAsbitems.Select(o => o.RegisterCheckAsbitemId) .Contains(registerCheckAsbitem.Id) select new { @@ -83,15 +83,15 @@ namespace Shentun.Peis.ChargeRequests var chargeRequestSource = new ChargeRequest() { PatientRegisterId = input.PatientRegisterId - }; + }; var chargeRequest = await _chargeRequestManager.CreateAsync(chargeRequestSource); //更新登记组合项目 foreach (var item in list) { - if(item.registerCheckAsbitem.ChargeRequestId != null) + if (item.registerCheckAsbitem.ChargeRequestId != null) { - var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId); - if(haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest || + var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId); + if (haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest || haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest || haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest) { @@ -121,7 +121,13 @@ namespace Shentun.Peis.ChargeRequests await _unitOfWorkManager.Current.CompleteAsync(); //await UnitOfWorkManager.Current.SaveChangesAsync(); //await UnitOfWorkManager.Current.CompleteAsync(); - await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id, "SendChargeRequestAsync"); + + using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + { + await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id, "SendChargeRequestAsync"); + await unitOfWork.CompleteAsync(); + } + ChargeRequestDto result = new ChargeRequestDto(); result.Id = chargeRequest.Id; @@ -146,10 +152,16 @@ namespace Shentun.Peis.ChargeRequests { throw new UserFriendlyException("状态不是收费申请,不允许作废申请"); } - await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "CancelChargeRequestAsync"); + using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + { + await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "CancelChargeRequestAsync"); + await unitOfWork.CompleteAsync(); + } + + ChargeRequestDto result = new ChargeRequestDto(); - + return result; } /// @@ -170,7 +182,13 @@ namespace Shentun.Peis.ChargeRequests { throw new UserFriendlyException("状态不是已收费,不允许退费申请"); } + using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true)) + { await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "RefundRequestAsync"); + await unitOfWork.CompleteAsync(); + } + + ChargeRequestDto result = new ChargeRequestDto(); @@ -192,26 +210,26 @@ namespace Shentun.Peis.ChargeRequests //var patientRegister = _patientRegisterRepository.GetAsync(input.PatientRegisterId); var list = (from chargeRequest in await _chargeRequestRepository.GetQueryableAsync() - join patientRegister in await _patientRegisterRepository.GetQueryableAsync() - on chargeRequest.PatientRegisterId equals patientRegister.Id - join chargeRequestAsbitem in await _chargeRequestAsbitemRepository.GetQueryableAsync() - on chargeRequest.Id equals chargeRequestAsbitem.ChargeRequestId - where patientRegister.Id == input.PatientRegisterId - select new - { - chargeRequest, - chargeRequestAsbitem - }).ToList(); + join patientRegister in await _patientRegisterRepository.GetQueryableAsync() + on chargeRequest.PatientRegisterId equals patientRegister.Id + join chargeRequestAsbitem in await _chargeRequestAsbitemRepository.GetQueryableAsync() + on chargeRequest.Id equals chargeRequestAsbitem.ChargeRequestId + where patientRegister.Id == input.PatientRegisterId + select new + { + chargeRequest, + chargeRequestAsbitem + }).ToList(); var result = list.GroupBy(o => o.chargeRequest).Select(o => new ChargeRequestDto() { Id = o.First().chargeRequest.Id, ChargeRequestNo = o.First().chargeRequest.ChargeRequestNo, ChargeRequestFlag = o.First().chargeRequest.ChargeRequestFlag, HisChargeNo = o.First().chargeRequest.HisChargeNo, - Charges = o.Sum(o=>o.chargeRequestAsbitem.Amount * o.chargeRequestAsbitem.ChargePrice), + Charges = o.Sum(o => o.chargeRequestAsbitem.Amount * o.chargeRequestAsbitem.ChargePrice), CreationTime = o.First().chargeRequest.CreationTime, - - }).OrderByDescending(o=>o.CreationTime).ToList(); + + }).OrderByDescending(o => o.CreationTime).ToList(); return result; } @@ -242,7 +260,7 @@ namespace Shentun.Peis.ChargeRequests AsbitemName = o.asbitem.DisplayName, ChargePrice = o.chargeRequestAsbitem.ChargePrice, Amount = o.chargeRequestAsbitem.Amount - + }).ToList(); return result;