From f7bb78e68ad3189be02b32e53496b46fd74f7408 Mon Sep 17 00:00:00 2001 From: "DESKTOP-G961P6V\\Zhh" <839860190@qq.com> Date: Mon, 6 May 2024 11:32:19 +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 | 87 ++++++++++--------- .../ChargeRequestPlugInsBase.cs | 3 + .../LisResultImportPlugInsBase.cs | 3 +- .../LisResultImportPlugInsDbBase.cs | 9 +- .../ThirdPlugInsBase.cs | 5 ++ .../ChargeRequests/ChargeRequestAppService.cs | 24 +++-- .../RegisterCheckAsbitemAppService.cs | 3 +- .../Enums/ThirdInterfaceTypeFlag.cs | 2 +- .../appsettings.json | 7 +- 9 files changed, 85 insertions(+), 58 deletions(-) diff --git a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs index a054b56..20ff888 100644 --- a/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs +++ b/ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs @@ -187,53 +187,58 @@ namespace Shentun.Peis.PlugIns.Gem foreach (var chargeRequest in chargeRequests) { - var hisInput = new HisPayStatusInput() + SyncChargeRequestFlagFromInterfaceAsync(chargeRequest.ChargeRequestId); + } + return base.DoWork(); + } + + public override async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId) + { + var chargeRequest = await GetChargeRequestAsync(chargeRequestId); + var hisInput = new HisPayStatusInput() + { + Data = new HisPayStatusDataInput() { - Data = new HisPayStatusDataInput() + MsgHeader = new HisMsgHeaderInput() { - MsgHeader = new HisMsgHeaderInput() - { - Sender = "PEIS", - MsgType = "SVR_ODS_6105", - MsgVersion = "3.1", - }, - Item = new HisPayStatusDataItemInput() - { - Yjxh = chargeRequest.HisChargeNo, - ExamRequestNo = chargeRequest.ChargeRequestNo, - } + 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); } - //1:已支付,2.已作废3.已退费, 其他:未支付 - char charRequstFlag; - if (result.MsgHeader.ErrCode == "1") - { - charRequstFlag = ChargeRequestFlag.AlreadyCharge; - SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); + }; + var result = PayStatus(hisInput).Result; + if (result.MsgHeader.Status != "true") + { + throw new Exception("查询支付状态失败" + result.MsgHeader.Detail); + } + //1:已支付,2.已作废3.已退费, 其他:未支付 + char charRequstFlag; + if (result.MsgHeader.ErrCode == "1") + { + charRequstFlag = ChargeRequestFlag.AlreadyCharge; + SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); - } - else if (result.MsgHeader.ErrCode == "2") - { - charRequstFlag = ChargeRequestFlag.AlreadyCancelCharge; - SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); - } - else if (result.MsgHeader.ErrCode == "3") - { - charRequstFlag = ChargeRequestFlag.AlreadyRefund; - SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); - } - else - { - throw new Exception("查询支付状态不支持的收费标志" + result.MsgHeader.ErrCode); - } - } - return base.DoWork(); + else if (result.MsgHeader.ErrCode == "2") + { + charRequstFlag = ChargeRequestFlag.AlreadyCancelCharge; + SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); + } + else if (result.MsgHeader.ErrCode == "3") + { + charRequstFlag = ChargeRequestFlag.AlreadyRefund; + SetAppChargeRequestFlagAsync(chargeRequest.ChargeRequestId, charRequstFlag); + } + else + { + //throw new Exception("查询支付状态不支持的收费标志" + result.MsgHeader.ErrCode); + } } public override async Task RefundRequestAsync(ChargeRequestPlugInsInput input) { diff --git a/src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs index 27d056f..7c65c0c 100644 --- a/src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs @@ -182,7 +182,10 @@ where patient.id = patient_register.patient_id and } } + public virtual async Task SyncChargeRequestFlagFromInterfaceAsync(Guid chargeRequestId) + { + } } public class ChargeRequestPlugInsInput diff --git a/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs index 7527830..6c4984f 100644 --- a/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsBase.cs @@ -16,7 +16,8 @@ namespace Shentun.Peis.PlugIns protected string AppLisPassword; public LisResultImportPlugInsBase(string parmValue) : base(parmValue) { - var itemColumnReferenceIdStr = InterfaceConfig.GetSection("Interface").GetSection("ItemColumnReferenceId").Value; + var itemColumnReferenceIdStr = InterfaceConfig.GetSection("Interface") + .GetSection("ItemColumnReferenceId").Value; if (!string.IsNullOrWhiteSpace(itemColumnReferenceIdStr)) { ItemColumnReferenceId = new Guid(itemColumnReferenceIdStr); diff --git a/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsDbBase.cs b/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsDbBase.cs index 58418b6..43d553f 100644 --- a/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsDbBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/LisResultImportPlugInsDbBase.cs @@ -28,6 +28,10 @@ namespace Shentun.Peis.PlugIns public override async Task ImportResultAsync(LisResultImportPlugInsInput input) { + if (ItemColumnReferenceId == null || ItemColumnReferenceId == Guid.Empty) + { + throw new Exception("没有设置项目编码对照"); + } var result = new LisResultImportPlugInsOut(); var lisRequests = await GetLisRequestForResultImportPlugInssAsync(input.PatientRegisterId); using (DbConnection conn = CreateInterfaceDbConnect()) @@ -53,13 +57,10 @@ namespace Shentun.Peis.PlugIns continue; } if (!Guid.TryParse(columnReferenceCode.CodeValue, out var appItemId)) - { - continue; - } - else { throw new Exception($"{lisResult.ItemName}对照的编码无效"); } + var createImportLisResultDto = new CreateImportLisResultDto() { LisRequestNo = lisResult.LisRequestNo, diff --git a/src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs b/src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs index 513a4dd..3547bc5 100644 --- a/src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs +++ b/src/Shentun.ColumnReferencePlugIns/ThirdPlugInsBase.cs @@ -43,6 +43,11 @@ namespace Shentun.Peis.PlugIns public async Task> GetColumnReferenceCodeValuesAsync(Guid columnReferenceId, string interfaceCodeValue) { + if(string.IsNullOrWhiteSpace(interfaceCodeValue)) + { + throw new Exception("第三方编码不能为空"); + } + interfaceCodeValue = interfaceCodeValue.Trim(); using (DbConnection conn = new NpgsqlConnection(AppConnctionStr)) { string sql; diff --git a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs index 681b898..8e68f64 100644 --- a/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs +++ b/src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs @@ -91,9 +91,11 @@ namespace Shentun.Peis.ChargeRequests if(item.registerCheckAsbitem.ChargeRequestId != null) { var haveChargeRequest = await _chargeRequestRepository.GetAsync((Guid)item.registerCheckAsbitem.ChargeRequestId); - if(haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest) + if(haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.ChargeRequest || + haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.CancelChargeRequest || + haveChargeRequest.ChargeRequestFlag == ChargeRequestFlag.RefundRequest) { - throw new UserFriendlyException($"{item.asbitem.DisplayName}已经申请,必须先撤销申请"); + throw new UserFriendlyException($"{item.asbitem.DisplayName}已经处于收费、作废、退费申请状态"); } } item.registerCheckAsbitem.ChargeRequestId = chargeRequest.Id; @@ -139,7 +141,11 @@ namespace Shentun.Peis.ChargeRequests { throw new UserFriendlyException("input参数不能为空"); } - + var chargeRequest = await _chargeRequestRepository.GetAsync(input.ChargeRequestId); + if (chargeRequest.ChargeRequestFlag != ChargeRequestFlag.ChargeRequest) + { + throw new UserFriendlyException("状态不是收费申请,不允许作废申请"); + } await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "CancelChargeRequestAsync"); ChargeRequestDto result = new ChargeRequestDto(); @@ -160,8 +166,12 @@ namespace Shentun.Peis.ChargeRequests throw new UserFriendlyException("input参数不能为空"); } var chargeRequest = await _chargeRequestRepository.GetAsync(input.ChargeRequestId); - //if(chargeRequest.ChargeRequestFlag == ChargeRequestFlag.) - await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "RefundRequestAsync"); + if (chargeRequest.ChargeRequestFlag != ChargeRequestFlag.ChargeRequest && + chargeRequest.ChargeRequestFlag != ChargeRequestFlag.CancelChargeRequest) + { + throw new UserFriendlyException("状态不是收费申请和作废申请,不允许退费申请"); + } + await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "RefundRequestAsync"); ChargeRequestDto result = new ChargeRequestDto(); @@ -206,8 +216,8 @@ namespace Shentun.Peis.ChargeRequests return result; } - [HttpPost("api/app/ChargeRequest/GetChargeRequestAsbitemsByChargeQuestId")] - public async Task> GetChargeRequestAsbitemsByChargeQuestIdAsync(ChargeRequestIdInputDto input) + [HttpPost("api/app/ChargeRequest/GetChargeRequestAsbitemsByChargeRequestId")] + public async Task> GetChargeRequestAsbitemsByChargeRequestIdAsync(ChargeRequestIdInputDto input) { if (input == null) { diff --git a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs index d347a60..689240d 100644 --- a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs +++ b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs @@ -345,7 +345,8 @@ namespace Shentun.Peis.RegisterAsbitems .Include(x => x.Asbitem.ItemType) .Include(x => x.RegisterCheck) .Where(m => m.PatientRegisterId == input.PatientRegisterId && - m.IsCharge == 'N' && m.PayTypeFlag == PayTypeFlag.PersonPay).ToList().OrderByDescending(o => o.GroupPackageId).ThenBy(o => o.Asbitem.DisplayOrder); + m.IsCharge == 'N' && m.PayTypeFlag == PayTypeFlag.PersonPay) + .ToList().OrderByDescending(o => o.GroupPackageId).ThenBy(o => o.Asbitem.DisplayOrder); var entdto = entlist.Select(s => new RegisterCheckAsbitemOrAsbitemDto diff --git a/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs b/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs index 4a45492..fd7d4c1 100644 --- a/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs +++ b/src/Shentun.Peis.Domain.Shared/Enums/ThirdInterfaceTypeFlag.cs @@ -16,6 +16,6 @@ namespace Shentun.Peis.Enums public const string ChargeRequest = "02"; [Description("LIS结果导入")] - public const string ImportLisResult = "02"; + public const string ImportLisResult = "03"; } } diff --git a/test/Shentun.Peis.ColumnReference.Tests/appsettings.json b/test/Shentun.Peis.ColumnReference.Tests/appsettings.json index eedb939..9c1b0b3 100644 --- a/test/Shentun.Peis.ColumnReference.Tests/appsettings.json +++ b/test/Shentun.Peis.ColumnReference.Tests/appsettings.json @@ -16,11 +16,12 @@ //"DbType": "SqlServer", "DbType": "Oracle", //"ConnectionStrings": "Server=.;Database=mypeis_wyy;User ID=sa;Password=shentun;Application Name=mypeis;Encrypt=False;TrustServerCertificate=True", - "ConnectionStrings": "User ID=TJ_LIS;Password=TJ_LIS;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.12.34)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = HIS56)))", + "ConnectionStrings": "User ID=TJ_LIS;Password=TJ_LIS;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.13.13)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = HISDB)))", //"Sql": "select ZHID as Code ,ZHMC as DisplayName from PORTAL56_LIS.vi_tj_testitemgroup", - "Sql": "SELECT TMH AS LisRequestNo,TJBH AS PatientId,TESID as ItemId,XMMC as ItemName,XMJG as Result,UNIT as Unit,CKFW AS ReferenceRangeValue FROM PORTAL56_LIS.VI_TJ_RESULT", - "ColumnNames": "Code=编码,DisplayName=名称" + "Sql": "SELECT TMH AS LisRequestNo,TJBH AS PatientId,TESTID as ItemId,XMMC as ItemName,XMJG as Result ,UNIT as Unit ,CKFW AS FROM PORTAL56_LIS.VI_TJ_RESULT", + "ColumnNames": "Code=编码,DisplayName=名称", + "ItemColumnReferenceId": "3a125a29-ae4d-1ba8-db69-cffd0c629fc0" }, "ConnectionStrings": { //"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;",