Browse Source

收费

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
635c54dff0
  1. 117
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
  2. 19
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/test/Shentun.Peis.PlugIns.Gem.Test/ChargeRequestPlugInsGemTest.cs
  3. 2
      src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs
  4. 15
      src/Shentun.Peis.Domain/RegisterCheckItems/RegisterCheckItemManager.cs
  5. 6
      test/Shentun.Peis.Application.Tests/ChargeRequestAppServiceTest.cs

117
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<ChargeRequestPlugInsOut> 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<ChargeRequestPlugInsOut> RefundRequestAsync(ChargeRequestPlugInsInput input)
private async Task<string> 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<HisPatientQueryOut> PatientQuery(HisPatientQueryInput input)
{

19
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;
}
}
}

2
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;

15
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);

6
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<CreateChargeRequestAsbitemDto>()
{
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")}
}
};

Loading…
Cancel
Save