Browse Source

收费申请

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
50cae11e28
  1. 10
      src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugIns.cs
  2. 59
      src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs
  3. 14
      src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsDbBase.cs
  4. 26
      src/Shentun.Peis.Application.Contracts/LisRequests/LisRequestDto.cs
  5. 104
      src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs
  6. 4
      src/Shentun.Peis.Domain/Asbitems/Asbitem.cs
  7. 67
      src/Shentun.Peis.Domain/ChargeRequestAsbitems/ChargeRequestAsbitem.cs
  8. 75
      src/Shentun.Peis.Domain/ChargeRequests/ChargeRequest.cs
  9. 45
      src/Shentun.Peis.Domain/ChargeRequests/ChargeRequestManager.cs
  10. 43
      src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeRequestAsbitems/ChargeRequestAsbitemDbMapping.cs
  11. 33
      src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeRequests/ChargeRequestDbMapping.cs
  12. 5
      src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs
  13. 54
      test/Shentun.Peis.Application.Tests/LisRequestAppServiceTest.cs
  14. 4
      test/Shentun.Peis.ColumnReference.Tests/ColumnReferencePlugInsAsbitemBaseTest.cs
  15. 6
      test/Shentun.Peis.ColumnReference.Tests/appsettings.json
  16. 4
      test/Shentun.Peis.EntityFrameworkCore.Tests/EntityFrameworkCore/PeisEntityFrameworkCoreTestModule.cs

10
src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugIns.cs

@ -8,12 +8,12 @@ namespace Shentun.Peis.ColumnReferencePlugIns
{
interface IColumnReferencePlugIns
{
public List<string> GetColumns();
public List<string> GetColumnNames();
public string GetFilterColumnName();
public List<string> GetInterfaceColumns();
public Task<List<ColumnReferenceCodeValue>> GetCodeValues();
public Task<List<ColumnReferenceFilterCodeValue>> GetFilterCodeValues();
public Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValues();
public List<string> GetInterfaceColumnNames();
public Task<List<ColumnReferenceCodeValue>> GetCodeValuesAsync();
public Task<List<ColumnReferenceFilterCodeValue>> GetFilterCodeValuesAsync();
public Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValuesAsync();
}
public class ColumnReferenceCodeValue

59
src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsBase.cs

@ -13,14 +13,16 @@ using Shentun.Utilities;
namespace Shentun.Peis.ColumnReferencePlugIns
{
public class ColumnReferencePlugInsBase:IColumnReferencePlugIns
public class ColumnReferencePlugInsBase : IColumnReferencePlugIns
{
protected IConfiguration AppConfig;
protected IConfiguration AppConfig;
protected IConfiguration InterfaceConfig;
protected string? ConnctionStr;
protected string AppSql;
public ColumnReferencePlugInsBase(string configParm)
private string[] _columnNames;
private string[] _interfaceColumnNames;
public ColumnReferencePlugInsBase(string configParm)
{
AppConfig = new ConfigurationBuilder()
.SetBasePath(DirectoryHelper.GetAppDirectory()) // 设置基础路径为当前目录
@ -33,26 +35,43 @@ namespace Shentun.Peis.ColumnReferencePlugIns
.AddJsonStream(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(configParm)));
InterfaceConfig = configurationBuilder.Build();
AppSql = InterfaceConfig.GetSection("App").GetSection("Sql").Value;
var columnNames = InterfaceConfig.GetSection("App").GetSection("ColumnNames").Value;
columnNames = columnNames.Replace(",", ",");
_columnNames = columnNames.Split(',');
columnNames = InterfaceConfig.GetSection("Interface").GetSection("ColumnNames").Value;
columnNames = columnNames.Replace(",", ",");
_interfaceColumnNames = columnNames.Split(',');
}
public virtual List<string> GetColumns()
public virtual List<string> GetColumnNames()
{
return new List<string>
if (_columnNames == null || _columnNames.Count() == 0)
{
"编码",
"名称",
};
return new List<string>()
{
"编码",
"名称",
};
}
return _columnNames.ToList();
}
public virtual List<string> GetInterfaceColumns()
public virtual List<string> GetInterfaceColumnNames()
{
return new List<string>
if (_interfaceColumnNames == null || _interfaceColumnNames.Count() == 0)
{
"编码",
"名称",
};
return new List<string>()
{
"编码",
"名称",
};
}
return _interfaceColumnNames.ToList();
}
public virtual async Task<List<ColumnReferenceCodeValue>> GetCodeValues()
public virtual async Task<List<ColumnReferenceCodeValue>> GetCodeValuesAsync()
{
using (DbConnection conn = new NpgsqlConnection(ConnctionStr))
{
@ -61,15 +80,15 @@ namespace Shentun.Peis.ColumnReferencePlugIns
}
}
public virtual async Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValues()
public virtual async Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValuesAsync()
{
return new List<ColumnReferenceCodeValue>()
{
};
}
public virtual async Task<List<ColumnReferenceFilterCodeValue>> GetFilterCodeValues()
public virtual async Task<List<ColumnReferenceFilterCodeValue>> GetFilterCodeValuesAsync()
{
throw new NotImplementedException();
}
@ -79,6 +98,6 @@ namespace Shentun.Peis.ColumnReferencePlugIns
return null;
}
}
}

