Browse Source

excel导入,单位缓存,阳性结果

master
wxd 4 weeks ago
parent
commit
09c175734a
  1. 14
      src/Shentun.Peis.Application.Contracts/CustomerOrgs/GetCustomerOrgThreeDataVersonInputDto.cs
  2. 12
      src/Shentun.Peis.Application.Contracts/CustomerReports/GetPatientRegisterPositiveReportDto.cs
  3. 11
      src/Shentun.Peis.Application.Contracts/CustomerReports/GetPositivePatientRegisterReportStandardDto.cs
  4. 10
      src/Shentun.Peis.Application.Contracts/PatientRegisters/GetSameNamePatientDto.cs
  5. 32
      src/Shentun.Peis.Application/CustomerOrgs/CustomerOrgAppService.cs
  6. 11
      src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs
  7. 93
      src/Shentun.Peis.Application/PatientRegisters/PatientRegisterAppService.cs
  8. 33
      src/Shentun.Peis.Domain/CacheService.cs

14
src/Shentun.Peis.Application.Contracts/CustomerOrgs/GetCustomerOrgThreeDataVersonInputDto.cs

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shentun.Peis.CustomerOrgs
{
public class GetCustomerOrgThreeDataVersonInputDto
{
/// <summary>
/// 数据名称
/// </summary>
public string DataName { get; set; } = "customer_three";
}
}

12
src/Shentun.Peis.Application.Contracts/CustomerReports/GetPatientRegisterPositiveReportDto.cs

@ -30,6 +30,18 @@ namespace Shentun.Peis.CustomerReports
/// </summary>
public int FemaleCount { get; set; }
/// <summary>
/// 登记男性人数
/// </summary>
public int RegisterMaleCount { get; set; }
/// <summary>
/// 登记女性人数
/// </summary>
public int RegisterFemaleCount { get; set; }
public List<GetPatientRegisterPositiveReportDetail> Details { get; set; } = new List<GetPatientRegisterPositiveReportDetail>();
}

11
src/Shentun.Peis.Application.Contracts/CustomerReports/GetPositivePatientRegisterReportStandardDto.cs

@ -30,6 +30,17 @@ namespace Shentun.Peis.CustomerReports
/// </summary>
public int FemaleCount { get; set; }
/// <summary>
/// 登记男性人数
/// </summary>
public int RegisterMaleCount { get; set; }
/// <summary>
/// 登记女性人数
/// </summary>
public int RegisterFemaleCount { get; set; }
public List<GetPositivePatientRegisterReportStandardDetail> Details { get; set; } = new List<GetPositivePatientRegisterReportStandardDetail>();

10
src/Shentun.Peis.Application.Contracts/PatientRegisters/GetSameNamePatientDto.cs

@ -83,5 +83,15 @@ namespace Shentun.Peis.PatientRegisters
public string CustomerOrgName { get; set; }
public string DepartmentName { get; set; }
/// <summary>
/// 分组名称
/// </summary>
public string CustomerOrgGroupName { get; set; }
/// <summary>
/// 套餐名称
/// </summary>
public string MedicalPackageName { get; set; }
}
}

32
src/Shentun.Peis.Application/CustomerOrgs/CustomerOrgAppService.cs

@ -79,7 +79,7 @@ namespace Shentun.Peis.CustomerOrgs
entityDto.LastModifierName = await _cacheService.GetSurnameAsync(entityDto.LastModifierId);
entityDto.MedicalTypeName = await _cacheService.GetMedicalTypeNameAsync(entityDto.MedicalTypeId);
entityDto.PersonnelTypeName = await _cacheService.GetPersonnelTypeNameAsync(entityDto.PersonnelTypeId);
// entityDto. = await _cacheService.GetPersonnelTypeNameAsync(entityDto.PersonnelTypeId);
// entityDto. = await _cacheService.GetPersonnelTypeNameAsync(entityDto.PersonnelTypeId);
return entityDto;
}
//[AllowAnonymous]
@ -201,6 +201,10 @@ namespace Shentun.Peis.CustomerOrgs
await _customerOrgRegisterRepository.InsertAsync(customerOrgRegisterEntity);
}
_customerOrgCache.Set(entity.Id, entity);
var versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
_cacheService.SetDataVersonCache("customer_three", versonNo);
var dto = ObjectMapper.Map<CustomerOrg, CustomerOrgDto>(entity);
return dto;
}
@ -217,6 +221,10 @@ namespace Shentun.Peis.CustomerOrgs
await _manager.UpdateAsync(sourceEntity, entity);
entity = await Repository.UpdateAsync(entity);
_customerOrgCache.Set(entity.Id, entity);
var versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
_cacheService.SetDataVersonCache("customer_three", versonNo);
return ObjectMapper.Map<CustomerOrg, CustomerOrgDto>(entity);
}
/// <summary>
@ -239,6 +247,9 @@ namespace Shentun.Peis.CustomerOrgs
}
}
var versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
_cacheService.SetDataVersonCache("customer_three", versonNo);
}
else
{
@ -971,10 +982,19 @@ namespace Shentun.Peis.CustomerOrgs
}
//private async Task<PeisDbContext> GetDbContextAsync()
//{
// return await _dbContextProvider.GetDbContextAsync();
//}
/// <summary>
/// 获取当前数据版本
/// </summary>
/// <returns></returns>
[HttpPost("api/app/Customerorg/GetCustomerOrgThreeDataVerson")]
public string GetCustomerOrgThreeDataVersonAsync(GetCustomerOrgThreeDataVersonInputDto input)
{
var versonNo = _cacheService.GetDataVersonCache(input.DataName);
if (string.IsNullOrWhiteSpace(versonNo))
{
versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
}
return versonNo;
}
}
}

11
src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs

@ -340,9 +340,12 @@ namespace Shentun.Peis.CustomerReports
}
var queryGroup = queryNull.ToList().GroupBy(g => g.patientRegister);
resultListDto.RegisterMaleCount = queryGroup.Count(c => c.Key.SexId == 'M');
resultListDto.RegisterFemaleCount = queryGroup.Count(c => c.Key.SexId == 'F');
var patientRegisterIds = queryGroup.Select(s => s.Key.Id).ToList();
@ -701,8 +704,8 @@ namespace Shentun.Peis.CustomerReports
var queryGroup = queryNull.ToList().GroupBy(g => g.patientRegister);
resultListDto.MaleCount = queryGroup.Count(c => c.Key.SexId == 'M');
resultListDto.FemaleCount = queryGroup.Count(c => c.Key.SexId == 'F');
resultListDto.RegisterMaleCount = queryGroup.Count(c => c.Key.SexId == 'M');
resultListDto.RegisterFemaleCount = queryGroup.Count(c => c.Key.SexId == 'F');
List<GetPositivePatientRegisterReportStandard_PatientRegister> patientRegisterList = new List<GetPositivePatientRegisterReportStandard_PatientRegister>();
@ -821,8 +824,8 @@ namespace Shentun.Peis.CustomerReports
resultListDto.StartDate = DataHelper.ConversionDateShortToString(input.CustomerOrgs.Where(m => !string.IsNullOrWhiteSpace(m.StartDate)).Select(s => Convert.ToDateTime(s.StartDate)).Min());
resultListDto.EndDate = DataHelper.ConversionDateShortToString(input.CustomerOrgs.Where(m => !string.IsNullOrWhiteSpace(m.EndDate)).Select(s => Convert.ToDateTime(s.EndDate)).Max());
//resultListDto.MaleCount = patientRegisterList.Distinct().Count(c => c.SexName == "男");
//resultListDto.FemaleCount = patientRegisterList.Distinct().Count(c => c.SexName == "女");
resultListDto.MaleCount = patientRegisterList.Distinct().Count(c => c.SexName == "男");
resultListDto.FemaleCount = patientRegisterList.Distinct().Count(c => c.SexName == "女");
resultListDto.Details = entListDto;
return resultListDto;

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

