Browse Source

组合项目顺序

bjmzak
DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
0343f2ffa0
  1. 4
      src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckOrAsbitemNameOrIsChargeDto.cs
  2. 40
      src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs
  3. 28
      src/Shentun.Peis.Application/SumSummaryReports/SumSummaryReportAppService.cs
  4. 59
      src/Shentun.Peis.Domain/CacheService.cs
  5. 12
      test/Shentun.Peis.Application.Tests/SumSummaryReportAppServiceTest.cs

4
src/Shentun.Peis.Application.Contracts/RegisterChecks/RegisterCheckOrAsbitemNameOrIsChargeDto.cs

@ -15,5 +15,9 @@ namespace Shentun.Peis.RegisterChecks
/// 是否收费 /// 是否收费
/// </summary> /// </summary>
public char? IsCharge { get; set; } public char? IsCharge { get; set; }
public char CheckTypeFlag { get; set; }
public int ItemTypeDisplayOrder { get; set; }
public int AsbitemDisplayOrder { get; set; }
} }
} }

40
src/Shentun.Peis.Application/RegisterChecks/RegisterCheckAppService.cs

@ -35,6 +35,8 @@ namespace Shentun.Peis.RegisterChecks
public class RegisterCheckAppService : ApplicationService public class RegisterCheckAppService : ApplicationService
{ {
private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository; private readonly IRepository<RegisterCheckItem> _registerCheckItemRepository;
private readonly IRepository<RegisterCheckAsbitem> _registerCheckAsbitemRepository;
private readonly IRepository<ItemType> _itemTypeRepository;
private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository; private readonly IRepository<PatientRegister, Guid> _patientRegisterRepository;
private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository; private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository; private readonly IRepository<RegisterCheck, Guid> _registerCheckRepository;
@ -64,7 +66,9 @@ namespace Shentun.Peis.RegisterChecks
IConfiguration configuration, IConfiguration configuration,
ICurrentUser currentUser, ICurrentUser currentUser,
IRepository<UserItemType> userItemTypeRepository, IRepository<UserItemType> userItemTypeRepository,
IRepository<Asbitem, Guid> asbitemRepository)
IRepository<Asbitem, Guid> asbitemRepository,
IRepository<RegisterCheckAsbitem> registerCheckAsbitemRepository,
IRepository<ItemType> itemTypeRepository)
{ {
_registerCheckRepository = registerCheckRepository; _registerCheckRepository = registerCheckRepository;
_userRepository = userRepository; _userRepository = userRepository;
@ -81,6 +85,8 @@ namespace Shentun.Peis.RegisterChecks
_currentUser = currentUser; _currentUser = currentUser;
_userItemTypeRepository = userItemTypeRepository; _userItemTypeRepository = userItemTypeRepository;
_asbitemRepository = asbitemRepository; _asbitemRepository = asbitemRepository;
_registerCheckAsbitemRepository = registerCheckAsbitemRepository;
_itemTypeRepository = itemTypeRepository;
} }
/// <summary> /// <summary>
@ -130,15 +136,32 @@ namespace Shentun.Peis.RegisterChecks
/// <summary> /// <summary>
/// 获取登记check表数据(附带组合项目名称跟是否收费) 医生诊台左边列表 只有一个收费就显示收费 /// 获取登记check表数据(附带组合项目名称跟是否收费) 医生诊台左边列表 只有一个收费就显示收费
/// </summary> /// </summary>
/// <param name="PatientRegisterId"></param>
/// <param name="input"></param>
/// <returns></returns> /// <returns></returns>
public async Task<List<RegisterCheckOrAsbitemNameOrIsChargeDto>> GetListRegisterCheckOrAsbitemAsync(Guid PatientRegisterId)
{
[HttpPost("api/app/RegisterCheck/GetRegisterCheckAsbitemsByPatientRegisterId")]
public async Task<List<RegisterCheckOrAsbitemNameOrIsChargeDto>> GetRegisterCheckAsbitemsByPatientRegisterIdAsync(PatientRegisterIdInputDto input)
{
//var list = (from registerCheck in await _registerCheckRepository.GetQueryableAsync()
// join registerCheckAsbitem in await _registerCheckAsbitemRepository.GetQueryableAsync()
// on registerCheck.Id equals registerCheckAsbitem.AsbitemId
// join asbitem in await _asbitemRepository.GetQueryableAsync()
// on registerCheckAsbitem.AsbitemId equals asbitem.Id
// join itemType in await _itemTypeRepository.GetQueryableAsync()
// on asbitem.ItemTypeId equals itemType.Id
// where registerCheck.PatientRegisterId == input.PatientRegisterId
// orderby itemType.DisplayName, asbitem.DisplayOrder
// select new
// {
// registerCheck,
// registerCheckAsbitem,
// asbitem,
// itemType
// }).ToList();
var entlist = (await _registerCheckRepository.GetDbSetAsync()) var entlist = (await _registerCheckRepository.GetDbSetAsync())
.Include(x => x.RegisterCheckAsbitems) .Include(x => x.RegisterCheckAsbitems)
.ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType) .ThenInclude(x => x.Asbitem).ThenInclude(x => x.ItemType)
.Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId).Contains(PatientRegisterId)).ToList();
.Where(m => m.RegisterCheckAsbitems.Select(s => s.PatientRegisterId).Contains(input.PatientRegisterId)).ToList();
//排序 //排序
entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder)).ToList() entlist = entlist.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.ItemType.DisplayOrder)).ToList()
.OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder)).ToList(); .OrderBy(o => o.RegisterCheckAsbitems.Max(o => o.Asbitem.DisplayOrder)).ToList();
@ -146,6 +169,7 @@ namespace Shentun.Peis.RegisterChecks
var entdto = entlist.Select(s => new RegisterCheckOrAsbitemNameOrIsChargeDto var entdto = entlist.Select(s => new RegisterCheckOrAsbitemNameOrIsChargeDto
{ {
CheckTypeFlag = s.RegisterCheckAsbitems.First().Asbitem.ItemType.CheckTypeFlag,
AsbitemName = string.Join(",", s.RegisterCheckAsbitems.Select(rs => rs.Asbitem.DisplayName).ToList()), AsbitemName = string.Join(",", s.RegisterCheckAsbitems.Select(rs => rs.Asbitem.DisplayName).ToList()),
AuditorUserId = s.AuditorUserId, AuditorUserId = s.AuditorUserId,
AuditTime = s.AuditTime, AuditTime = s.AuditTime,
@ -171,8 +195,10 @@ namespace Shentun.Peis.RegisterChecks
LastModifierId = s.LastModifierId, LastModifierId = s.LastModifierId,
//RegisterAsbitemId = s.RegisterAsbitemId, //RegisterAsbitemId = s.RegisterAsbitemId,
ThirdInfo = s.ThirdInfo, ThirdInfo = s.ThirdInfo,
CreatorName = EntityHelper.GetSurnameNoSql(userList, s.CreatorId),
LastModifierName = EntityHelper.GetSurnameNoSql(userList, s.LastModifierId)
CreatorName = _cacheService.GetSurnameAsync( s.CreatorId).Result,
LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).Result,
ItemTypeDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.ItemType.DisplayOrder,
AsbitemDisplayOrder = s.RegisterCheckAsbitems.First().Asbitem.DisplayOrder
}).ToList(); }).ToList();
return entdto; return entdto;

