Merge branch 'Test_IRC_Net8' of http://192.168.3.68:2000/XCKJ/irc-netcore-api into Test_IRC_Net8

IRC_NewDev
he 2024-03-08 09:58:47 +08:00
commit 3c60dd9ae8
3 changed files with 42 additions and 13 deletions

View File

@ -3,19 +3,22 @@ using IRaCIS.Application.Contracts;
using IRaCIS.Core.Infra.EFCore;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Infrastructure;
using Microsoft.Data.Sqlite;
namespace IRaCIS.Application.Services
{
[ ApiExplorerSettings(GroupName = "Institution")]
[ApiExplorerSettings(GroupName = "Institution")]
public class HospitalService : BaseService, IHospitalService
{
private readonly IRepository<Hospital> _hospitalRepository;
private readonly IRepository<Doctor> _doctorRepository;
private readonly IRepository<Site> _siteRepository;
public HospitalService(IRepository<Hospital> hospitalRepository, IRepository<Doctor> doctorRepository)
public HospitalService(IRepository<Hospital> hospitalRepository, IRepository<Doctor> doctorRepository, IRepository<Site> siteRepository)
{
_hospitalRepository = hospitalRepository;
this._doctorRepository = doctorRepository;
_doctorRepository = doctorRepository;
_siteRepository = siteRepository;
}
/// <summary> 获取所有医院列表 </summary>
@ -38,15 +41,26 @@ namespace IRaCIS.Application.Services
var exp1 = new EntityVerifyExp<Hospital>()
{
VerifyExp = x => x.SiteId == hospitalCommand.SiteId && hospitalCommand.SiteId != null,
//---已经存在同名的医院,请确认
//---当前中心已经添加到其他医院了
VerifyMsg = _localizer["Hospital_SiteAdded"]
};
var hospital = await _hospitalRepository.InsertOrUpdateAsync(hospitalCommand, true, exp,exp1);
var hospital = await _hospitalRepository.InsertOrUpdateAsync(hospitalCommand, true, exp, exp1);
//手动解绑医院与site的关系
if (hospitalCommand.SiteId == null && hospital.SiteId != null)
{
await _siteRepository.BatchUpdateNoTrackingAsync(t => t.Id == hospital.SiteId, u => new Site() { HospitalId = null });
}
//手动绑
if (hospitalCommand.SiteId != null)
{
await _siteRepository.BatchUpdateNoTrackingAsync(t => t.Id == hospitalCommand.SiteId, u => new Site() { HospitalId = hospital.Id});
}
return ResponseOutput.Ok(hospital.Id.ToString());
}
@ -69,12 +83,12 @@ namespace IRaCIS.Application.Services
/// <summary> 分页获取医院列表 </summary>
[HttpPost]
public async Task<PageOutput<HospitalDTO>> GetHospitalPageList(HospitalQueryDTO hospitalSearchModel)
public async Task<PageOutput<HospitalDTO>> GetHospitalPageList(HospitalQueryDTO hospitalSearchModel)
{
var hospitalQueryable =
_hospitalRepository
.WhereIf(hospitalSearchModel.HospitalName!=null, t => t.HospitalName.Contains(hospitalSearchModel.HospitalName!) || t.HospitalNameCN.Contains(hospitalSearchModel.HospitalName!))
.WhereIf(hospitalSearchModel.HospitalName != null, t => t.HospitalName.Contains(hospitalSearchModel.HospitalName!) || t.HospitalNameCN.Contains(hospitalSearchModel.HospitalName!))
.WhereIf(hospitalSearchModel.City != null, t => t.City.Contains(hospitalSearchModel.City!) || t.HospitalNameCN.Contains(hospitalSearchModel.City!))
.WhereIf(hospitalSearchModel.Province != null, t => t.Province.Contains(hospitalSearchModel.Province!) || t.HospitalNameCN.Contains(hospitalSearchModel.Province!))
.ProjectTo<HospitalDTO>(_mapper.ConfigurationProvider);

View File

@ -4,6 +4,7 @@ using IRaCIS.Core.Infra.EFCore;
using Microsoft.AspNetCore.Mvc;
using IRaCIS.Core.Domain.Share;
using Medallion.Threading;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Application.Services
{
@ -13,12 +14,14 @@ namespace IRaCIS.Application.Services
private readonly IRepository<Site> _siteRepository;
private readonly IRepository<TrialSiteUser> _trialSiteUserRepository;
private readonly IDistributedLockProvider _distributedLockProvider;
private readonly IRepository<Hospital> _hospitalRepository;
public SiteService(IRepository<Site> siteRepository, IRepository<TrialSiteUser> trialSiteUserRepository, IDistributedLockProvider distributedLockProvider)
public SiteService(IRepository<Site> siteRepository, IRepository<TrialSiteUser> trialSiteUserRepository, IDistributedLockProvider distributedLockProvider, IRepository<Hospital> hospitalRepository)
{
_siteRepository = siteRepository;
_trialSiteUserRepository = trialSiteUserRepository;
_distributedLockProvider = distributedLockProvider;
_hospitalRepository= hospitalRepository;
}
/// <summary> 分页获取研究中心列表 </summary>
@ -72,6 +75,18 @@ namespace IRaCIS.Application.Services
var site = await _siteRepository.InsertOrUpdateAsync(siteCommand, true, exp);
//手动解绑医院与site的关系
if (siteCommand.HospitalId == null && site.HospitalId != null)
{
await _hospitalRepository.BatchUpdateNoTrackingAsync(t => t.Id == site.HospitalId, u => new Hospital() { SiteId = null });
}
//手动绑
if(siteCommand.HospitalId != null)
{
await _hospitalRepository.BatchUpdateNoTrackingAsync(t => t.Id == siteCommand.HospitalId, u => new Hospital() { SiteId = site.Id });
}
return ResponseOutput.Ok(site.Id.ToString());
}

View File

@ -441,8 +441,8 @@ namespace IRaCIS.Core.Application.Contracts
#endregion
public int? TotalCount => TrialWaitSignDocCount + SysWaitSignDocCount
+ PM_SiteSurveryCount + PM_CheckCount + PM_ReviewerSelectCount + PM_ReReadingApprovalCount + PM_ClinicalDataCount
+ CRC_ImageSubmitCount + CRC_ImageQuestionCount + CRC_CheckQuestionCount + CRC_ImageReUploadCount + CRC_ClinicalDataTobeDoneCount + CRC_ClinialDataTobeConfirmCount
+ PM_SiteSurveryCount + PM_CheckCount + PM_ReviewerSelectCount + PM_ReReadingApprovalCount /*+ PM_ClinicalDataCount*/
+ CRC_ImageSubmitCount + CRC_ImageQuestionCount + CRC_CheckQuestionCount + CRC_ImageReUploadCount /*+ CRC_ClinicalDataTobeDoneCount + CRC_ClinialDataTobeConfirmCount*/
+ SPM_SiteSurveryCount + SPM_ReviewerApprovalCount + SPM_ReReadingApprovalCount
+ IQC_IamgeQCCount + IQC_QCQuestionCount
+ IR_IamgeWaitReadingCount + IR_MedicalReviewCount