Browse Source

报表

基础数据新增、更新加缓存
bjmzak
wxd 2 years ago
parent
commit
10828d3f9d
  1. 5
      src/Shentun.Peis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs
  2. 4
      src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs
  3. 8
      src/Shentun.Peis.Application/DeviceTypes/DeviceTypeAppService.cs
  4. 8
      src/Shentun.Peis.Application/ForSexs/ForSexAppService.cs
  5. 24
      src/Shentun.Peis.Application/MyUser/MyUserAppService.cs
  6. 10
      src/Shentun.Peis.Application/Sexs/SexAppService.cs
  7. 33
      src/Shentun.Peis.Domain/DataHelper.cs
  8. 9
      src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs

5
src/Shentun.Peis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs

@ -193,6 +193,9 @@ namespace Shentun.Peis.CustomerOrgGroups
//修改明细价格,只修改价格不为0的
var detailList = (await _customerOrgGroupDetailRepository.GetQueryableAsync()).
Where(o => o.CustomerOrgGroupId == id && o.Price != 0).ToList();
if (detailList.Any())
{
var sumMoney = detailList.Sum(o => o.Amount * o.Price);
if (entity.Price == 0)
{
@ -237,7 +240,7 @@ namespace Shentun.Peis.CustomerOrgGroups
}
}
}
}
entity = await Repository.UpdateAsync(entity);
if (detailList.Count() > 0)

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

@ -99,7 +99,7 @@ namespace Shentun.Peis.CustomerReports
this._sumSuggestionContentRepository = sumSuggestionContentRepository;
this._customerOrgManager = customerOrgManager;
this._itemTypeRepository = itemTypeRepository;
_customerOrgReportManager = customerOrgReportManager;
this._customerOrgReportManager = customerOrgReportManager;
}
@ -952,7 +952,7 @@ namespace Shentun.Peis.CustomerReports
///// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("api/customerreport/getunitphysicalexaminationreportreduce")]
[HttpPost("api/customerreport/getunitphysicalexaminationreportexportword")]
public async Task<GetUnitPhysicalExaminationReportExportWordDto> GetUnitPhysicalExaminationReportExportWordAsync(GetUnitPhysicalExaminationReportExportWordRequestDto input)
{
if (input.CustomerOrgs.Count != 1)

8
src/Shentun.Peis.Application/DeviceTypes/DeviceTypeAppService.cs

@ -14,6 +14,7 @@ using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Shentun.Peis.Units;
using Microsoft.AspNetCore.Authorization;
using Volo.Abp.Caching;
namespace Shentun.Peis.DeviceTypes
{
@ -34,14 +35,17 @@ namespace Shentun.Peis.DeviceTypes
{
private readonly IRepository<IdentityUser, Guid> _userRepository;
private readonly DeviceTypeManager _manager;
private readonly IDistributedCache<DeviceType, Guid> _deviceTypeCache;
public DeviceTypeAppService(
IRepository<DeviceType, Guid> repository,
IRepository<IdentityUser, Guid> userRepository,
DeviceTypeManager manager)
DeviceTypeManager manager,
IDistributedCache<DeviceType, Guid> deviceTypeCache)
: base(repository)
{
_userRepository = userRepository;
_manager = manager;
_deviceTypeCache = deviceTypeCache;
}
/// <summary>
/// 获取通过主键
@ -118,6 +122,7 @@ namespace Shentun.Peis.DeviceTypes
var entity = await _manager.CreateAsync(createEntity);
entity = await Repository.InsertAsync(entity);
var dto = ObjectMapper.Map<DeviceType, DeviceTypeDto>(entity);
await _deviceTypeCache.SetAsync(entity.Id, entity);
return dto;
}
/// <summary>
@ -132,6 +137,7 @@ namespace Shentun.Peis.DeviceTypes
var sourceEntity = ObjectMapper.Map<UpdateDeviceTypeDto, DeviceType>(input);
await _manager.UpdateAsync(sourceEntity, entity);
entity = await Repository.UpdateAsync(entity);
await _deviceTypeCache.SetAsync(entity.Id, entity);
return ObjectMapper.Map<DeviceType, DeviceTypeDto>(entity);
}
/// <summary>

8
src/Shentun.Peis.Application/ForSexs/ForSexAppService.cs

