From e21bfbc95e156b2a4e58eca3cf064d1c0211c5dd Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Fri, 9 Jan 2026 11:27:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=84=E5=90=88=E9=A1=B9=E7=9B=AE=E6=8A=98?= =?UTF-8?q?=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AppointRegisterAsbitemDto.cs | 5 + .../Asbitems/BasicAsbitemDto.cs | 5 + .../AppointPatientRegisterAppService.cs | 22 +++- .../Asbitems/AsbitemAppService.cs | 1 + .../MedicalPackageDetailAppService.cs | 108 +++++++++++------- .../RegisterCheckAsbitemAppService.cs | 3 +- .../CustomerOrgGroupDetailRepository.cs | 6 +- 7 files changed, 101 insertions(+), 49 deletions(-) diff --git a/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs index 2fa9e878..5263860d 100644 --- a/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/AppointRegisterAsbitems/AppointRegisterAsbitemDto.cs @@ -59,5 +59,10 @@ namespace Shentun.Peis.AppointRegisterAsbitems public int ItemTypeDisplayOrder { get; set; } public int DisplayOrder { get; set; } + + /// + /// 是否折扣 默认Y + /// + public char IsDiscount { get; set; } } } diff --git a/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs b/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs index a484155b..ab853b80 100644 --- a/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs +++ b/src/Shentun.Peis.Application.Contracts/Asbitems/BasicAsbitemDto.cs @@ -76,5 +76,10 @@ namespace Shentun.Peis.Asbitems public int DisplayOrder { get; set; } + + /// + /// 是否折扣 默认Y + /// + public char IsDiscount { get; set; } } } diff --git a/src/Shentun.Peis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs b/src/Shentun.Peis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs index 30bdf74e..5f5d598c 100644 --- a/src/Shentun.Peis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs +++ b/src/Shentun.Peis.Application/AppointPatientRegisters/AppointPatientRegisterAppService.cs @@ -35,6 +35,7 @@ namespace Shentun.Peis.AppointPatientRegisters private readonly IRepository _patientRepository; private readonly IRepository _registerCheckRepository; private readonly IRepository _registerCheckAsbitemRepository; + private readonly IRepository _asbitemRepository; private readonly CacheService _cacheService; public AppointPatientRegisterAppService( @@ -43,7 +44,8 @@ namespace Shentun.Peis.AppointPatientRegisters IRepository patientRepository, IRepository registerCheckRepository, IRepository registerCheckAsbitemRepository, - CacheService cacheService) + CacheService cacheService, + IRepository asbitemRepository) { _thirdInterfaceRepository = thirdInterfaceRepository; _patientRegisterRepository = patientRegisterRepository; @@ -51,6 +53,7 @@ namespace Shentun.Peis.AppointPatientRegisters _registerCheckRepository = registerCheckRepository; _registerCheckAsbitemRepository = registerCheckAsbitemRepository; _cacheService = cacheService; + _asbitemRepository = asbitemRepository; } /// /// 获取网上预约数据 @@ -114,6 +117,23 @@ namespace Shentun.Peis.AppointPatientRegisters var pluginsOut = await Utilities.ReflectionHelper.InvokeAsync>(assemblyName, className, [thirdInterface.Id], "GetAppointRegisterAsbitemListByIdAsync", objects); + + if (pluginsOut.Any()) + { + var asbitemList = await _asbitemRepository.GetListAsync(m => m.IsDiscount == 'N'); + foreach (var item in pluginsOut) + { + if (asbitemList.Count(c => c.Id == item.AsbitemId) > 0) + { + item.IsDiscount = 'N'; + } + else + { + item.IsDiscount = 'Y'; + } + } + } + return pluginsOut; } diff --git a/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs b/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs index 3f655709..35edf51c 100644 --- a/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs +++ b/src/Shentun.Peis.Application/Asbitems/AsbitemAppService.cs @@ -202,6 +202,7 @@ namespace Shentun.Peis.Asbitems SimpleCode = s.SimpleCode, ForPregnantFlag = s.ForPregnantFlag, MaritalStatusId = s.MaritalStatusId, + IsDiscount = s.IsDiscount }).OrderBy(o => o.DisplayOrder).ToList(); return entdto; diff --git a/src/Shentun.Peis.Application/MedicalPackageDetails/MedicalPackageDetailAppService.cs b/src/Shentun.Peis.Application/MedicalPackageDetails/MedicalPackageDetailAppService.cs index 17302c32..5e5a2aed 100644 --- a/src/Shentun.Peis.Application/MedicalPackageDetails/MedicalPackageDetailAppService.cs +++ b/src/Shentun.Peis.Application/MedicalPackageDetails/MedicalPackageDetailAppService.cs @@ -29,12 +29,25 @@ namespace Shentun.Peis.MedicalPackageDetails private readonly IRepository _repository; private readonly IRepository _userRepository; private readonly MedicalPackageDetailManager _manager; - - public MedicalPackageDetailAppService(IRepository repository, IRepository userRepository, MedicalPackageDetailManager manager) + private readonly IRepository _asbitemRepository; + private readonly IRepository _itemTypeRepository; + private readonly CacheService _cacheService; + + + public MedicalPackageDetailAppService( + IRepository repository, + IRepository userRepository, + MedicalPackageDetailManager manager, + IRepository asbitemRepository, + IRepository itemTypeRepository, + CacheService cacheService) { this._repository = repository; this._userRepository = userRepository; this._manager = manager; + _asbitemRepository = asbitemRepository; + _itemTypeRepository = itemTypeRepository; + _cacheService = cacheService; } ///// @@ -110,51 +123,58 @@ namespace Shentun.Peis.MedicalPackageDetails [HttpPost("api/app/medicalpackagedetail/getmedicalpackageinasbitem")] public async Task> GetMedicalPackageInAsbitemAsync(MedicalPackageInAsbitemDto input) { - - var entlist = (await _repository.GetDbSetAsync()).Include(c => c.Asbitem) - .Where(m => m.MedicalPackageId == input.MedicalPackageId).ToList(); - - var userList = await _userRepository.GetListAsync(); - - var entdto = entlist.Select(s => new MedicalPackageDetailDto + var query = from medicalPackageDetail in await _repository.GetQueryableAsync() + join asbitem in await _asbitemRepository.GetQueryableAsync() on medicalPackageDetail.AsbitemId equals asbitem.Id + join itemType in await _itemTypeRepository.GetQueryableAsync() on asbitem.ItemTypeId equals itemType.Id + where medicalPackageDetail.MedicalPackageId == input.MedicalPackageId + select new + { + itemType, + asbitem, + medicalPackageDetail + }; + + var entListDto = query.ToList().Select(s => new MedicalPackageDetailDto { - ClinicalMeaning = s.Asbitem.ClinicalMeaning, - CreationTime = s.Asbitem.CreationTime, - CreatorId = s.Asbitem.CreatorId, - DefaultResult = s.Asbitem.DefaultResult, - DeviceTypeId = s.Asbitem.DeviceTypeId, - DiagnosisFunction = s.Asbitem.DiagnosisFunction, - DisplayName = s.Asbitem.DisplayName, - DisplayOrder = s.Asbitem.DisplayOrder, - ForSexId = s.Asbitem.ForSexId, - Id = s.Asbitem.Id, - //InvoiceItemTypeId = s.Asbitem.InvoiceItemTypeId, - IsActive = s.Asbitem.IsActive, - IsBeforeEat = s.Asbitem.IsBeforeEat, - IsCheck = s.Asbitem.IsCheck, - IsContinueProcess = s.Asbitem.IsContinueProcess, - IsDiagnosisFunction = s.Asbitem.IsDiagnosisFunction, - IsItemResultMerger = s.Asbitem.IsItemResultMerger, - IsPictureRotate = s.Asbitem.IsPictureRotate, - ItemTypeId = s.Asbitem.ItemTypeId, - LastModificationTime = s.Asbitem.LastModificationTime, - LastModifierId = s.Asbitem.LastModifierId, - Price = s.Asbitem.Price, - QueueTime = s.Asbitem.QueueTime, - ShortName = s.Asbitem.ShortName, - SimpleCode = s.Asbitem.SimpleCode, - AsbitemMoney = s.Amount * s.Asbitem.Price, - Discount = s.Asbitem.Price == 0 ? 100 : Math.Round(s.Price * 100 / s.Asbitem.Price, 2), - MedicalPackageDetailAmount = s.Amount, - MedicalPackageDetailMoney = s.Amount * s.Price, - MedicalPackageDetailPrice = s.Price, - CreatorName = EntityHelper.GetSurnameNoSql(userList, s.Asbitem.CreatorId), - LastModifierName = EntityHelper.GetSurnameNoSql(userList, s.Asbitem.LastModifierId), - MaritalStatusId = s.Asbitem.MaritalStatusId, - IsDiscount = s.Asbitem.IsDiscount + ClinicalMeaning = s.asbitem.ClinicalMeaning, + CreationTime = s.asbitem.CreationTime, + CreatorId = s.asbitem.CreatorId, + DefaultResult = s.asbitem.DefaultResult, + DeviceTypeId = s.asbitem.DeviceTypeId, + DiagnosisFunction = s.asbitem.DiagnosisFunction, + DisplayName = (s.itemType.DisplayOrder * 3000) + s.asbitem.DisplayName, + DisplayOrder = s.asbitem.DisplayOrder, + ForSexId = s.asbitem.ForSexId, + Id = s.asbitem.Id, + //InvoiceItemTypeId = s.asbitem.InvoiceItemTypeId, + IsActive = s.asbitem.IsActive, + IsBeforeEat = s.asbitem.IsBeforeEat, + IsCheck = s.asbitem.IsCheck, + IsContinueProcess = s.asbitem.IsContinueProcess, + IsDiagnosisFunction = s.asbitem.IsDiagnosisFunction, + IsItemResultMerger = s.asbitem.IsItemResultMerger, + IsPictureRotate = s.asbitem.IsPictureRotate, + ItemTypeId = s.asbitem.ItemTypeId, + LastModificationTime = s.asbitem.LastModificationTime, + LastModifierId = s.asbitem.LastModifierId, + Price = s.asbitem.Price, + QueueTime = s.asbitem.QueueTime, + ShortName = s.asbitem.ShortName, + SimpleCode = s.asbitem.SimpleCode, + AsbitemMoney = s.medicalPackageDetail.Amount * s.asbitem.Price, + Discount = s.asbitem.Price == 0 ? 100 : Math.Round(s.medicalPackageDetail.Price * 100 / s.asbitem.Price, 2), + MedicalPackageDetailAmount = s.medicalPackageDetail.Amount, + MedicalPackageDetailMoney = s.medicalPackageDetail.Amount * s.medicalPackageDetail.Price, + MedicalPackageDetailPrice = s.medicalPackageDetail.Price, + CreatorName = _cacheService.GetSurnameAsync(s.asbitem.CreatorId).GetAwaiter().GetResult(), + LastModifierName = _cacheService.GetSurnameAsync(s.asbitem.LastModifierId).GetAwaiter().GetResult(), + MaritalStatusId = s.asbitem.MaritalStatusId, + IsDiscount = s.asbitem.IsDiscount }).ToList(); - return entdto; + + + return entListDto; } diff --git a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs index 0fc2e08b..daa9c47d 100644 --- a/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs +++ b/src/Shentun.Peis.Application/RegisterCheckAsbitems/RegisterCheckAsbitemAppService.cs @@ -305,7 +305,8 @@ namespace Shentun.Peis.RegisterAsbitems StandardPrice = s.StandardPrice, CreatorName = _cacheService.GetSurnameAsync(s.CreatorId).GetAwaiter().GetResult(), LastModifierName = _cacheService.GetSurnameAsync(s.LastModifierId).GetAwaiter().GetResult(), - DisplayOrder = s.Asbitem.ItemType.DisplayOrder * 3000 + s.Asbitem.DisplayOrder + DisplayOrder = s.Asbitem.ItemType.DisplayOrder * 3000 + s.Asbitem.DisplayOrder, + IsDiscount = s.Asbitem.IsDiscount }).ToList(); //设置GroupPackageId diff --git a/src/Shentun.Peis.EntityFrameworkCore/CustomerOrgGroupDetails/CustomerOrgGroupDetailRepository.cs b/src/Shentun.Peis.EntityFrameworkCore/CustomerOrgGroupDetails/CustomerOrgGroupDetailRepository.cs index a6ab0ef2..b90e400d 100644 --- a/src/Shentun.Peis.EntityFrameworkCore/CustomerOrgGroupDetails/CustomerOrgGroupDetailRepository.cs +++ b/src/Shentun.Peis.EntityFrameworkCore/CustomerOrgGroupDetails/CustomerOrgGroupDetailRepository.cs @@ -38,6 +38,7 @@ namespace Shentun.Peis.CustomerOrgGroupDetails var query = from a in dbContext.CustomerOrgGroupDetails join b in dbContext.Asbitems on a.AsbitemId equals b.Id + join itemType in dbContext.ItemTypes on b.ItemTypeId equals itemType.Id join c in userQueryable on a.CreatorId equals c.Id into cc from ac in cc.DefaultIfEmpty() join d in userQueryable on a.LastModifierId equals d.Id into dd @@ -59,9 +60,8 @@ namespace Shentun.Peis.CustomerOrgGroupDetails DeviceTypeId = b.DeviceTypeId, DiagnosisFunction = b.DiagnosisFunction, DisplayName = b.DisplayName, - DisplayOrder = b.DisplayOrder, + DisplayOrder = (itemType.DisplayOrder * 3000) + b.DisplayOrder, ForSexId = b.ForSexId, - //InvoiceItemTypeId = b.InvoiceItemTypeId, IsActive = b.IsActive, IsBeforeEat = b.IsBeforeEat, IsCheck = b.IsCheck, @@ -83,7 +83,7 @@ namespace Shentun.Peis.CustomerOrgGroupDetails MaritalStatusId = b.MaritalStatusId }; - return query.ToList(); + return query.OrderBy(o => o.DisplayOrder).ToList(); }