From 635c54dff0253d8c6f981695be25f4564439b631 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 6 May 2024 18:26:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B6=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChargeRequestPlugInsGem.cs | 117 +++++++++++------- .../ChargeRequestPlugInsGemTest.cs | 19 +++ .../ChargeRequests/ChargeRequestAppService.cs | 2 +- .../RegisterCheckItemManager.cs | 15 +-- .../ChargeRequestAppServiceTest.cs | 6 +- 5 files changed, 105 insertions(+), 54 deletions(-) create mode 100644 ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ChargeRequestPlugInsGemTest.cs diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs index dc23c65..0327ded 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs @@ -160,7 +160,25 @@ namespace Shentun.Peis.PlugIns.Gem var result = await CancelQrCode(hisInput); if (result.MsgHeader.Status != "true") { - throw new Exception("作废申请单失败" + result.MsgHeader.Detail); + //-1 申请单未找到 + if(!(result.MsgHeader.Detail.Contains("未查到开单信息"))) + { + + var payStatus = await GetPayStatus(chargeRequestForPlugIns.ChargeRequestNo, chargeRequestForPlugIns.HisChargeNo); + if (payStatus == "1") + { + throw new Exception("his已缴费"); + } + else if (payStatus == "2") + { + throw new Exception("his已作废"); + } + else if (payStatus == "3") + { + throw new Exception("his已退费"); + } + } + } await SetAppChargeRequestFlagAsync(input.ChargeRequestId, ChargeRequestFlag.AlreadyCancelCharge); return new ChargeRequestPlugInsOut(); @@ -171,7 +189,45 @@ namespace Shentun.Peis.PlugIns.Gem throw new Exception("格尔木DoWorkAsync。。。"); //return base.DoWorkAsync(); } + public override async Task RefundRequestAsync(ChargeRequestPlugInsInput input) + { + var chargeRequestForPlugIns = await GetChargeRequestAsync(input.ChargeRequestId); + if (chargeRequestForPlugIns == null) + { + throw new Exception("没有申请单信息"); + } + + var hisInput = new HisAgreeRefundInput() + { + Data = new HisAgreeRefundDataInput() + { + MsgHeader = new HisMsgHeaderInput() + { + Sender = "PEIS", + MsgType = "SVR_ODS_6105", + MsgVersion = "3.1", + }, + Item = new HisAgreeRefundDataItemInput() + { + Yjxh = chargeRequestForPlugIns.HisChargeNo, + ExamRequestNo = chargeRequestForPlugIns.ChargeRequestNo + } + } + }; + var result = await AgreeRefund(hisInput); + if (result.MsgHeader.Status != "true") + { + var payStatus = await GetPayStatus(chargeRequestForPlugIns.ChargeRequestNo, chargeRequestForPlugIns.HisChargeNo); + if (payStatus != "3") + { + throw new Exception("允许退费申请失败" + result.MsgHeader.Detail); + } + + } + await SetAppChargeRequestFlagAsync(input.ChargeRequestId, ChargeRequestFlag.RefundRequest); + return new ChargeRequestPlugInsOut(); + } public override Task DoWork() { var queryDaysStr = InterfaceConfig.GetSection("Scheduler").GetSection("QueryDays").Value; @@ -203,42 +259,23 @@ namespace Shentun.Peis.PlugIns.Gem public override async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId) { var chargeRequest = await GetChargeRequestAsync(chargeRequestId); - var hisInput = new HisPayStatusInput() - { - Data = new HisPayStatusDataInput() - { - MsgHeader = new HisMsgHeaderInput() - { - Sender = "PEIS", - MsgType = "SVR_ODS_6105", - MsgVersion = "3.1", - }, - Item = new HisPayStatusDataItemInput() - { - Yjxh = chargeRequest.HisChargeNo, - ExamRequestNo = chargeRequest.ChargeRequestNo, - } - } - }; - var result = PayStatus(hisInput).Result; - if (result.MsgHeader.Status != "true") - { - throw new Exception("查询支付状态失败" + result.MsgHeader.Detail); - } + + var payStatus = await GetPayStatus(chargeRequest.ChargeRequestNo, chargeRequest.HisChargeNo); + //1:已支付,2.已作废3.已退费, 其他:未支付 char charRequstFlag; - if (result.MsgHeader.ErrCode == "1") + if (payStatus == "1") { charRequstFlag = ChargeRequestFlag.AlreadyCharge; SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); } - else if (result.MsgHeader.ErrCode == "2") + else if (payStatus == "2") { charRequstFlag = ChargeRequestFlag.AlreadyCancelCharge; SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); } - else if (result.MsgHeader.ErrCode == "3") + else if (payStatus == "3") { charRequstFlag = ChargeRequestFlag.AlreadyRefund; SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); @@ -248,17 +285,12 @@ namespace Shentun.Peis.PlugIns.Gem //throw new Exception("查询支付状态不支持的收费标志" + result.MsgHeader.ErrCode); } } - public override async Task RefundRequestAsync(ChargeRequestPlugInsInput input) + + private async Task GetPayStatus(string chargeRequestNo, string hisChargeNo) { - var chargeRequestForPlugIns = await GetChargeRequestAsync(input.ChargeRequestId); - if (chargeRequestForPlugIns == null) - { - throw new Exception("没有申请单信息"); - } - - var hisInput = new HisAgreeRefundInput() + var hisInput = new HisPayStatusInput() { - Data = new HisAgreeRefundDataInput() + Data = new HisPayStatusDataInput() { MsgHeader = new HisMsgHeaderInput() { @@ -266,21 +298,20 @@ namespace Shentun.Peis.PlugIns.Gem MsgType = "SVR_ODS_6105", MsgVersion = "3.1", }, - Item = new HisAgreeRefundDataItemInput() + Item = new HisPayStatusDataItemInput() { - Yjxh = chargeRequestForPlugIns.HisChargeNo, - ExamRequestNo = chargeRequestForPlugIns.ChargeRequestNo + Yjxh = hisChargeNo, + ExamRequestNo = chargeRequestNo, } } }; - - var result = await AgreeRefund(hisInput); + var result = await PayStatus(hisInput); if (result.MsgHeader.Status != "true") { - throw new Exception("允许退费申请失败" + result.MsgHeader.Detail); + throw new Exception("查询支付状态失败" + result.MsgHeader.Detail); } - await SetAppChargeRequestFlagAsync(input.ChargeRequestId, ChargeRequestFlag.RefundRequest); - return new ChargeRequestPlugInsOut(); + //1:已支付,2.已作废3.已退费, 其他:未支付 + return result.MsgHeader.ErrCode; } public async Task PatientQuery(HisPatientQueryInput input) { diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ChargeRequestPlugInsGemTest.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ChargeRequestPlugInsGemTest.cs new file mode 100644 index 0000000..908eeeb --- /dev/null +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ChargeRequestPlugInsGemTest.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xunit.Abstractions; + +namespace Shentun.Peis.PlugIns.Gem.Test +{ + public class ChargeRequestPlugInsGemTest + { + private readonly ITestOutputHelper _output; + public ChargeRequestPlugInsGemTest(ITestOutputHelper testOutputHelper) + { + _output = testOutputHelper; + + } + } +} diff --git a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs index 8e68f64..be0bc23 100644 --- a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs +++ b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs @@ -121,7 +121,7 @@ namespace Shentun.Peis.ChargeRequests await _unitOfWorkManager.Current.CompleteAsync(); //await UnitOfWorkManager.Current.SaveChangesAsync(); //await UnitOfWorkManager.Current.CompleteAsync(); - await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id,"SendRequestAsync"); + await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id, "SendChargeRequestAsync"); ChargeRequestDto result = new ChargeRequestDto(); result.Id = chargeRequest.Id; diff --git a/src/Shentun.Peis.Domain/RegisterCheckItems/RegisterCheckItemManager.cs b/src/Shentun.Peis.Domain/RegisterCheckItems/RegisterCheckItemManager.cs index 1f1143b..36eb9ef 100644 --- a/src/Shentun.Peis.Domain/RegisterCheckItems/RegisterCheckItemManager.cs +++ b/src/Shentun.Peis.Domain/RegisterCheckItems/RegisterCheckItemManager.cs @@ -1,10 +1,13 @@ using Microsoft.Extensions.Configuration.UserSecrets; +using Microsoft.Extensions.FileSystemGlobbing.Internal; using Shentun.Peis.Enums; using Shentun.Peis.Models; using System; using System.Collections.Generic; using System.Linq; +using System.Security.Policy; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Domain.Repositories; @@ -157,13 +160,11 @@ namespace Shentun.Peis.RegisterCheckItems decimal lowReferenceRangeValue; decimal hegihtReferenceRangeValue; referenceRangeValue = referenceRangeValue.Replace("≧", ">=") - .Replace("≥", ">=").Replace("≤", "<=").Replace("≦", "<="); - var pos = referenceRangeValue.IndexOf("--");//兼容老系统 - if (pos <= 0) - { - pos = referenceRangeValue.IndexOf("-"); - } - if (pos > 0) + .Replace("≥", ">=").Replace("≤", "<=").Replace("≦", "<=") + .Replace("--","-").Replace("〜", "-").Replace("~","-"); + var pos = referenceRangeValue.IndexOf("-"); + + if (pos > 0 && Regex.Matches(referenceRangeValue, "-").Count == 1) { //参考范围形式:10-30 lowReferenceRangeValueStr = referenceRangeValue.Substring(0, pos); diff --git a/test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs b/test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs index 189e878..20c1cc9 100644 --- a/test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs +++ b/test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs @@ -38,11 +38,11 @@ namespace Shentun.Peis var entity = new CreateChargeRequestDto() { - PatientRegisterId = new Guid("3a123c55-06de-4988-691c-448b5af468ff"), + PatientRegisterId = new Guid("3a125ed8-991d-4304-5ca9-36edd0485450"), RegisterCheckAsbitems = new List() { - new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a123c55-0792-17bd-6d63-d7b3238aca18")}, - new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a123c55-0791-2d82-97be-1bf9a6152513")} + new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a125ed8-9a40-5c42-ddff-24891bcdb91d")}, + new CreateChargeRequestAsbitemDto() {RegisterCheckAsbitemId = new Guid("3a125ed8-9a40-e4af-c333-d7f8116e522b")} } };