@ -9,6 +9,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories;
namespace Shentun.Peis.ForSexs
@ -22,13 +23,15 @@ namespace Shentun.Peis.ForSexs
{
private readonly IRepository<ForSex> _forSexRepository;
private readonly ForSexManager _manager;
private readonly IDistributedCache<ForSex, char> _forSexCache;
public ForSexAppService(
IRepository<ForSex> forSexRepository,
ForSexManager manager
)
ForSexManager manager,
IDistributedCache<ForSex, char> forSexCache)
{
this._forSexRepository = forSexRepository;
this._manager = manager;
this._forSexCache = forSexCache;
}
@ -45,6 +48,7 @@ namespace Shentun.Peis.ForSexs
var sourceEntity = ObjectMapper.Map<UpdateForSexDto, ForSex>(input);
await _manager.UpdateAsync(sourceEntity, entity);
entity = await _forSexRepository.UpdateAsync(entity);
await _forSexCache.SetAsync(entity.Id, entity);
return ObjectMapper.Map<ForSex, ForSexDto>(entity);
}

24
src/Shentun.Peis.Application/MyUser/MyUserAppService.cs

@ -23,6 +23,7 @@ using Volo.Abp;
using Volo.Abp.Account;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Caching;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Repositories;
@ -54,9 +55,9 @@ namespace Shentun.Peis.MyUser
private readonly IRepository<OrganizationUnit, Guid> _organizationUnitRepository;
//private readonly IRepository<IdentityUserOrganizationUnit> _identityUserOrganizationUnitRepository;
private readonly CurrentUser _currentUser;
private readonly IDistributedCache<IdentityUser, Guid> _userCache;
public MyUserAppService(
IRepository<IdentityUser, Guid> identityUserRepository,
IdentityUserManager userManager,
IIdentityUserRepository userRepository,
@ -69,7 +70,8 @@ namespace Shentun.Peis.MyUser
IHttpClientFactory httpClientFactory,
IConfiguration configuration,
//IRepository<IdentityUserOrganizationUnit> identityUserOrganizationUnitRepository,
CurrentUser currentUser) :
CurrentUser currentUser,
IDistributedCache<IdentityUser, Guid> userCache) :
base(userManager,
userRepository,
roleRepository,
@ -87,6 +89,7 @@ namespace Shentun.Peis.MyUser
this._organizationUnitRepository = organizationUnitRepository;
// this._identityUserOrganizationUnitRepository = identityUserOrganizationUnitRepository;
this._currentUser = currentUser;
_userCache = userCache;
}
@ -174,7 +177,7 @@ namespace Shentun.Peis.MyUser
/// <returns></returns>
[Authorize(PeisPermissions.Users.Create)]
[HttpPost("api/identity/users/create")]
public Task<IdentityUserDto> CreateAsync(IdentityUserCreateNoEmailDto input)
public async Task<IdentityUserDto> CreateAsync(IdentityUserCreateNoEmailDto input)
{
IdentityUserCreateDto newinput = new IdentityUserCreateDto
{
@ -188,7 +191,11 @@ namespace Shentun.Peis.MyUser
Surname = input.Surname,
UserName = input.UserName
};
return base.CreateAsync(newinput);
var entityDto = await base.CreateAsync(newinput);
var entity = await _identityUserRepository.GetAsync(entityDto.Id);
await _userCache.SetAsync(entityDto.Id, entity);
return entityDto;
}
/// <summary>
@ -241,9 +248,14 @@ namespace Shentun.Peis.MyUser
/// <returns></returns>
[Authorize(PeisPermissions.Users.Edit)]
[HttpPost("api/identity/users/update")]
public override Task<IdentityUserDto> UpdateAsync(Guid id, IdentityUserUpdateDto input)
public override async Task<IdentityUserDto> UpdateAsync(Guid id, IdentityUserUpdateDto input)
{
return base.UpdateAsync(id, input);
var entityDto = await base.UpdateAsync(id, input);
var entity = await _identityUserRepository.GetAsync(id);
await _userCache.SetAsync(id, entity);
return entityDto;
}
/// <summary>

10
src/Shentun.Peis.Application/Sexs/SexAppService.cs

@ -15,6 +15,7 @@ using TencentCloud.Cwp.V20180228.Models;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.ObjectMapping;
@ -31,11 +32,17 @@ namespace Shentun.Peis.Sexs
{
private readonly IRepository<Sex> _repository;
private readonly SexManager _manager;
private readonly IDistributedCache<Sex, char> _sexCache;
public SexAppService(IRepository<Sex> repository, SexManager manager)
public SexAppService(
IRepository<Sex> repository,
SexManager manager,
IDistributedCache<Sex, char> sexCache
)
{
this._repository = repository;
this._manager = manager;
this._sexCache = sexCache;
}
@ -64,6 +71,7 @@ namespace Shentun.Peis.Sexs
var sourceEntity = ObjectMapper.Map<UpdateSexDto, Sex>(input);
await _manager.UpdateAsync(sourceEntity, entity);
entity = await _repository.UpdateAsync(entity);
await _sexCache.SetAsync(entity.Id, entity);
return ObjectMapper.Map<Sex, SexDto>(entity);
}

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