14
src/Shentun.ColumnReferencePlugIns/ColumnReferencePlugInsDbBase.cs

@ -2,6 +2,7 @@
using Microsoft.Data.SqlClient;
using Npgsql;
using Oracle.ManagedDataAccess.Client;
using Shentun.Utilities;
using System;
using System.Collections.Generic;
using System.Data.Common;
@ -29,15 +30,16 @@ namespace Shentun.Peis.ColumnReferencePlugIns
{
throw new ArgumentException("数据连接设置中的DbType不能为空");
}
if (InterfaceDbType == "SqlServer")
InterfaceDbType = InterfaceDbType.ToLower();
if (InterfaceDbType == "sqlserver")
{
conn = new SqlConnection(InterfaceConnctionStr);
}
else if (InterfaceDbType == "PostGres")
else if (InterfaceDbType == "postgres")
{
conn = new NpgsqlConnection(InterfaceConnctionStr);
}
else if (InterfaceDbType == "Oracle")
else if (InterfaceDbType == "oracle")
{
conn = new OracleConnection(InterfaceConnctionStr);
}
@ -48,11 +50,15 @@ namespace Shentun.Peis.ColumnReferencePlugIns
return conn;
}
public override async Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValues()
public override async Task<List<ColumnReferenceCodeValue>> GetInterfaceCodeValuesAsync()
{
using (DbConnection conn = CreateInterfaceDbConnect())
{
var list = (await conn.QueryAsync<ColumnReferenceCodeValue>(InterfaceSql)).ToList();
foreach (var item in list)
{
item.DisplayName = LanguageConverter.GetPYSimpleCode(item.DisplayName);
}
return list;
}
}

26
src/Shentun.Peis.Application.Contracts/LisRequests/LisRequestDto.cs

@ -15,6 +15,19 @@ namespace Shentun.Peis.LisRequests
/// </summary>
public string PatientName { get; set; }
/// <summary>
/// 检验申请单号
/// </summary>
public string LisRequestNo { get; set; }
/// <summary>
/// 档案号
/// </summary>
public string PatientNo { get; set; }
/// <summary>
/// 登记人员条码号
/// </summary>
public string PatientRegisterNo { get; set; }
/// <summary>
/// 性别
/// </summary>
@ -43,18 +56,7 @@ namespace Shentun.Peis.LisRequests
/// </summary>
public string? SampleContainerRemark { get; set; }
/// <summary>
/// 检验申请单号
/// </summary>
public string LisRequestNo { get; set; }
/// <summary>
/// 档案号
/// </summary>
public string PatientNo { get; set; }
/// <summary>
/// 登记人员条码号
/// </summary>
public string PatientRegisterNo { get; set; }
/// <summary>
/// 组合项目简称(多个“,”号隔开)

104
src/Shentun.Peis.Application/LisRequests/LisRequestAppService.cs

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Authorization;
using Azure;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Shentun.Peis.CustomerOrgs;
@ -10,6 +11,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
@ -27,38 +29,53 @@ namespace Shentun.Peis.LisRequests
public class LisRequestAppService : ApplicationService
{
private readonly IRepository<IdentityUser, Guid> _userRepository;
private readonly IRepository<Patient, Guid> _patientRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerAsbitemRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
private readonly IRepository<RegisterCheckAsbitem, Guid> _registerCheckAsbitemRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly ILisRequestReportRepository _lisRequestReportRepository;
private readonly LisRequestManager _lisRequestManager;
private readonly CacheService _cacheService;
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
private readonly CustomerOrgManager _customerOrgManager;
private readonly IRepository<SampleContainer, Guid> _sampleContainerRepository;
private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
public LisRequestAppService(
IRepository<IdentityUser, Guid> userRepository,
IRepository<PatientRegister, Guid> patientRegisterRepository,
IRepository<RegisterCheckAsbitem, Guid> registerAsbitemRepository,
IRepository<RegisterCheckAsbitem, Guid> registerCheckAsbitemRepository,
ILisRequestReportRepository lisRequestReportRepository,
IRepository<CustomerOrg, Guid> customerOrgRepository,
LisRequestManager lisRequestManager,
CacheService cacheService,
CustomerOrgManager customerOrgManager
CustomerOrgManager customerOrgManager,
IRepository<Patient, Guid> patientRepository,
IRepository<RegisterCheck, Guid> registerCheckRepository,
IRepository<Asbitem, Guid> asbitemRepository,
IRepository<SampleContainer, Guid> sampleContainerRepository,
IRepository<SampleType, Guid> sampleTypeRepository
)
{
this._userRepository = userRepository;
this._patientRegisterRepository = patientRegisterRepository;
this._registerAsbitemRepository = registerAsbitemRepository;
this._registerCheckAsbitemRepository = registerCheckAsbitemRepository;
this._lisRequestReportRepository = lisRequestReportRepository;
this._lisRequestManager = lisRequestManager;
_cacheService = cacheService;
_customerOrgRepository = customerOrgRepository;
_customerOrgManager = customerOrgManager;
_patientRepository = patientRepository;
_registerCheckRepository = registerCheckRepository;
_asbitemRepository = asbitemRepository;
_sampleContainerRepository = sampleContainerRepository;
_sampleTypeRepository = sampleTypeRepository;
}
[HttpPost("api/app/LisRequest/GetListInFilter")]
public async Task<PagedResultDto<LisRequestDto>> GetListInFilterAsync(GetLisRequestListDto input)
{
var customerOrgList = await _customerOrgRepository.GetListAsync();
//var customerOrgList = await _customerOrgRepository.GetListAsync();
//Stopwatch stopwatch = Stopwatch.StartNew();
//stopwatch.Start();
@ -84,11 +101,14 @@ namespace Shentun.Peis.LisRequests
if (input.SexId != null && input.SexId != ForSexFlag.All)
patientRegisterQuery = patientRegisterQuery.Where(m => m.SexId == input.SexId);
if (input.StartDate!=null && input.EndDate != null)
if(input.EndDate == null)
input.EndDate = DateTime.Now;
if (input.StartDate != null && input.EndDate != null)
patientRegisterQuery = patientRegisterQuery.Where(m => m.CreationTime >= input.StartDate &&
m.CreationTime < ((DateTime)input.EndDate).AddDays(1));
if (input.CustomerOrgId != null)
{
var CustomerOrgIds = await _customerOrgManager.GetCustomerOrgChildrenId(input.CustomerOrgId.Value);
@ -105,20 +125,72 @@ namespace Shentun.Peis.LisRequests
int totalCount = patientRegisterQuery.Count();
patientRegisterQuery = patientRegisterQuery.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
patientRegisterQuery = patientRegisterQuery.Skip(input.SkipCount * input.MaxResultCount).Take(input.MaxResultCount);
var patientRegisterList = patientRegisterQuery.ToList();
if (patientRegisterList.Count > 10000)
{
throw new UserFriendlyException("选择的人员数不能超过1万条");
}
//生成LIS申请数据
foreach(var patientRegister in patientRegisterList )
foreach (var patientRegister in patientRegisterList)
{
var lisRequests = await _lisRequestManager.SetLisRequestAsync(patientRegister.Id);
}
//返回检索到的数据
var list = (from patient in await _patientRepository.GetQueryableAsync()
join patientRegister in patientRegisterQuery
on patient.Id equals patientRegister.PatientId
join registerCheck in await _registerCheckRepository.GetQueryableAsync()
on patientRegister.Id equals registerCheck.PatientRegisterId
join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
on registerCheck.Id equals registerCheckAsbitem.RegisterCheckId
join asbitem in await _asbitemRepository.GetQueryableAsync()
on registerCheckAsbitem.AsbitemId equals asbitem.Id
join lisRequest in await _lisRequestReportRepository.GetQueryableAsync()
on registerCheckAsbitem.LisRequestId equals lisRequest.Id
join sampleContainer in await _sampleContainerRepository.GetQueryableAsync()
on lisRequest.SampleContainerId equals sampleContainer.Id
join sampleType in await _sampleTypeRepository.GetQueryableAsync()
on lisRequest.SampleTypeId equals sampleType.Id
select new
{
patient,
patientRegister,
asbitem,
lisRequest,
sampleContainer,
sampleType
}).ToList();
var lisRequestIds = list.Select(o => new { Id = o.lisRequest.Id }).Distinct().ToList();
var lisRequestDtoList = new List<LisRequestDto>();
foreach (var lisRequestId in lisRequestIds)
{
var patientList = list.Where(o => o.lisRequest.Id == lisRequestId.Id).Distinct().ToList();
var patient = patientList.First();
var lisRequestDto = new LisRequestDto()
{
Id = lisRequestId.Id,
LisRequestNo = patient.lisRequest.LisRequestNo,
PatientNo = patient.patient.PatientNo,
PatientRegisterNo = patient.patientRegister.PatientRegisterNo,
PatientName = patient.patientRegister.PatientName,
SexName = _cacheService.GetSexNameAsync(patient.patientRegister.SexId).Result,
Age = patient.patientRegister.Age,
SampleTypeName = patient.sampleType.DisplayName,
SampleContainerName = patient.sampleContainer.DisplayName,
ContainerColor = patient.sampleContainer.ContainerColor,
SampleContainerRemark = patient.sampleContainer.ContainerRemark,
AsbitemName = string.Join(",", patientList.OrderBy(o=>o.asbitem.DisplayOrder).Select(o=> o.asbitem.DisplayName ).Distinct()),
CustomerOrgName = _cacheService.GetTopCustomerOrgAsync(patient.patientRegister.CustomerOrgId).Result.DisplayName,
DepartmentName = _cacheService.GetCustomerOrgNameAsync(patient.patientRegister.CustomerOrgId).Result
};
lisRequestDtoList.Add(lisRequestDto);
}
lisRequestDtoList = lisRequestDtoList.OrderBy(o=>o.PatientNo).ToList();
var result = new PagedResultDto<LisRequestDto>(patientRegisterList.Count,lisRequestDtoList);
var result = new PagedResultDto<LisRequestDto>();
return result;
}
@ -147,7 +219,7 @@ namespace Shentun.Peis.LisRequests
LastModifierId = s.LastModifierId,
LastModifierName = _cacheService.GetUserNameAsync(s.LastModifierId).Result,
LisRequestNo = s.LisRequestNo,
SamplerName = _cacheService.GetUserNameAsync( s.SamplerId).Result,
SamplerName = _cacheService.GetUserNameAsync(s.SamplerId).Result,
SamplingTime = s.SamplingTime,
SignInOrder = s.SignInOrder,
SignInPerson = s.SignInPerson,
@ -172,7 +244,7 @@ namespace Shentun.Peis.LisRequests
{
await _lisRequestManager.AppendLisRequestAsync(item.LisRequestId, item.RegisterCheckAsbitemIds);
}
}
else
{
@ -191,7 +263,7 @@ namespace Shentun.Peis.LisRequests
{
if (RegisterAsbitemIds.Any())
{
var lisRequests = await _lisRequestManager.AddLisRequestAsync(RegisterAsbitemIds);
var lisRequests = await _lisRequestManager.AddLisRequestAsync(RegisterAsbitemIds);
}
else
{
@ -229,7 +301,7 @@ namespace Shentun.Peis.LisRequests
throw new UserFriendlyException("未正式登记,不能打印");
}
//按人员登记批量修改
var LisRequestIds = (await _registerAsbitemRepository.GetListAsync(m => m.PatientRegisterId == input.PatientRegisterId && m.LisRequestId != null)).Select(s => s.LisRequestId);
var LisRequestIds = (await _registerCheckAsbitemRepository.GetListAsync(m => m.PatientRegisterId == input.PatientRegisterId && m.LisRequestId != null)).Select(s => s.LisRequestId);
if (LisRequestIds.Count() > 0)
{
var oldlist = await _lisRequestReportRepository.GetListAsync(m => LisRequestIds.Contains(m.Id));
@ -248,7 +320,7 @@ namespace Shentun.Peis.LisRequests
var oldent = await _lisRequestReportRepository.FirstOrDefaultAsync(m => m.Id == input.LisRequestId);
if (oldent != null)
{
var registerAsbitem = (await _registerAsbitemRepository.GetListAsync(o => o.LisRequestId == input.LisRequestId)).FirstOrDefault();
var registerAsbitem = (await _registerCheckAsbitemRepository.GetListAsync(o => o.LisRequestId == input.LisRequestId)).FirstOrDefault();
var _patientRegister = await _patientRegisterRepository.GetAsync(registerAsbitem.PatientRegisterId);
if (_patientRegister.CompleteFlag == PatientRegisterCompleteFlag.PreRegistration)
{

4
src/Shentun.Peis.Domain/Asbitems/Asbitem.cs

@ -151,6 +151,10 @@ namespace Shentun.Peis.Models
public virtual ICollection<AsbitemDetail> AsbitemDetails { get; set; }
[InverseProperty(nameof(ChargeAsbitem.Asbitem))]
public virtual ICollection<ChargeAsbitem> ChargeAsbitems { get; set; }
[InverseProperty(nameof(ChargeRequestAsbitem.Asbitem))]
public virtual ICollection<ChargeRequestAsbitem> ChargeRequestAsbitems { get; set; }
[InverseProperty(nameof(CustomerOrgGroupDetail.Asbitem))]
public virtual ICollection<CustomerOrgGroupDetail> CustomerOrgGroupDetails { get; set; }
[InverseProperty(nameof(MedicalPackageDetail.Asbitem))]

67
src/Shentun.Peis.Domain/ChargeRequestAsbitems/ChargeRequestAsbitem.cs

@ -0,0 +1,67 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Shentun.Peis.Models;
using System.ComponentModel.DataAnnotations.Schema;
namespace Shentun.Peis.Models
{
/// <summary>
/// 收费申请组合项目
/// </summary>
public class ChargeRequestAsbitem : AuditedEntity<Guid>, IHasConcurrencyStamp
{
public ChargeRequestAsbitem()
{
}
public ChargeRequestAsbitem(Guid id):base(id)
{
}
/// <summary>
/// 收费申请单ID
/// </summary>
[Column("charge_request_id")]
public Guid ChargeRequestId { get; set; }
/// <summary>
/// 组合项目
/// </summary>
[Column("asbitem_id")]
public Guid AsbitemId { get; set; }
/// <summary>
/// 价格
/// </summary>
[Column("charge_price")]
[Precision(10, 2)]
public decimal ChargePrice { get; set; }
[Column("amount")]
public short Amount { get; set; }
[Column("register_asbitem_id")]
public Guid RegisterAsbitemId { get; set; }
[Column("is_charge")]
public char IsCharge { get; set; }
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }
[ForeignKey(nameof(AsbitemId))]
[InverseProperty("ChargeRequestAsbitem")]
public virtual Asbitem Asbitem { get; set; } = null!;
[ForeignKey(nameof(ChargeRequestId))]
[InverseProperty("ChargeRequestAsbitem")]
public virtual ChargeRequest ChargeRequest { get; set; } = null!;
}
}

75
src/Shentun.Peis.Domain/ChargeRequests/ChargeRequest.cs

@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities.Auditing;
using Volo.Abp.Domain.Entities;
using Shentun.Peis.Models;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace Shentun.Peis.Models
{
/// <summary>
/// 收费申请主档
/// </summary>
public class ChargeRequest : AuditedEntity<Guid>, IHasConcurrencyStamp
{
public ChargeRequest()
{
}
public ChargeRequest(Guid id):base(id)
{
}
/// <summary>
/// 登记流水号
/// </summary>
[Column("patient_register_id")]
public Guid PatientRegisterId { get; set; }
/// <summary>
/// 病人号
/// </summary>
[Column("patient_id")]
public Guid PatientId { get; set; }
/// <summary>
/// his 病人号
/// </summary>
[Column("his_patient_id")]
public string HisPatientId { get; set; }
/// <summary>
/// HIS收费单号
/// </summary>
[Column("his_charge_no")]
public string HisChargeNo { get; set; }
/// <summary>
/// 0、申请 1-收费,2-退费
/// </summary>
[Column("charge_reguest_flag")]
[MaxLength(1)]
public char ChargeRequestFlag { get; set; }
/// <summary>
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }
//[ForeignKey(nameof(PatientRegisterId))]
//[InverseProperty("Charges")]
//public virtual PatientRegister PatientRegister { get; set; } = null!;
[InverseProperty(nameof(ChargeRequestAsbitem.ChargeRequest))]
public virtual ICollection<ChargeRequestAsbitem> ChargeRequestAsbitems { get; set; }
//[InverseProperty(nameof(ChargeBack.Charge))]
//public virtual ICollection<ChargeBack> ChargeBacks { get; set; }
//[InverseProperty(nameof(ChargePay.Charge))]
//public virtual ICollection<ChargePay> ChargePays { get; set; }
}
}

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

@ -0,0 +1,45 @@
using Shentun.Peis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Domain.Services;
namespace Shentun.Peis.ChargeRequests
{
public class ChargeRequestManager : DomainService
{
private readonly IRepository<ChargeRequest, Guid> _repository;
public ChargeRequestManager(IRepository<ChargeRequest, Guid> repository)
{
_repository = repository;
}
/// <summary>
/// 创建
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
public async Task<ChargeRequest> CreateAsync(
ChargeRequest entity
)
{
return new ChargeRequest(
GuidGenerator.Create()
)
{
PatientRegisterId = entity.PatientRegisterId,
PatientId = entity.PatientId,
HisPatientId = entity.HisPatientId,
HisChargeNo = entity.HisChargeNo,
ChargeRequestFlag = entity.ChargeRequestFlag,
};
}
}
}

43
src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeRequestAsbitems/ChargeRequestAsbitemDbMapping.cs

@ -0,0 +1,43 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Shentun.Peis.EntityFrameworkCore;
using Shentun.Peis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.DbMapping.ChargeRequestAsbitems
{
public class ChargeRequestAsbitemDbMapping : IEntityTypeConfiguration<ChargeRequestAsbitem>
{
public void Configure(EntityTypeBuilder<ChargeRequestAsbitem> entity)
{
entity.HasComment("收费申请包含组合项目");
entity.Property(e => e.Id).ValueGeneratedNever();
entity.Property(e => e.AsbitemId)
.IsFixedLength()
.HasComment("组合项目").IsRequired();
entity.Property(e => e.ChargeRequestId).HasComment("收费申请单号");
entity.Property(e => e.ChargePrice).HasComment("价格").IsRequired();
entity.HasOne(d => d.Asbitem)
.WithMany(p => p.ChargeRequestAsbitems)
.HasForeignKey(d => d.AsbitemId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("fk_charge_request_asbitem_asbitem");
entity.HasOne(d => d.ChargeRequest)
.WithMany(p => p.ChargeRequestAsbitems)
.HasForeignKey(d => d.ChargeRequestId)
.HasConstraintName("fk_charge_request_asbitem_charge");
entity.ConfigureByConvention();
}
}
}

33
src/Shentun.Peis.EntityFrameworkCore/DbMapping/ChargeRequests/ChargeRequestDbMapping.cs

@ -0,0 +1,33 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Shentun.Peis.EntityFrameworkCore;
using Shentun.Peis.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Shentun.Peis.DbMapping.ChargeRequests
{
public class ChargeRequestDbMapping : IEntityTypeConfiguration<ChargeRequest>
{
public void Configure(EntityTypeBuilder<ChargeRequest> entity)
{
entity.HasComment("收费申请单主档");
entity.Property(e => e.Id)
.ValueGeneratedNever()
.HasComment("收据申请单号").IsRequired();
entity.Property(e => e.ChargeRequestFlag).HasDefaultValueSql("0").IsRequired();
entity.Property(e => e.PatientRegisterId).HasComment("登记流水号").IsRequired();
entity.Property(e => e.PatientId).HasComment("档案号").IsRequired();
entity.ConfigureByConvention();
}
}
}

5
src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs

@ -321,6 +321,11 @@ public class PeisDbContext :
#endregion
#region 收费申请
public DbSet<ChargeRequest> ChargeRequests { get; set; } = null!;
public DbSet<ChargeRequestAsbitem> ChargeRequestAsbitems { get; set; } = null!;
#endregion
public PeisDbContext(DbContextOptions<PeisDbContext> options)
: base(options)
{

54
test/Shentun.Peis.Application.Tests/LisRequestAppServiceTest.cs

@ -0,0 +1,54 @@
using Shentun.Peis.CustomerOrgs;
using Shentun.Peis.LisRequests;
using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Uow;
using Xunit;
using Xunit.Abstractions;
namespace Shentun.Peis
{
public class LisRequestAppServiceTest:PeisApplicationTestBase
{
private readonly IRepository<LisRequest, Guid> _repository;
private readonly LisRequestAppService _appService;
private readonly ITestOutputHelper _output;
private readonly IUnitOfWorkManager _unitOfWorkManager;
public LisRequestAppServiceTest(ITestOutputHelper testOutputHelper)
{
_output = testOutputHelper;
_unitOfWorkManager = GetRequiredService<IUnitOfWorkManager>();
_repository = GetRequiredService<IRepository<LisRequest, Guid>>();
_appService = GetRequiredService<LisRequestAppService>();
}
[Fact]
public async Task GetListInFilterAsync()
{
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
PagedResultDto<LisRequestDto> pagedResultDto = await _appService.GetListInFilterAsync(new GetLisRequestListDto()
{
StartDate = DateTime.Now.Date.AddDays(-30),
MaxResultCount = 1000
});
foreach (var item in pagedResultDto.Items)
{
_output.WriteLine(item.PatientName + "," + item.AsbitemName);
}
await unitOfWork.CompleteAsync();
}
}
}
}

4
test/Shentun.Peis.ColumnReference.Tests/ColumnReferencePlugInsAsbitemBaseTest.cs

@ -27,7 +27,7 @@ namespace Shentun.Peis.ColumnReferencePlugIns.Tests
configParm = File.ReadAllText(filePath);
var columnReferencePlugInsBase = new ColumnReferencePlugInsBase(configParm);
var items = await columnReferencePlugInsBase.GetCodeValues();
var items = await columnReferencePlugInsBase.GetCodeValuesAsync();
foreach ( var item in items )
{
_output.WriteLine(item.Code + item.DisplayName);
@ -43,7 +43,7 @@ namespace Shentun.Peis.ColumnReferencePlugIns.Tests
configParm = File.ReadAllText(filePath);
var columnReferencePlugInsBase = new ColumnReferencePlugInsDbBase(configParm);
var items = await columnReferencePlugInsBase.GetInterfaceCodeValues();
var items = await columnReferencePlugInsBase.GetInterfaceCodeValuesAsync();
foreach (var item in items)
{
_output.WriteLine(item.Code + item.DisplayName);

6
test/Shentun.Peis.ColumnReference.Tests/appsettings.json

@ -5,7 +5,8 @@
"ClientUrl": "http://localhost:9530",
"CorsOrigins": "https://*.Peis.com,http://localhost:4200,http://localhost:9530,http://192.168.1.108:9530,http://localhost:8080,http://localhost:8081",
"RedirectAllowedUrls": "http://localhost:9530",
"Sql": "select id::varchar as Code ,display_name as DisplayName ,simple_code as SimpleCode ,display_order as DisplayOrder from asbitem"
"Sql": "select id::varchar as Code ,display_name as DisplayName ,simple_code as SimpleCode ,display_order as DisplayOrder from asbitem",
"ColumnNames": "编码,名称"
},
"Interface": {
//"DbType": "SqlServer",
@ -13,7 +14,8 @@
//"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)))",
"Sql": "select ZHID as Code ,ZHMC as DisplayName from PORTAL56_LIS.vi_tj_testitemgroup"
"Sql": "select ZHID as Code ,ZHMC as DisplayName from PORTAL56_LIS.vi_tj_testitemgroup",
"ColumnNames": "编码,名称"
},
"ConnectionStrings": {
"Default": "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123;"

4
test/Shentun.Peis.EntityFrameworkCore.Tests/EntityFrameworkCore/PeisEntityFrameworkCoreTestModule.cs

@ -40,8 +40,8 @@ public class PeisEntityFrameworkCoreTestModule : AbpModule
}
private void ConfigurePostGress(IServiceCollection services)
{
//string connectStr = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123";
string connectStr = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;";
string connectStr = "Host=140.143.162.39;Port=5432;Database=ShentunPeis070703;User ID=postgres;Password=shentun123";
//string connectStr = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;";
services.Configure<AbpDbContextOptions>(options =>
{

Loading…
Cancel
Save