@ -36,6 +36,7 @@ using Shentun.Peis.SumSummaryReports;
using Shentun.Peis.SysParmValues;
using Shentun.Peis.ThirdBookingPushs;
using Shentun.Utilities;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@ -3339,8 +3340,26 @@ namespace Shentun.Peis.PatientRegisters
}
if (!string.IsNullOrWhiteSpace(input.IdNo))
{
input.IdNo = input.IdNo.Trim();
var idInfo = DataHelper.AutoIDCard(input.IdNo);
if (idInfo != null)
{
if (input.Age == null)
{
input.Age = idInfo.Age;
}
if (string.IsNullOrWhiteSpace(input.BirthDate))
{
input.BirthDate = idInfo.BirthDate;
}
if (string.IsNullOrWhiteSpace(input.SexName))
{
input.SexName = idInfo.SexId == 'M' ? "男" : "女";
}
}
}
#region 转换职业病信息
Guid ocCheckTypeId = Guid.Empty;
@ -3698,6 +3717,12 @@ namespace Shentun.Peis.PatientRegisters
return null;
}
/// <summary>
/// 按全部数据查重名数据
/// </summary>
/// <param name="getSameNamePatientInputDto"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/GetSameNamePatient")]
public async Task<List<GetSameNamePatientDto>> GetSameNamePatientAsync(GetSameNamePatientInputDto getSameNamePatientInputDto)
{
@ -3708,10 +3733,6 @@ namespace Shentun.Peis.PatientRegisters
var result = (from patient in patientQuery
join patientRegister in patientRegisterQuery
on patient.Id equals patientRegister.PatientId
join customerOrg in customerOrgQuery
on patientRegister.CustomerOrgId equals customerOrg.Id
join topCustomerOrg in topCustomerOrgQuery
on customerOrg.PathCode.Substring(0, 5) equals topCustomerOrg.PathCode
where patient.DisplayName == getSameNamePatientInputDto.Name
select new
{
@ -3720,29 +3741,31 @@ namespace Shentun.Peis.PatientRegisters
SexId = patient.SexId,
NationId = patient.NationId,
BirthDate = patient.BirthDate,
//SexName = _cacheService.GetSexNameAsync(patient.SexId).Result,
//NationName = _cacheService.GetNationNameAsync(patient.NationId).Result,
// BirthDate = ConvertExtr.ToStringByDateOnly( patient.BirthDate),
IdNo = patient.IdNo,
PostalCode = patient.PostalCode,
Email = patient.Email,
Telephone = patient.Telephone,
MobileTelephone = patient.MobileTelephone,
Address = patient.Address,
CustomerOrgName = topCustomerOrg.DisplayName,
CustomerOrgId = patientRegister.CustomerOrgId,
DepartmentName = customerOrg.DisplayName
MedicalStartDate = patientRegister.MedicalStartDate,
CustomerOrgGroupId = patientRegister.CustomerOrgGroupId,
MedicalPackageId = patientRegister.MedicalPackageId
}).Distinct().ToList();
var getSameNamePatientDtos = new List<GetSameNamePatientDto>();
foreach (var item in result)
var patientGroup = result.GroupBy(g => g.PatientNo);
foreach (var itemPatient in patientGroup)
{
var item = itemPatient.OrderByDescending(o => o.MedicalStartDate).FirstOrDefault();
getSameNamePatientDtos.Add(new GetSameNamePatientDto()
{
PatientName = item.PatientName,
PatientNo = item.PatientNo,
SexName = _cacheService.GetSexNameAsync(item.SexId).Result,
NationName = _cacheService.GetNationNameAsync(item.NationId).Result,
BirthDate = DataHelper.ConversionDateToString(item.BirthDate),
@ -3752,8 +3775,10 @@ namespace Shentun.Peis.PatientRegisters
Telephone = item.Telephone,
MobileTelephone = item.MobileTelephone,
Address = item.Address,
CustomerOrgName = item.CustomerOrgName,
DepartmentName = item.DepartmentName
CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
DepartmentName = _cacheService.GetCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
CustomerOrgGroupName = item.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(item.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(item.MedicalPackageId).GetAwaiter().GetResult()
});
}
@ -3761,6 +3786,11 @@ namespace Shentun.Peis.PatientRegisters
}
/// <summary>
/// 按部门数据查重名数据
/// </summary>
/// <param name="getCustomerOrgSameNamePatientInputDto"></param>
/// <returns></returns>
[HttpPost("api/app/patientregister/GetCustomerOrgSameNamePatient")]
public async Task<List<GetSameNamePatientDto>> GetCustomerOrgSameNamePatientAsync(GetCustomerOrgSameNamePatientInputDto getCustomerOrgSameNamePatientInputDto)
{
@ -3783,9 +3813,6 @@ namespace Shentun.Peis.PatientRegisters
SexId = patient.SexId,
NationId = patient.NationId,
BirthDate = patient.BirthDate,
//SexName = _cacheService.GetSexNameAsync(patient.SexId).Result,
//NationName = _cacheService.GetNationNameAsync(patient.NationId).Result,
// BirthDate = ConvertExtr.ToStringByDateOnly( patient.BirthDate),
IdNo = patient.IdNo,
PostalCode = patient.PostalCode,
Email = patient.Email,
@ -3793,18 +3820,22 @@ namespace Shentun.Peis.PatientRegisters
MobileTelephone = patient.MobileTelephone,
Address = patient.Address,
CustomerOrgId = patientRegister.CustomerOrgId,
DepartmentName = customerOrg.DisplayName
CustomerOrgGroupId = patientRegister.CustomerOrgGroupId,
MedicalPackageId = patientRegister.MedicalPackageId,
MedicalStartDate = patientRegister.MedicalStartDate
}).Distinct().ToList();
var getSameNamePatientDtos = new List<GetSameNamePatientDto>();
foreach (var item in result)
var patientGroup = result.GroupBy(g => g.PatientNo);
foreach (var itemPatient in patientGroup)
{
var item = itemPatient.OrderByDescending(o => o.MedicalStartDate).FirstOrDefault();
getSameNamePatientDtos.Add(new GetSameNamePatientDto()
{
PatientName = item.PatientName,
PatientNo = item.PatientNo,
SexName = _cacheService.GetSexNameAsync(item.SexId).Result,
NationName = _cacheService.GetNationNameAsync(item.NationId).Result,
BirthDate = DataHelper.ConversionDateToString(item.BirthDate),
@ -3814,8 +3845,10 @@ namespace Shentun.Peis.PatientRegisters
Telephone = item.Telephone,
MobileTelephone = item.MobileTelephone,
Address = item.Address,
CustomerOrgName = customerOrgEntity.DisplayName,
DepartmentName = item.DepartmentName
CustomerOrgName = _cacheService.GetTopCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
DepartmentName = _cacheService.GetCustomerOrgNameAsync(item.CustomerOrgId).GetAwaiter().GetResult(),
CustomerOrgGroupName = item.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(item.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(item.MedicalPackageId).GetAwaiter().GetResult()
});
}
@ -3956,10 +3989,11 @@ namespace Shentun.Peis.PatientRegisters
PatientPassword = s.ab.PatientPassword,
PostalCode = s.ab.PostalCode,
Telephone = s.ab.Telephone,
CustomerOrgName = EntityHelper.GetCustomerOrgNameNoSql(customerOrgList, s.a.CustomerOrgId),
CustomerOrgParentId = EntityHelper.GetParentNoSql(customerOrgList, s.a.CustomerOrgId),
CustomerOrgParentName = EntityHelper.GetCustomerOrgParentNameNoSql(customerOrgList, s.a.CustomerOrgId)
CustomerOrgName = _cacheService.GetCustomerOrgNameAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(),
CustomerOrgParentId = _cacheService.GetTopCustomerOrgIdAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(),
CustomerOrgParentName = _cacheService.GetTopCustomerOrgNameAsync(s.a.CustomerOrgId).GetAwaiter().GetResult(),
CustomerOrgGroupName = s.a.CustomerOrgGroupId == null ? "" : _cacheService.GetCustomerOrgGroupAsync(s.a.CustomerOrgGroupId.Value).GetAwaiter().GetResult().DisplayName,
MedicalPackageName = _cacheService.GetMedicalTypeNameAsync(s.a.MedicalPackageId).GetAwaiter().GetResult()
}).ToList();
@ -5123,6 +5157,11 @@ namespace Shentun.Peis.PatientRegisters
var DepartmentReturn = await _customerOrgRepository.InsertAsync(DepartmentEnt, true);
#region 更新缓存版本
var versonNo = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
_cacheService.SetDataVersonCache("customer_three", versonNo);
#endregion
return DepartmentReturn.Id;
}

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