28
src/Shentun.Peis.Application/SumSummaryReports/SumSummaryReportAppService.cs

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.VisualBasic; using Microsoft.VisualBasic;
using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.OpenXmlFormats.Wordprocessing;
using Org.BouncyCastle.Ocsp;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.PatientRegisters; using Shentun.Peis.PatientRegisters;
@ -191,20 +192,23 @@ namespace Shentun.Peis.SumSummaryReports
CheckDate = ((DateTime)listItem.registerCheck.CheckDate).Date, CheckDate = ((DateTime)listItem.registerCheck.CheckDate).Date,
CheckDoctorName = EntityHelper.GetCheckDoctorName(listItem.registerCheck.CheckDoctorId, userlist), CheckDoctorName = EntityHelper.GetCheckDoctorName(listItem.registerCheck.CheckDoctorId, userlist),
Items = list.Where(o => o.registerCheck.Id == registerCheckId) Items = list.Where(o => o.registerCheck.Id == registerCheckId)
.OrderBy(o => o.itemType.DisplayOrder).OrderBy(o => o.asbitem.DisplayOrder).OrderBy(o => o.item.DisplayOrder)
.OrderBy(o => o.itemType.DisplayOrder)
.OrderBy(o => o.asbitem.DisplayOrder)
.OrderBy(o => o.item.DisplayOrder)
.GroupBy(o => o.registerCheckItem.ItemId)
.Select(o => new SumSummaryReportDetailResultWithItem() .Select(o => new SumSummaryReportDetailResultWithItem()
{ {
ItemId = o.registerCheckItem.ItemId,
ItemName = o.item.DisplayName,
ItemResult = o.registerCheckItem.Result,
ReferenceRangeValue = o.registerCheckItem.ReferenceRangeValue,
CriticalRangeValue = o.registerCheckItem.CriticalRangeValue,
Unit = o.registerCheckItem.Unit,
ResultStatusId = o.registerCheckItem.ResultStatusId,
ResultStatusName = (resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? "" : resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault().ReportPrompt,
ReportFontColor = (resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault().ReportFontColor,
ReportBackgroundColor = (resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == o.registerCheckItem.ResultStatusId).FirstOrDefault().ReportBackgroundColor,
}).Distinct().ToList(),
ItemId = o.FirstOrDefault().registerCheckItem.ItemId,
ItemName = o.FirstOrDefault().item.DisplayName,
ItemResult = o.FirstOrDefault().registerCheckItem.Result,
ReferenceRangeValue = o.FirstOrDefault().registerCheckItem.ReferenceRangeValue,
CriticalRangeValue = o.FirstOrDefault().registerCheckItem.CriticalRangeValue,
Unit = o.FirstOrDefault().registerCheckItem.Unit,
ResultStatusId = o.FirstOrDefault().registerCheckItem.ResultStatusId,
ResultStatusName = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? "" : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportPrompt,
ReportFontColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 0 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportFontColor,
ReportBackgroundColor = (resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault() == null) ? 16777215 : resultStatus.Where(x => x.Id == o.FirstOrDefault().registerCheckItem.ResultStatusId).FirstOrDefault().ReportBackgroundColor,
}).ToList(),
Summarys = list.Where(o => o.registerCheck.Id == registerCheckId) Summarys = list.Where(o => o.registerCheck.Id == registerCheckId)
.OrderBy(o => o.registerCheckSummary.DisplayOrder) .OrderBy(o => o.registerCheckSummary.DisplayOrder)
.GroupBy(o => o.registerCheckSummary.Summary) .GroupBy(o => o.registerCheckSummary.Summary)

59
src/Shentun.Peis.Domain/CacheService.cs

@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Caching.Memory;
using Shentun.Peis.Enums; using Shentun.Peis.Enums;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using System; using System;
@ -18,7 +19,8 @@ namespace Shentun.Peis
public class CacheService : ISingletonDependency public class CacheService : ISingletonDependency
{ {
private readonly IDistributedCache<IdentityUser, Guid> _userCache; private readonly IDistributedCache<IdentityUser, Guid> _userCache;
private readonly IDistributedCache<CustomerOrg, Guid> _customerOrgCache;
private readonly IMemoryCache _customerOrgCache;
//private readonly IDistributedCache<CustomerOrg, Guid> _customerOrgCache;
private readonly IDistributedCache<string, Guid> _customerOrgTopNameCache; private readonly IDistributedCache<string, Guid> _customerOrgTopNameCache;
private readonly IDistributedCache<Nation, string> _nationCache; private readonly IDistributedCache<Nation, string> _nationCache;
private readonly IDistributedCache<Sex, char> _sexCache; private readonly IDistributedCache<Sex, char> _sexCache;
@ -27,14 +29,16 @@ namespace Shentun.Peis
private readonly IDistributedCache<DeviceType, Guid> _deviceTypeCache; private readonly IDistributedCache<DeviceType, Guid> _deviceTypeCache;
private readonly IDistributedCache<MedicalType, Guid> _medicalTypeCache; private readonly IDistributedCache<MedicalType, Guid> _medicalTypeCache;
private readonly IDistributedCache<PersonnelType, Guid> _personnelTypeCache; private readonly IDistributedCache<PersonnelType, Guid> _personnelTypeCache;
private readonly IDistributedCache<Asbitem, Guid> _asbitemCache;
private readonly IDistributedCache<ItemType, Guid> _itemTypeCache;
private readonly IMemoryCache _asbitemCache;
private readonly IMemoryCache _itemTypeCache;
//private readonly IDistributedCache<ItemType, Guid> _itemTypeCache;
private readonly IRepository<IdentityUser, Guid> _userRepository; private readonly IRepository<IdentityUser, Guid> _userRepository;
private readonly IRepository<Nation> _nationRepository; private readonly IRepository<Nation> _nationRepository;
private readonly IRepository<Sex> _sexRepository; private readonly IRepository<Sex> _sexRepository;
private readonly IRepository<ForSex> _forSexRepository; private readonly IRepository<ForSex> _forSexRepository;
private readonly IRepository<DeviceType, Guid> _deviceTypeRepository; private readonly IRepository<DeviceType, Guid> _deviceTypeRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository; private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<ItemType, Guid> _itemTypeRepository; private readonly IRepository<ItemType, Guid> _itemTypeRepository;
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository; private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
private readonly IRepository<MaritalStatus> _maritalStatusRepository; private readonly IRepository<MaritalStatus> _maritalStatusRepository;
@ -43,12 +47,12 @@ namespace Shentun.Peis
public CacheService( public CacheService(
IDistributedCache<IdentityUser, Guid> userCache, IDistributedCache<IdentityUser, Guid> userCache,
IDistributedCache<CustomerOrg, Guid> customerOrgCache,
IMemoryCache customerOrgCache,
IDistributedCache<Nation, string> nationCache, IDistributedCache<Nation, string> nationCache,
IRepository<IdentityUser, Guid> userRepository, IRepository<IdentityUser, Guid> userRepository,
IDistributedCache<Sex, char> sexCache, IDistributedCache<Sex, char> sexCache,
IDistributedCache<Asbitem, Guid> asbitemCache,
IDistributedCache<ItemType, Guid> itemTypeCache,
IMemoryCache asbitemCache,
IMemoryCache itemTypeCache,
IDistributedCache<MaritalStatus, char> maritalStatusCache, IDistributedCache<MaritalStatus, char> maritalStatusCache,
IDistributedCache<MedicalType, Guid> medicalTypeCache, IDistributedCache<MedicalType, Guid> medicalTypeCache,
IDistributedCache<PersonnelType, Guid> personnelTypeCache, IDistributedCache<PersonnelType, Guid> personnelTypeCache,
@ -234,23 +238,41 @@ namespace Shentun.Peis
public async Task<Asbitem> GetAsbitemAsync(Guid id) public async Task<Asbitem> GetAsbitemAsync(Guid id)
{ {
var entity = (Asbitem)_asbitemCache.Get(id);
if (entity == null)
{
entity = await _asbitemRepository.GetAsync(o => o.Id == id);
_asbitemCache.Set(id, entity);
//entity = (CustomerOrg)_customerOrgCache.Get(id);
}
var entity = await _asbitemCache.GetOrAddAsync(
id, //缓存键
async () => await _asbitemRepository.GetAsync(id)
);
return entity; return entity;
//var entity = await _asbitemCache.GetOrAddAsync(
// id, //缓存键
// async () => await _asbitemRepository.GetAsync(id)
//);
//return entity;
} }
public async Task<ItemType> GetItemTypeAsync(Guid id) public async Task<ItemType> GetItemTypeAsync(Guid id)
{ {
var entity = await _itemTypeCache.GetOrAddAsync(
id, //缓存键
async () => await _itemTypeRepository.GetAsync(id)
var entity = (ItemType)_itemTypeCache.Get(id);
if (entity == null)
{
entity = await _itemTypeRepository.GetAsync(o => o.Id == id);
_itemTypeCache.Set(id, entity);
//entity = (CustomerOrg)_customerOrgCache.Get(id);
}
);
//var entity = await _itemTypeCache.GetOrAddAsync(
// id, //缓存键
// async () => (ItemType) _itemTypeRepository.Get(id)
//);
return entity; return entity;
} }
@ -277,11 +299,12 @@ namespace Shentun.Peis
public async Task<CustomerOrg> GetCustomerOrgAsync(Guid id) public async Task<CustomerOrg> GetCustomerOrgAsync(Guid id)
{ {
var entity = await _customerOrgCache.GetAsync(id);
var entity = (CustomerOrg)_customerOrgCache.Get(id);
if (entity == null) if (entity == null)
{ {
entity = await _customerOrgRepository.GetAsync(o => o.Id == id); entity = await _customerOrgRepository.GetAsync(o => o.Id == id);
_customerOrgCache.Set(id, entity); _customerOrgCache.Set(id, entity);
//entity = (CustomerOrg)_customerOrgCache.Get(id);
} }
return entity; return entity;
@ -299,7 +322,7 @@ namespace Shentun.Peis
public async Task<CustomerOrg> GetTopCustomerOrgAsync(Guid id) public async Task<CustomerOrg> GetTopCustomerOrgAsync(Guid id)
{ {
var entity = await _customerOrgCache.GetAsync(id);
var entity = (CustomerOrg)_customerOrgCache.Get(id);
if(entity == null) if(entity == null)
{ {
entity = await _customerOrgRepository.GetAsync(o => o.Id == id); entity = await _customerOrgRepository.GetAsync(o => o.Id == id);
@ -336,7 +359,7 @@ namespace Shentun.Peis
/// <returns></returns> /// <returns></returns>
private async Task<string> GetTopCustomerOrgNameInCustomerOrgIdAsync(Guid id) private async Task<string> GetTopCustomerOrgNameInCustomerOrgIdAsync(Guid id)
{ {
var entity = await _customerOrgCache.GetAsync(id);
var entity = (CustomerOrg)_customerOrgCache.Get(id);
if (entity == null) if (entity == null)
{ {
entity = await _customerOrgRepository.GetAsync(o => o.Id == id); entity = await _customerOrgRepository.GetAsync(o => o.Id == id);

12
test/Shentun.Peis.Application.Tests/SumSummaryReportAppServiceTest.cs

@ -37,11 +37,21 @@ namespace Shentun.Peis
var entity = new PatientRegisterIdInputDto() var entity = new PatientRegisterIdInputDto()
{ {
PatientRegisterId = new Guid("3a1216d1-4bd1-5f3b-6a40-903589b570b8"),
PatientRegisterId = new Guid("3a123c55-06de-4988-691c-448b5af468ff"),
}; };
var newEntity = await _appService.GetDetailResultsAsync(entity); var newEntity = await _appService.GetDetailResultsAsync(entity);
foreach(var item in newEntity)
{
foreach(var item2 in item.Asbitems)
{
foreach(var item3 in item2.Items)
{
_output.WriteLine(item3.ItemName);
}
}
}
await unitOfWork.CompleteAsync(); await unitOfWork.CompleteAsync();
} }
} }

Loading…
Cancel
Save