修改医院 site
parent
d58089b9ee
commit
0492563838
|
@ -3,19 +3,22 @@ using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
|
using Microsoft.Data.Sqlite;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
[ ApiExplorerSettings(GroupName = "Institution")]
|
[ApiExplorerSettings(GroupName = "Institution")]
|
||||||
public class HospitalService : BaseService, IHospitalService
|
public class HospitalService : BaseService, IHospitalService
|
||||||
{
|
{
|
||||||
private readonly IRepository<Hospital> _hospitalRepository;
|
private readonly IRepository<Hospital> _hospitalRepository;
|
||||||
private readonly IRepository<Doctor> _doctorRepository;
|
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;
|
_hospitalRepository = hospitalRepository;
|
||||||
this._doctorRepository = doctorRepository;
|
_doctorRepository = doctorRepository;
|
||||||
|
_siteRepository = siteRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> 获取所有医院列表 </summary>
|
/// <summary> 获取所有医院列表 </summary>
|
||||||
|
@ -38,13 +41,24 @@ namespace IRaCIS.Application.Services
|
||||||
var exp1 = new EntityVerifyExp<Hospital>()
|
var exp1 = new EntityVerifyExp<Hospital>()
|
||||||
{
|
{
|
||||||
VerifyExp = x => x.SiteId == hospitalCommand.SiteId && hospitalCommand.SiteId != null,
|
VerifyExp = x => x.SiteId == hospitalCommand.SiteId && hospitalCommand.SiteId != null,
|
||||||
//---已经存在同名的医院,请确认。
|
//---当前中心已经添加到其他医院了。
|
||||||
VerifyMsg = _localizer["Hospital_SiteAdded"]
|
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());
|
return ResponseOutput.Ok(hospital.Id.ToString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -69,12 +83,12 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
/// <summary> 分页获取医院列表 </summary>
|
/// <summary> 分页获取医院列表 </summary>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<HospitalDTO>> GetHospitalPageList(HospitalQueryDTO hospitalSearchModel)
|
public async Task<PageOutput<HospitalDTO>> GetHospitalPageList(HospitalQueryDTO hospitalSearchModel)
|
||||||
{
|
{
|
||||||
|
|
||||||
var hospitalQueryable =
|
var hospitalQueryable =
|
||||||
_hospitalRepository
|
_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.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!))
|
.WhereIf(hospitalSearchModel.Province != null, t => t.Province.Contains(hospitalSearchModel.Province!) || t.HospitalNameCN.Contains(hospitalSearchModel.Province!))
|
||||||
.ProjectTo<HospitalDTO>(_mapper.ConfigurationProvider);
|
.ProjectTo<HospitalDTO>(_mapper.ConfigurationProvider);
|
||||||
|
|
|
@ -4,6 +4,7 @@ using IRaCIS.Core.Infra.EFCore;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using Medallion.Threading;
|
using Medallion.Threading;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -13,12 +14,14 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IRepository<Site> _siteRepository;
|
private readonly IRepository<Site> _siteRepository;
|
||||||
private readonly IRepository<TrialSiteUser> _trialSiteUserRepository;
|
private readonly IRepository<TrialSiteUser> _trialSiteUserRepository;
|
||||||
private readonly IDistributedLockProvider _distributedLockProvider;
|
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;
|
_siteRepository = siteRepository;
|
||||||
_trialSiteUserRepository = trialSiteUserRepository;
|
_trialSiteUserRepository = trialSiteUserRepository;
|
||||||
_distributedLockProvider = distributedLockProvider;
|
_distributedLockProvider = distributedLockProvider;
|
||||||
|
_hospitalRepository= hospitalRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> 分页获取研究中心列表 </summary>
|
/// <summary> 分页获取研究中心列表 </summary>
|
||||||
|
@ -72,6 +75,18 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
var site = await _siteRepository.InsertOrUpdateAsync(siteCommand, true, exp);
|
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());
|
return ResponseOutput.Ok(site.Id.ToString());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue