修改site

Uat_Study
hang 2022-08-09 15:58:57 +08:00
parent 2b67e4930a
commit 5b74fc6f11
7 changed files with 80 additions and 20 deletions

View File

@ -77,6 +77,8 @@
"DicomStudyCodePrefix": "ST", "DicomStudyCodePrefix": "ST",
"SystemSiteCodePrefix": "S",
"DefaultPassword": "123456", "DefaultPassword": "123456",
"DefaultInternalOrganizationName": "ExtImaging", "DefaultInternalOrganizationName": "ExtImaging",

View File

@ -12,10 +12,14 @@ namespace IRaCIS.Application.Contracts
{ {
public Guid? Id { get; set; } public Guid? Id { get; set; }
public string SiteName { get; set; } = String.Empty; public string SiteName { get; set; } = String.Empty;
public int Code { get; set; }
public string SiteCode { get; set; } = String.Empty; public string SiteCode { get; set; } = String.Empty;
public string Address { get; set; } = String.Empty; public string Address { get; set; } = String.Empty;
public string UniqueCode { get; set; } = string.Empty; public string UniqueCode { get; set; } = string.Empty;
public string AliasName { get; set; } = string.Empty;
public string City { get; set; } = string.Empty; public string City { get; set; } = string.Empty;
public string Country { get; set; } = string.Empty; public string Country { get; set; } = string.Empty;
public Guid? HospitalId { get; set; } public Guid? HospitalId { get; set; }
@ -42,6 +46,11 @@ namespace IRaCIS.Application.Contracts
public class SiteQueryParam : PageInput public class SiteQueryParam : PageInput
{ {
public string SiteName { get; set; } = String.Empty; public string SiteName { get; set; } = String.Empty;
public Guid UserId { get; set; } = Guid.Empty; public string AliasName { get; set; } = string.Empty;
public string City { get; set; } = string.Empty;
public string Country { get; set; } = string.Empty;
} }
} }

View File

@ -2,15 +2,19 @@
using IRaCIS.Application.Contracts; 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.Domain.Share;
using Nito.AsyncEx;
namespace IRaCIS.Application.Services namespace IRaCIS.Application.Services
{ {
[ ApiExplorerSettings(GroupName = "Institution")] [ApiExplorerSettings(GroupName = "Institution")]
public class SiteService : BaseService, ISiteService public class SiteService : BaseService, ISiteService
{ {
private readonly IRepository<Site> _siteRepository; private readonly IRepository<Site> _siteRepository;
private readonly IRepository<TrialSiteUser> _trialSiteUserRepository; private readonly IRepository<TrialSiteUser> _trialSiteUserRepository;
private readonly AsyncLock _mutex = new AsyncLock();
public SiteService(IRepository<Site> siteRepository, IRepository<TrialSiteUser> trialSiteUserRepository) public SiteService(IRepository<Site> siteRepository, IRepository<TrialSiteUser> trialSiteUserRepository)
{ {
_siteRepository = siteRepository; _siteRepository = siteRepository;
@ -24,6 +28,9 @@ namespace IRaCIS.Application.Services
var siteQueryable = _siteRepository var siteQueryable = _siteRepository
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName)) .WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName))
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.AliasName), t => t.AliasName.Contains(searchModel.AliasName))
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.City), t => t.City.Contains(searchModel.City))
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.Country), t => t.Country.Contains(searchModel.Country))
.ProjectTo<SiteSelectDTO>(_mapper.ConfigurationProvider); .ProjectTo<SiteSelectDTO>(_mapper.ConfigurationProvider);
@ -45,16 +52,30 @@ namespace IRaCIS.Application.Services
var exp = new EntityVerifyExp<Site>() var exp = new EntityVerifyExp<Site>()
{ {
VerifyExp = h => h.SiteName.Equals(siteCommand.SiteName)|| h.SiteCode.Equals(siteCommand.SiteCode), VerifyExp = h => h.SiteName.Equals(siteCommand.SiteName) || h.SiteCode.Equals(siteCommand.SiteCode),
VerifyMsg = "已经存在同名的中心,请确认。" VerifyMsg = "已经存在同名的中心,请确认。"
}; };
using (await _mutex.LockAsync())
{
if (siteCommand.Id == null)
{
siteCommand.Code = await _siteRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1;
siteCommand.SiteCode = AppSettings.GetCodeStr(siteCommand.Code, nameof(User));
}
var site = await _siteRepository.InsertOrUpdateAsync(siteCommand, true, exp); var site = await _siteRepository.InsertOrUpdateAsync(siteCommand, true, exp);
return ResponseOutput.Ok(site.Id.ToString()); return ResponseOutput.Ok(site.Id.ToString());
}
} }

View File

