Browse Source

收费

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
d80bcca121
  1. 112
      ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs
  2. 2
      src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs
  3. 14
      src/Shentun.Peis.Application.Contracts/ChargeRequests/ChargeRequestAsbitemDto.cs
  4. 10
      src/Shentun.Peis.Application.Contracts/ChargeRequests/ChargeRequestDto.cs
  5. 11
      src/Shentun.Peis.Application.Contracts/ChargeRequests/ChargeRequestIdInputDto.cs
  6. 1
      src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs
  7. 1
      src/Shentun.Peis.Application.Contracts/RegisterCheckAsbitems/RegisterCheckAsbitemOrAsbitemDto.cs
  8. 110
      src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs
  9. 1
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  10. 1
      src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs
  11. 5
      src/Shentun.Peis.Domain/ChargeRequests/ChargeRequestManager.cs

112
ThirdPlugIns/Shentun.Peis.PlugIns.Gem/ChargeRequestPlugInsGem.cs

@ -130,7 +130,72 @@ namespace Shentun.Peis.PlugIns.Gem
return new ChargeRequestPlugInsOut();
}
public override async Task<ChargeRequestPlugInsOut> CancelRequest(ChargeRequestPlugInsInput input)
{
var chargeRequestForPlugIns = await GeChargeRequestForPlugInsAsync(input.ChargeRequestId);
if (chargeRequestForPlugIns == null)
{
throw new Exception("没有申请单信息");
}
var hisInput = new HisCancelQrCodeInput()
{
Data = new HisCancelQrCodeDataInput()
{
MsgHeader = new HisMsgHeaderInput()
{
Sender = "PEIS",
MsgType = "SVR_ODS_6105",
MsgVersion = "3.1",
},
Item = new HisCancelQrCodeDataItemInput()
{
Yjxh = chargeRequestForPlugIns.HisChargeNo,
ExamRequestNo = chargeRequestForPlugIns.ChargeRequestNo
}
}
};
var result = await CancelQrCode(hisInput);
if (result.MsgHeader.Status != "true")
{
throw new Exception("作废申请单失败" + result.MsgHeader.Detail);
}
return new ChargeRequestPlugInsOut();
}
public override async Task<ChargeRequestPlugInsOut> RefundRequest(ChargeRequestPlugInsInput input)
{
var chargeRequestForPlugIns = await GeChargeRequestForPlugInsAsync(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")
{
throw new Exception("允许退费申请失败" + result.MsgHeader.Detail);
}
return new ChargeRequestPlugInsOut();
}
public async Task<HisPatientQueryOut> PatientQuery(HisPatientQueryInput input)
{
using (var client = CreateClient())
@ -163,6 +228,53 @@ namespace Shentun.Peis.PlugIns.Gem
}
}
public async Task<HisOutBase> CancelQrCode(HisCancelQrCodeInput input)
{
using (var client = CreateClient())
{
input.SeviceBaseArg.Service = "cancelQrCode";
var data = XmlHelper.SerializeToXml(input.Data);
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service,
input.SeviceBaseArg.Urid,
input.SeviceBaseArg.Pwd,
data)).@return;
var result = XmlHelper.DeserializeXml<HisOutBase>(resultStr);
return result;
}
}
public async Task<HisOutBase> PayStatus(HisPayStatusInput input)
{
using (var client = CreateClient())
{
input.SeviceBaseArg.Service = "payStatus";
var data = XmlHelper.SerializeToXml(input.Data);
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service,
input.SeviceBaseArg.Urid,
input.SeviceBaseArg.Pwd,
data)).@return;
var result = XmlHelper.DeserializeXml<HisOutBase>(resultStr);
return result;
}
}
public async Task<HisOutBase> AgreeRefund(HisAgreeRefundInput input)
{
using (var client = CreateClient())
{
input.SeviceBaseArg.Service = "agreeRefund";
var data = XmlHelper.SerializeToXml(input.Data);
var resultStr = (await client.invokeAsync(input.SeviceBaseArg.Service,
input.SeviceBaseArg.Urid,
input.SeviceBaseArg.Pwd,
data)).@return;
var result = XmlHelper.DeserializeXml<HisOutBase>(resultStr);
return result;
}
}
private bstjPortTypeClient CreateClient()
{
return new bstjPortTypeClient(EndpointConfiguration.bstjHttpSoap11Endpoint,

2
src/Shentun.ColumnReferencePlugIns/ChargeRequestPlugInsBase.cs

@ -26,7 +26,7 @@ namespace Shentun.Peis.PlugIns
var result = new ChargeRequestPlugInsOut();
return result;
}
public virtual async Task<ChargeRequestPlugInsOut> Refund(ChargeRequestPlugInsInput input)
public virtual async Task<ChargeRequestPlugInsOut> RefundRequest(ChargeRequestPlugInsInput input)
{
var result = new ChargeRequestPlugInsOut();
return result;

14
src/Shentun.Peis.Application.Contracts/ChargeRequests/ChargeRequestAsbitemDto.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.ChargeRequests
{
public class ChargeRequestAsbitemDto
{
public Guid AsbitemId { get; set; }
public string AsbitemName { get; set; }
public decimal ChargePrice { get; set; }
public int Amount { get; set; }
}
}

10
src/Shentun.Peis.Application.Contracts/ChargeRequests/ChargeRequestDto.cs

@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Text;
namespace Shentun.Peis.ChargeRequests
@ -8,5 +10,13 @@ namespace Shentun.Peis.ChargeRequests
{
public Guid Id { get; set; }
public string ChargeRequestNo { get; set; }
public string HisChargeNo { get; set; }
public char ChargeRequestFlag { get; set; }
public decimal Charges { get; set; }
public DateTime CreationTime { get; set; }
}
}

11
src/Shentun.Peis.Application.Contracts/ChargeRequests/ChargeRequestIdInputDto.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.ChargeRequests
{
public class ChargeRequestIdInputDto
{
public Guid ChargeRequestId { get; set; }
}
}

1
src/Shentun.Peis.Application.Contracts/PatientRegisters/PatientRegisterOrNoDto.cs

@ -17,6 +17,7 @@ namespace Shentun.Peis.PatientRegisters
/// 档案ID
/// </summary>
public Guid PatientId { get; set; }
public string HisPatientId { get; set; }
/// <summary>
/// 体检次数

1
src/Shentun.Peis.Application.Contracts/RegisterCheckAsbitems/RegisterCheckAsbitemOrAsbitemDto.cs

@ -8,6 +8,7 @@ namespace Shentun.Peis.RegisterAsbitems
{
public class RegisterCheckAsbitemOrAsbitemDto : AuditedEntityDtoName
{
public Guid RegisterCheckAsbitemId { get; set; }
/// <summary>
/// 组合项目
/// </summary>

110
src/Shentun.Peis.Application/ChargeRequests/ChargeRequestAppService.cs

@ -4,6 +4,7 @@ using Org.BouncyCastle.Asn1.Ocsp;
using Shentun.Peis.ChargeRequestAsbitems;
using Shentun.Peis.LisRequests;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using System;
using System.Collections.Generic;
using System.Linq;
@ -25,6 +26,7 @@ namespace Shentun.Peis.ChargeRequests
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly ChargeRequestManager _chargeRequestManager;
private readonly ChargeRequestAsbitemManager _chargeRequestAsbitemManager;
private readonly IUnitOfWorkManager _unitOfWorkManager;
@ -34,6 +36,7 @@ namespace Shentun.Peis.ChargeRequests
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
IRepository<Asbitem, Guid> asbitemRepository,
ChargeRequestManager chargeRequestManager,
ChargeRequestAsbitemManager chargeRequestAsbitemManager,
IUnitOfWorkManager unitOfWorkManager
@ -47,6 +50,7 @@ namespace Shentun.Peis.ChargeRequests
_chargeRequestManager = chargeRequestManager;
_chargeRequestAsbitemManager = chargeRequestAsbitemManager;
_unitOfWorkManager = unitOfWorkManager;
_asbitemRepository = asbitemRepository;
}
/// <summary>
///
@ -61,7 +65,7 @@ namespace Shentun.Peis.ChargeRequests
throw new UserFriendlyException("input参数不能为空");
}
var patientRegister = _patientRegisterRepository.GetAsync(input.PatientRegisterId);
//var patientRegister = await _patientRegisterRepository.GetAsync(input.PatientRegisterId);
var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
@ -103,12 +107,114 @@ namespace Shentun.Peis.ChargeRequests
await _unitOfWorkManager.Current.CompleteAsync();
//await UnitOfWorkManager.Current.SaveChangesAsync();
//await UnitOfWorkManager.Current.CompleteAsync();
await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id);
await _chargeRequestManager.SendThirChargeRequestAsync(chargeRequest.Id,"SendRequest");
ChargeRequestDto result = new ChargeRequestDto();
result.Id = chargeRequest.Id;
result.ChargeRequestNo = chargeRequest.ChargeRequestNo;
return result;
}
[HttpPost("api/app/ChargeRequest/CancelChargeRequest")]
public async Task<ChargeRequestDto> CancelChargeRequestAsync(ChargeRequestIdInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("input参数不能为空");
}
await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId,"CancelRequest");
ChargeRequestDto result = new ChargeRequestDto();
return result;
}
[HttpPost("api/app/ChargeRequest/RefundChargeRequest")]
public async Task<ChargeRequestDto> ReundChargeRequestAsync(ChargeRequestIdInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("input参数不能为空");
}
await _chargeRequestManager.SendThirChargeRequestAsync(input.ChargeRequestId, "CancelRequest");
ChargeRequestDto result = new ChargeRequestDto();
return result;
}
/// <summary>
///
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
[HttpPost("api/app/ChargeRequest/GetChargeRequestsByPatientRegisterId")]
public async Task<List<ChargeRequestDto>> GetChargeRequestsByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("input参数不能为空");
}
//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();
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),
CreationTime = o.First().chargeRequest.CreationTime,
}).OrderByDescending(o=>o.CreationTime).ToList();
return result;
}
[HttpPost("api/app/ChargeRequest/GetChargeRequestsByPatientRegisterId")]
public async Task<List<ChargeRequestAsbitemDto>> GetChargeRequestAsbitemsByPatientRegisterIdAsync(ChargeRequestIdInputDto input)
{
if (input == null)
{
throw new UserFriendlyException("input参数不能为空");
}
//var patientRegister = _patientRegisterRepository.GetAsync(input.PatientRegisterId);
var list = (from chargeRequest in await _chargeRequestRepository.GetQueryableAsync()
join chargeRequestAsbitem in await _chargeRequestAsbitemRepository.GetQueryableAsync()
on chargeRequest.Id equals chargeRequestAsbitem.ChargeRequestId
join asbitem in await _asbitemRepository.GetQueryableAsync()
on chargeRequestAsbitem.AsbitemId equals asbitem.Id
where chargeRequest.Id == input.ChargeRequestId
select new
{
chargeRequest,
chargeRequestAsbitem,
asbitem
}).ToList();
var result = list.Select(o => new ChargeRequestAsbitemDto()
{
AsbitemId = o.chargeRequest.Id,
AsbitemName = o.asbitem.DisplayName,
ChargePrice = o.chargeRequestAsbitem.ChargePrice,
Amount = o.chargeRequestAsbitem.Amount
}).ToList();
return result;
}
}
}