@ -67,6 +67,10 @@ namespace Shentun.Peis
private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
private readonly IDistributedCache<MedicalPackage, Guid> _medicalPackageCache;
private readonly IMemoryCache _dataVersonCache;
public CacheService(
IDistributedCache<IdentityUser, Guid> userCache,
IMemoryCache customerOrgCache,
@ -101,7 +105,8 @@ namespace Shentun.Peis
IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
IDistributedCache<CustomerOrgGroup, Guid> customerOrgGroupCache,
IRepository<MedicalPackage, Guid> medicalPackageRepository,
IDistributedCache<MedicalPackage, Guid> medicalPackageCache)
IDistributedCache<MedicalPackage, Guid> medicalPackageCache,
IMemoryCache dataVersonCache)
{
_userCache = userCache;
_userRepository = userRepository;
@ -147,6 +152,7 @@ namespace Shentun.Peis
_customerOrgGroupCache = customerOrgGroupCache;
_medicalPackageRepository = medicalPackageRepository;
_medicalPackageCache = medicalPackageCache;
_dataVersonCache = dataVersonCache;
}
private async Task<IdentityUser> GetUserAsync(Guid id)
@ -262,7 +268,7 @@ namespace Shentun.Peis
}
}
private async Task<Sex> GetSexAsync(char id)
{
@ -820,5 +826,28 @@ namespace Shentun.Peis
return entity;
}
/// <summary>
/// 获取缓存数据版本
/// </summary>
/// <param name="dataName"></param>
/// <returns></returns>
public string GetDataVersonCache(string dataName)
{
return _dataVersonCache.Get<string>(dataName);
}
/// <summary>
/// 更新缓存数据版本
/// </summary>
/// <param name="dataName"></param>
/// <returns></returns>
public void SetDataVersonCache(string dataName, string versonValue)
{
_dataVersonCache.Set(dataName, versonValue);
}
}
}
Loading…
Cancel
Save