@ -97,12 +97,21 @@ namespace IRaCIS.Core.Application.Contracts.DTO
public string SiteName { get; set; } = String.Empty; public string SiteName { get; set; } = String.Empty;
public string AliasName { get; set; } = string.Empty;
public string City { get; set; } = string.Empty;
public string Country { get; set; } = string.Empty;
} }
public class TrialSiteScreeningDTO public class TrialSiteScreeningDTO
{ {
public Guid Id { get; set; } public Guid Id { get; set; }
public string SiteName { get; set; } = String.Empty; public string SiteName { get; set; } = String.Empty;
public string AliasName { get; set; } = string.Empty;
public string SiteCode { get; set; } = String.Empty; public string SiteCode { get; set; } = String.Empty;
public string City { get; set; } = String.Empty; public string City { get; set; } = String.Empty;
public string Country { get; set; } = String.Empty; public string Country { get; set; } = String.Empty;

View File

@ -190,18 +190,21 @@ namespace IRaCIS.Core.Application.Services
/// <summary>[new] Setting页面 Site勾选列表 </summary> /// <summary>[new] Setting页面 Site勾选列表 </summary>
[HttpPost] [HttpPost]
public async Task<PageOutput<TrialSiteScreeningDTO>> GetTrialSiteScreeningList(TrialSiteQuery trialSiteQuery) public async Task<PageOutput<TrialSiteScreeningDTO>> GetTrialSiteScreeningList(TrialSiteQuery searchModel)
{ {
// 之前选择了的不能再次出现在列表,做的时候我就不建议这样搞,搞好了 现在又要改回去。。。 瞎折腾。。。。 // 之前选择了的不能再次出现在列表,做的时候我就不建议这样搞,搞好了 现在又要改回去。。。 瞎折腾。。。。
var siteQueryable = _siteRepository.AsQueryable(true) var siteQueryable = _siteRepository.AsQueryable(true)
.WhereIf(!string.IsNullOrWhiteSpace(trialSiteQuery.SiteName), t => t.SiteName.Contains(trialSiteQuery.SiteName)) .WhereIf(!string.IsNullOrWhiteSpace(searchModel.SiteName), t => t.SiteName.Contains(searchModel.SiteName))
.ProjectTo<TrialSiteScreeningDTO>(_mapper.ConfigurationProvider, new { trialId = trialSiteQuery.TrialId }); .WhereIf(!string.IsNullOrWhiteSpace(searchModel.AliasName), t => t.AliasName.Contains(searchModel.AliasName))
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.City), t => t.City.Contains(searchModel.City))
.WhereIf(!string.IsNullOrWhiteSpace(searchModel.Country), t => t.Country.Contains(searchModel.Country))
.ProjectTo<TrialSiteScreeningDTO>(_mapper.ConfigurationProvider, new { trialId = searchModel.TrialId });
return await siteQueryable.ToPagedListAsync(trialSiteQuery.PageIndex, return await siteQueryable.ToPagedListAsync(searchModel.PageIndex,
trialSiteQuery.PageSize, string.IsNullOrWhiteSpace(trialSiteQuery.SortField) ? "SiteName" : trialSiteQuery.SortField, trialSiteQuery.Asc); searchModel.PageSize, string.IsNullOrWhiteSpace(searchModel.SortField) ? "SiteName" : searchModel.SortField, searchModel.Asc);
} }

View File

@ -9,8 +9,12 @@ namespace IRaCIS.Core.Domain.Models
{ {
public Hospital Hospital { get; set; } public Hospital Hospital { get; set; }
public string SiteName { get; set; } public string SiteName { get; set; }
public string AliasName { get; set; } = string.Empty;
public string SiteCode { get; set; } public string SiteCode { get; set; }
public int Code { get; set; }
public string City { get; set; } public string City { get; set; }
public string Country { get; set; } public string Country { get; set; }
public Guid? HospitalId { get; set; } public Guid? HospitalId { get; set; }

View File

@ -39,6 +39,10 @@ namespace IRaCIS.Core.Domain.Share
public static int ImageShareExpireDays { get; set; } = 7; public static int ImageShareExpireDays { get; set; } = 7;
public static string SystemSiteCodePrefix { get; set; }
/// <summary> /// <summary>
/// 用户默认密码 /// 用户默认密码
/// </summary> /// </summary>
@ -61,9 +65,13 @@ namespace IRaCIS.Core.Domain.Share
NoneDicomStudyCodePrefix = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("NoneDicomStudyCodePrefix"); NoneDicomStudyCodePrefix = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("NoneDicomStudyCodePrefix");
DicomStudyCodePrefix = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("DicomStudyCodePrefix"); DicomStudyCodePrefix = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("DicomStudyCodePrefix");
DefaultPassword= configuration.GetSection("IRaCISBasicConfig").GetValue<string>("DefaultPassword"); DefaultPassword= configuration.GetSection("IRaCISBasicConfig").GetValue<string>("DefaultPassword");
SystemSiteCodePrefix = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("SystemSiteCodePrefix");
DefaultInternalOrganizationName = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("DefaultInternalOrganizationName"); DefaultInternalOrganizationName = configuration.GetSection("IRaCISBasicConfig").GetValue<string>("DefaultInternalOrganizationName");
ImageShareExpireDays = configuration.GetSection("IRaCISBasicConfig").GetValue<int>("ImageShareExpireDays"); ImageShareExpireDays = configuration.GetSection("IRaCISBasicConfig").GetValue<int>("ImageShareExpireDays");
} }
@ -96,6 +104,10 @@ namespace IRaCIS.Core.Domain.Share
return "W" + codeInt.ToString("D5"); return "W" + codeInt.ToString("D5");
case nameof(Site):
return SystemSiteCodePrefix + codeInt.ToString("D4");
default: default:
return string.Empty; return string.Empty;
} }