1
src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs

@ -225,6 +225,7 @@ namespace Shentun.Peis.PatientRegisters
entdto = new PatientRegisterOrNoDto
{
HisPatientId = ent.HisPatientId,
Age = ent.Age,
AuditDate = DataHelper.ConversionDateToString(ent.AuditDate),
Id = ent.Id,

1
src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs

@ -350,6 +350,7 @@ namespace Shentun.Peis.RegisterAsbitems
var entdto = entlist.Select(s => new RegisterCheckAsbitemOrAsbitemDto
{
RegisterCheckAsbitemId = s.Id,
Discount = s.StandardPrice == 0 ? 100 : Math.Round(Convert.ToDecimal(s.ChargePrice * 100 / s.StandardPrice), 2),
IsLock = s.RegisterCheck.IsLock,
CreationTime = s.CreationTime,

5
src/Shentun.Peis.Domain/ChargeRequests/ChargeRequestManager.cs

@ -58,7 +58,7 @@ namespace Shentun.Peis.ChargeRequests
};
}
public async Task SendThirChargeRequestAsync(Guid id)
public async Task SendThirChargeRequestAsync(Guid id,string funName)
{
var thirdInterfaces = (await _thirdInterfaceRepository.GetListAsync(o => o.ThirdInterfaceType == ThirdInterfaceTypeFlag.ChargeRequest))
.OrderBy(o => o.DisplayOrder).ToList();
@ -76,10 +76,11 @@ namespace Shentun.Peis.ChargeRequests
var assemblyName = config.GetSection("Interface").GetSection("AssemblyName").Value;
var className = config.GetSection("Interface").GetSection("ClassName").Value;
object[] objects = new object[] { chargeRequestPlugInsInput };
var chargeRequestPluginsOut = await InvokeAsync(assemblyName, className, parmValue, "SendRequest", objects);
var chargeRequestPluginsOut = await InvokeAsync(assemblyName, className, parmValue, funName, objects);
}
}
private async Task<ChargeRequestPlugInsOut> InvokeAsync(string assemblyName, string className, string classConstructorArg, string methodName, object[] args = null)
{
Assembly assembly = Assembly.Load(assemblyName);

Loading…
Cancel
Save