@ -42,25 +42,52 @@ namespace Shentun.Peis
}
/// <summary>
/// 生成历次综述医生小结
/// </summary>
/// <param name="SumSummaryHeaders"></param>
/// <returns></returns>
public static string SetSumSummarysInReport(List<SumSummaryHeader> SumSummaryHeaders)
{
StringBuilder msg = new StringBuilder();
if (SumSummaryHeaders.Count > 0)
{
foreach (var item in SumSummaryHeaders)
{
msg.Append("* " + item.SummaryTitle + ":" + "\n");
if (item.SumSummaryContents.Count > 0)
{
var SumSummaryContents = item.SumSummaryContents.ToList();
foreach (var item2 in SumSummaryContents)
{
msg.Append("(" + SumSummaryContents.IndexOf(item2) + 1 + ")" + item2.SummaryContent + "\n");
}
}
}
}
return msg.ToString();
}
/// <summary>
/// 生成总诊建议
/// </summary>
/// <param name="SumSummaryHeaders"></param>
/// <returns></returns>
public static string SetSumSuggestion(List<SumSuggestionHeader> SumSuggestionHeaders)
public static string SetSumSuggestionInReport(List<SumSuggestionHeader> SumSuggestionHeaders)
{
StringBuilder msg = new StringBuilder();
if (SumSuggestionHeaders.Count > 0)
{
foreach (var item in SumSuggestionHeaders)
{
msg.Append("* " + item.SumSuggestionContents + ":" + "<br/>");
msg.Append("* " + item.SuggestionTitle + ":" + "\n");
if (item.SumSuggestionContents.Count > 0)
{
var SumSuggestionContents = item.SumSuggestionContents.ToList();
foreach (var item2 in SumSuggestionContents)
{
msg.Append("(" + SumSuggestionContents.IndexOf(item2) + 1 + ")" + item2.SuggestionContent + "<br/>");
msg.Append("(" + SumSuggestionContents.IndexOf(item2) + 1 + ")" + item2.SuggestionContent + "\n");
}
}
}

9
src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs

@ -2031,7 +2031,10 @@ namespace Shentun.Peis.ReportTemplates
Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) + "%" : "0%",
FemaleAsbitemCheckRatio = documentData.CheckedDetail.FemaleNumber != 0 ?
Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2) + "%" : "0%",
TotalAsbitemCheckRatio = Math.Round((Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) + Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2)) / 2, 2) + "%"
TotalAsbitemCheckRatio = Math.Round(
(documentData.CheckedDetail.MaleNumber != 0 ? Math.Round(s.Where(m => m.SexId == SexFlag.Male).Count() * 100M / documentData.CheckedDetail.MaleNumber, 2) : 0
+ documentData.CheckedDetail.FemaleNumber != 0 ? Math.Round(s.Where(m => m.SexId == SexFlag.Female).Count() * 100M / documentData.CheckedDetail.FemaleNumber, 2) : 0) / 2, 2
) + "%"
});
documentData.MedicalItemExamineSituations = medicalItemExamineSituations.ToList();
@ -2103,7 +2106,7 @@ namespace Shentun.Peis.ReportTemplates
PatientName = s.FirstOrDefault().PatientName,
PatientNo = s.FirstOrDefault().PatientNo,
SexName = s.FirstOrDefault().SexName,
MedicalResult = DataHelper.SetSumSummarys(s.Select(ss => ss.b).ToList())
MedicalResult = DataHelper.SetSumSummarysInReport(s.Select(ss => ss.b).ToList())
});
documentData.MedicalResultSummarys = medicalResultSummarys.ToList();
@ -2246,7 +2249,7 @@ namespace Shentun.Peis.ReportTemplates
var medicalTenAbnormalResults = query.GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult
{
DiagnosisName = s.FirstOrDefault().DiagnosisName,
DiagnosisSuggestion = DataHelper.SetSumSuggestion(s.Select(ss => ss.ac).ToList())
DiagnosisSuggestion = DataHelper.SetSumSuggestionInReport(s.Select(ss => ss.ac).ToList())
});
documentData.MedicalTenAbnormalResults = medicalTenAbnormalResults.ToList();

Loading…
Cancel
Save