From 10828d3f9d6c7bef3c07037fbbf1f57e4bb05353 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Thu, 11 Apr 2024 10:26:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A5=E8=A1=A8=20=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=96=B0=E5=A2=9E=E3=80=81=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=8A=A0=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CustomerOrgGroupAppService.cs | 75 ++++++++++--------- .../CustomerReportAppService.cs | 4 +- .../DeviceTypes/DeviceTypeAppService.cs | 8 +- .../ForSexs/ForSexAppService.cs | 10 ++- .../MyUser/MyUserAppService.cs | 24 ++++-- .../Sexs/SexAppService.cs | 10 ++- src/Shentun.Peis.Domain/DataHelper.cs | 33 +++++++- .../CustomerOrgReportManager.cs | 9 ++- 8 files changed, 118 insertions(+), 55 deletions(-) diff --git a/src/Shentun.Peis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs b/src/Shentun.Peis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs index afb42b4..bb895d8 100644 --- a/src/Shentun.Peis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs +++ b/src/Shentun.Peis.Application/CustomerOrgGroups/CustomerOrgGroupAppService.cs @@ -145,7 +145,7 @@ namespace Shentun.Peis.CustomerOrgGroups MedicalTimes = s.CustomerOrgRegister.MedicalTimes, CustomerOrgRegisterId = s.CustomerOrgRegisterId }).ToList(); - + return new PagedResultDto(totalCount, entdto); @@ -192,57 +192,60 @@ namespace Shentun.Peis.CustomerOrgGroups await _manager.UpdateAsync(sourceEntity, entity); //修改明细价格,只修改价格不为0的 var detailList = (await _customerOrgGroupDetailRepository.GetQueryableAsync()). - Where(o=>o.CustomerOrgGroupId == id && o.Price != 0).ToList(); - var sumMoney = detailList.Sum(o=>o.Amount * o.Price); - if (entity.Price == 0) - { - foreach (var item in detailList) - { - item.Price = 0; - } - } - else + Where(o => o.CustomerOrgGroupId == id && o.Price != 0).ToList(); + + if (detailList.Any()) { - //按原来的比例重新计算 - if (entity.Price != sumMoney) + var sumMoney = detailList.Sum(o => o.Amount * o.Price); + if (entity.Price == 0) { - var percentage = entity.Price/sumMoney; foreach (var item in detailList) { - item.Price = Math.Round(percentage * item.Price,2); + item.Price = 0; } - //自动分摊小数 - var newSumMoney = detailList.Sum(o => o.Amount * o.Price); - - var differenceMoney = entity.Price - newSumMoney; - if (differenceMoney!=0) + } + else + { + //按原来的比例重新计算 + if (entity.Price != sumMoney) { + var percentage = entity.Price / sumMoney; foreach (var item in detailList) { - //不允许算出负数,并且必须能反算出正确的价格 - if( (item.Price*item.Amount + differenceMoney) == - (item.Price + Math.Round((differenceMoney / item.Amount),2)) * item.Amount && - (item.Price + Math.Round((differenceMoney / item.Amount),2)) > 0 ) + item.Price = Math.Round(percentage * item.Price, 2); + } + //自动分摊小数 + var newSumMoney = detailList.Sum(o => o.Amount * o.Price); + + var differenceMoney = entity.Price - newSumMoney; + if (differenceMoney != 0) + { + foreach (var item in detailList) { - item.Price = item.Price + Math.Round((differenceMoney / item.Amount),2); - break; + //不允许算出负数,并且必须能反算出正确的价格 + if ((item.Price * item.Amount + differenceMoney) == + (item.Price + Math.Round((differenceMoney / item.Amount), 2)) * item.Amount && + (item.Price + Math.Round((differenceMoney / item.Amount), 2)) > 0) + { + item.Price = item.Price + Math.Round((differenceMoney / item.Amount), 2); + break; + } + } - } - } - differenceMoney = entity.Price - detailList.Sum(o => o.Amount * o.Price); - if(differenceMoney != 0) - { - throw new UserFriendlyException("无法反算出组合项目价格"); + differenceMoney = entity.Price - detailList.Sum(o => o.Amount * o.Price); + if (differenceMoney != 0) + { + throw new UserFriendlyException("无法反算出组合项目价格"); + } } } } - - + entity = await Repository.UpdateAsync(entity); if (detailList.Count() > 0) { - await _customerOrgGroupDetailRepository.UpdateManyAsync(detailList); + await _customerOrgGroupDetailRepository.UpdateManyAsync(detailList); } return ObjectMapper.Map(entity); } @@ -256,7 +259,7 @@ namespace Shentun.Peis.CustomerOrgGroups await _manager.CheckAndDeleteAsync(id); } - + /// /// 修改排序 置顶,置底 diff --git a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs b/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs index a382ff0..de250d7 100644 --- a/src/Shentun.Peis.Application/CustomerReports/CustomerReportAppService.cs +++ b/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 ///// /// /// - [HttpPost("api/customerreport/getunitphysicalexaminationreportreduce")] + [HttpPost("api/customerreport/getunitphysicalexaminationreportexportword")] public async Task GetUnitPhysicalExaminationReportExportWordAsync(GetUnitPhysicalExaminationReportExportWordRequestDto input) { if (input.CustomerOrgs.Count != 1) diff --git a/src/Shentun.Peis.Application/DeviceTypes/DeviceTypeAppService.cs b/src/Shentun.Peis.Application/DeviceTypes/DeviceTypeAppService.cs index 8a4dae2..aa74fb4 100644 --- a/src/Shentun.Peis.Application/DeviceTypes/DeviceTypeAppService.cs +++ b/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 _userRepository; private readonly DeviceTypeManager _manager; + private readonly IDistributedCache _deviceTypeCache; public DeviceTypeAppService( IRepository repository, IRepository userRepository, - DeviceTypeManager manager) + DeviceTypeManager manager, + IDistributedCache deviceTypeCache) : base(repository) { _userRepository = userRepository; _manager = manager; + _deviceTypeCache = deviceTypeCache; } /// /// 获取通过主键 @@ -118,6 +122,7 @@ namespace Shentun.Peis.DeviceTypes var entity = await _manager.CreateAsync(createEntity); entity = await Repository.InsertAsync(entity); var dto = ObjectMapper.Map(entity); + await _deviceTypeCache.SetAsync(entity.Id, entity); return dto; } /// @@ -132,6 +137,7 @@ namespace Shentun.Peis.DeviceTypes var sourceEntity = ObjectMapper.Map(input); await _manager.UpdateAsync(sourceEntity, entity); entity = await Repository.UpdateAsync(entity); + await _deviceTypeCache.SetAsync(entity.Id, entity); return ObjectMapper.Map(entity); } /// diff --git a/src/Shentun.Peis.Application/ForSexs/ForSexAppService.cs b/src/Shentun.Peis.Application/ForSexs/ForSexAppService.cs index 756c0b0..9723667 100644 --- a/src/Shentun.Peis.Application/ForSexs/ForSexAppService.cs +++ b/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 _forSexRepository; private readonly ForSexManager _manager; + private readonly IDistributedCache _forSexCache; public ForSexAppService( - IRepository forSexRepository, - ForSexManager manager - ) + IRepository forSexRepository, + ForSexManager manager, + IDistributedCache forSexCache) { this._forSexRepository = forSexRepository; this._manager = manager; + this._forSexCache = forSexCache; } @@ -45,6 +48,7 @@ namespace Shentun.Peis.ForSexs var sourceEntity = ObjectMapper.Map(input); await _manager.UpdateAsync(sourceEntity, entity); entity = await _forSexRepository.UpdateAsync(entity); + await _forSexCache.SetAsync(entity.Id, entity); return ObjectMapper.Map(entity); } diff --git a/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs b/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs index 3ca28ad..ece3684 100644 --- a/src/Shentun.Peis.Application/MyUser/MyUserAppService.cs +++ b/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 _organizationUnitRepository; //private readonly IRepository _identityUserOrganizationUnitRepository; private readonly CurrentUser _currentUser; + private readonly IDistributedCache _userCache; public MyUserAppService( - IRepository identityUserRepository, IdentityUserManager userManager, IIdentityUserRepository userRepository, @@ -69,7 +70,8 @@ namespace Shentun.Peis.MyUser IHttpClientFactory httpClientFactory, IConfiguration configuration, //IRepository identityUserOrganizationUnitRepository, - CurrentUser currentUser) : + CurrentUser currentUser, + IDistributedCache 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 /// [Authorize(PeisPermissions.Users.Create)] [HttpPost("api/identity/users/create")] - public Task CreateAsync(IdentityUserCreateNoEmailDto input) + public async Task 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; } /// @@ -241,9 +248,14 @@ namespace Shentun.Peis.MyUser /// [Authorize(PeisPermissions.Users.Edit)] [HttpPost("api/identity/users/update")] - public override Task UpdateAsync(Guid id, IdentityUserUpdateDto input) + public override async Task 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; + } /// diff --git a/src/Shentun.Peis.Application/Sexs/SexAppService.cs b/src/Shentun.Peis.Application/Sexs/SexAppService.cs index 7164e8c..fd87298 100644 --- a/src/Shentun.Peis.Application/Sexs/SexAppService.cs +++ b/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 _repository; private readonly SexManager _manager; + private readonly IDistributedCache _sexCache; - public SexAppService(IRepository repository, SexManager manager) + public SexAppService( + IRepository repository, + SexManager manager, + IDistributedCache sexCache + ) { this._repository = repository; this._manager = manager; + this._sexCache = sexCache; } @@ -64,6 +71,7 @@ namespace Shentun.Peis.Sexs var sourceEntity = ObjectMapper.Map(input); await _manager.UpdateAsync(sourceEntity, entity); entity = await _repository.UpdateAsync(entity); + await _sexCache.SetAsync(entity.Id, entity); return ObjectMapper.Map(entity); } diff --git a/src/Shentun.Peis.Domain/DataHelper.cs b/src/Shentun.Peis.Domain/DataHelper.cs index f3f70b1..9cff380 100644 --- a/src/Shentun.Peis.Domain/DataHelper.cs +++ b/src/Shentun.Peis.Domain/DataHelper.cs @@ -42,25 +42,52 @@ namespace Shentun.Peis } + /// + /// 生成历次综述医生小结 + /// + /// + /// + public static string SetSumSummarysInReport(List 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(); + } + + /// /// 生成总诊建议 /// /// /// - public static string SetSumSuggestion(List SumSuggestionHeaders) + public static string SetSumSuggestionInReport(List SumSuggestionHeaders) { StringBuilder msg = new StringBuilder(); if (SumSuggestionHeaders.Count > 0) { foreach (var item in SumSuggestionHeaders) { - msg.Append("* " + item.SumSuggestionContents + ":" + "
"); + 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 + "
"); + msg.Append("(" + SumSuggestionContents.IndexOf(item2) + 1 + ")" + item2.SuggestionContent + "\n"); } } } diff --git a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs index 4a111b5..9b3e580 100644 --- a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs +++ b/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();