Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing Details

Uat_IRC_Net8
he 2025-01-24 12:28:56 +08:00
commit 66819a1e89
12 changed files with 64 additions and 68 deletions

View File

@ -850,13 +850,13 @@ namespace IRaCIS.Core.API.Controllers
throw new BusinessValidationFailedException(_localizer["UploadDownLoad_InvalidCenters"]);
}
foreach (var item in excelList.GroupBy(t => t.Email))
foreach (var item in excelList.GroupBy(t => t.Email.Trim()))
{
var itemList = item.ToList();
var first = item.First();
if (itemList.Any(t => t.Email != first.Email || t.Phone != first.Phone || t.OrganizationName != first.OrganizationName || t.FirstName != first.FirstName || t.LastName != first.LastName))
if (itemList.Any(t => t.Email.Trim() != first.Email.Trim() || t.Phone.Trim() != first.Phone.Trim() || t.OrganizationName.Trim() != first.OrganizationName.Trim() || t.FirstName.Trim() != first.FirstName.Trim() || t.LastName.Trim() != first.LastName.Trim()))
{
//同一邮箱,用户信息应该保持一致!
@ -886,7 +886,7 @@ namespace IRaCIS.Core.API.Controllers
foreach (var item in excelList)
{
switch (item.UserTypeStr.ToUpper())
switch (item.UserTypeStr.Trim().ToUpper())
{
case "CRC":
@ -903,7 +903,7 @@ namespace IRaCIS.Core.API.Controllers
}
item.TrialSiteId = siteList.FirstOrDefault(t => t.TrialSiteCode.ToUpper() == item.TrialSiteCode.ToUpper()).TrialSiteId;
item.TrialSiteId = siteList.FirstOrDefault(t => t.TrialSiteCode.Trim().ToUpper() == item.TrialSiteCode.Trim().ToUpper()).TrialSiteId;
}
var list = excelList.Where(t => t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserTypeEnum == UserTypeEnum.CRA).ToList();

View File

@ -43,25 +43,22 @@
"OpenLoginLimit": true,
"LoginMaxFailCount": 5,
"LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 360,
"OpenLoginMFA": false,
"ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90
},
"SystemEmailSendConfig": {
"Port": 465,
"Host": "smtp.qiye.aliyun.com",
"FromEmail": "IRC@extimaging.com",
"FromName": "IRC",
"FromEmail": "irc@extimaging.com",
"FromName": "irc",
"AuthorizationCode": "ExtImg@2022",
"SiteUrl": "http://irc.extimaging.com/login",
"OrganizationName": "Extlmaging",

View File

@ -52,28 +52,24 @@
"BasicSystemConfig": {
"OpenUserComplexPassword": false,
"OpenSignDocumentBeforeWork": false,
"OpenTrialRelationDelete": true,
"OpenLoginLimit": false,
"LoginMaxFailCount": 5,
"LoginFailLockMinutes": 1,
"AutoLoginOutMinutes": 1,
"AutoLoginOutMinutes": 10,
"OpenLoginMFA": false,
"ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90,
"OpenTrialRelationDelete": true,
"ThirdPdfUrl": "http://106.14.89.110:30088/api/v1/convert/file/pdf"
},

View File

@ -7,8 +7,8 @@
}
},
"ConnectionStrings": {
"RemoteNew": "Server=us-prod-mssql-service,1433;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
"Hangfire": "Server=us-prod-mssql-service,1433;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
"RemoteNew": "Server=us-mssql-prod,1433;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
"Hangfire": "Server=us-mssql-prod,1433;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
//"RemoteNew": "Server=44.210.231.169,1435;Database=US_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
//"Hangfire": "Server=44.210.231.169,1435;Database=US_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
},
@ -39,25 +39,25 @@
},
"BasicSystemConfig": {
"OpenUserComplexPassword": false,
"OpenSignDocumentBeforeWork": false,
"OpenTrialRelationDelete": true,
"OpenLoginLimit": false,
"OpenUserComplexPassword": true,
"OpenSignDocumentBeforeWork": true,
"OpenLoginLimit": true,
"LoginMaxFailCount": 5,
"LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 60,
"AutoLoginOutMinutes": 120,
"OpenLoginMFA": true,
"ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90,
"OpenTrialRelationDelete": false
},
"SystemEmailSendConfig": {
@ -75,7 +75,7 @@
"CompanyShortNameCN": "展影医疗",
"SiteUrl": "https://lili.elevateimaging.ai/login",
"IsEnv_US": true,
"IsOpenErrorNoticeEmail": true,
"IsOpenErrorNoticeEmail": false,
"ErrorNoticeEmailList": [ "872297557@qq.com" ]
},

View File

@ -50,26 +50,20 @@
"BasicSystemConfig": {
"OpenUserComplexPassword": true,
"OpenSignDocumentBeforeWork": true,
"OpenTrialRelationDelete": true,
"OpenLoginLimit": false,
"OpenLoginLimit": true,
"LoginMaxFailCount": 5,
"LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 60,
"AutoLoginOutMinutes": 120,
"OpenLoginMFA": true,
"ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90,
"OpenLoginMFA": false
"ChangePassWordDays": 90
},
"SystemEmailSendConfig": {
@ -85,7 +79,7 @@
"CompanyNameCN": "上海展影医疗科技有限公司",
"CompanyShortName": "Elevate Imaging",
"CompanyShortNameCN": "展影医疗",
"SiteUrl": "https://lili.test.elevateimaging.ai/login",
"SiteUrl": "https://lili.uat.elevateimaging.ai/login",
"IsEnv_US": true,
"IsOpenErrorNoticeEmail": false,
"ErrorNoticeEmailList": [ "872297557@qq.com" ]

View File

@ -56,7 +56,6 @@
"BasicSystemConfig": {
"OpenUserComplexPassword": true,
"OpenSignDocumentBeforeWork": true,
"OpenLoginLimit": true,
@ -64,13 +63,13 @@
"LoginFailLockMinutes": 30,
"AutoLoginOutMinutes": 60,
"OpenLoginMFA": false,
"ContinuousReadingTimeMin": 120,
"ReadingRestTimeMin": 10,
"IsNeedChangePassWord": true,
"IsNeedChangePassWord": true,
"ChangePassWordDays": 90
},

View File

@ -25,10 +25,10 @@ namespace IRaCIS.Core.Application.Service
var exploreRecommendQueryable =
_exploreRecommendRepository.Where().IgnoreQueryFilters()
.WhereIf(string.IsNullOrEmpty(inQuery.Title), t => t.Title.Contains(inQuery.Title))
.WhereIf(string.IsNullOrEmpty(inQuery.FileName), t => t.Title.Contains(inQuery.FileName))
.WhereIf(string.IsNullOrEmpty(inQuery.DownloadUrl), t => t.Title.Contains(inQuery.DownloadUrl))
.WhereIf(string.IsNullOrEmpty(inQuery.Version), t => t.Title.Contains(inQuery.Version))
.WhereIf(!string.IsNullOrEmpty(inQuery.Title), t => t.Title.Contains(inQuery.Title))
.WhereIf(!string.IsNullOrEmpty(inQuery.FileName), t => t.Title.Contains(inQuery.FileName))
.WhereIf(!string.IsNullOrEmpty(inQuery.DownloadUrl), t => t.Title.Contains(inQuery.DownloadUrl))
.WhereIf(!string.IsNullOrEmpty(inQuery.Version), t => t.Title.Contains(inQuery.Version))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == t.IsDeleted)
.ProjectTo<ExploreRecommendView>(_mapper.ConfigurationProvider);

View File

@ -5,6 +5,7 @@
//--------------------------------------------------------------------
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Core.Application.Services
{
@ -25,7 +26,10 @@ namespace IRaCIS.Core.Application.Services
[HttpPost]
public async Task<PageOutput<SystemBasicDataView>> GetSystemBasicDataList(SystemBasicDataQuery inQuery)
{
var systemBasicDataQueryable = _systemBasicDataRepository.Where(t => t.ParentId == null)
var systemBasicDataQueryable = _systemBasicDataRepository
.Where(t => t.ParentId == null)
.WhereIf(inQuery.Code != null, t => t.Code.Contains(inQuery.Code))
.WhereIf(inQuery.Name != null, t => t.Name.Contains(inQuery.Name))
.ProjectTo<SystemBasicDataView>(_mapper.ConfigurationProvider);
return await systemBasicDataQueryable.ToPagedListAsync(inQuery, nameof(SystemBasicDataView.Code));

View File

@ -439,6 +439,7 @@ namespace IRaCIS.Core.Application.Services
var needSignSystemDocCount = await _systemDocumentRepository.AsQueryable(true)
.WhereIf(isInternal == false, t => t.DocUserSignType == DocUserSignType.InnerAndOuter)
.Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.IdentityUserId && t.ConfirmTime != null) && t.NeedConfirmedUserTypeList.Any(u => u.NeedConfirmUserTypeId == _userInfo.UserTypeId))
.CountAsync();

View File

@ -1160,17 +1160,18 @@ namespace IRaCIS.Core.Application.Service
}
}
else
{
await _fusionCache.SetAsync(CacheKeys.UserToken(identityUserId), userLoginReturnModel.JWTStr, TimeSpan.FromDays(7));
await _fusionCache.SetAsync(CacheKeys.UserAutoLoginOut(identityUserId), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(_verifyConfig.CurrentValue.AutoLoginOutMinutes));
}
await _fusionCache.SetAsync(CacheKeys.UserToken(identityUserId), userLoginReturnModel.JWTStr, TimeSpan.FromDays(7));
await _fusionCache.SetAsync(CacheKeys.UserAutoLoginOut(identityUserId), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), TimeSpan.FromMinutes(_verifyConfig.CurrentValue.AutoLoginOutMinutes));
userLoginReturnModel.BasicInfo.AccountList = await _userRoleRepository.Where(t => t.IdentityUserId == identityUserId).ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToListAsync();
userLoginReturnModel.CompanyInfo = companyInfo;
return ResponseOutput.Ok(userLoginReturnModel);
}

View File

@ -87,11 +87,12 @@ namespace IRaCIS.Core.Application.Service
if (updateTrialUserCommand.IsDeleted)
{
if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.TrialId == trialUser.TrialId))
{
// ----人员已加入现场维护
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
}
//可以直接退出不管中心下的CRC CRA 状态
//if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.TrialId == trialUser.TrialId))
//{
// // ----人员已加入现场维护
// return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
//}
var findQC = await _trialUseRoleRepository.FirstOrDefaultAsync(t => t.UserRole.IdentityUserId == trialUser.IdentityUserId && t.UserRole.UserTypeEnum == UserTypeEnum.IQC);
@ -161,10 +162,13 @@ namespace IRaCIS.Core.Application.Service
var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.IdentityUser.Status == UserStateEnum.Enable).IgnoreQueryFilters()
//正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户
.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IdentityUser.IsTestUser == false /*&& t.IdentityUser.IsZhiZhun*/)
.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IdentityUser.IsTestUser == false
&& (t.IdentityUser.IsZhiZhun
|| t.UserTypeRole.UserTypeEnum == UserTypeEnum.IQC
|| t.UserTypeRole.UserTypeEnum == UserTypeEnum.MIM))
//测试项目 可以加入 测试用户 或者内部正式用户
.WhereIf(trialType == TrialType.NoneOfficial, t => t.IdentityUser.IsTestUser == true /*|| (t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun)*/)
.WhereIf(trialType == TrialType.NoneOfficial, t => t.IdentityUser.IsTestUser == true || (t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun))
.Where(t => userTypeEnums.Contains(t.UserTypeEnum))
.WhereIf(inQuery.UserTypeEnum != null, t => t.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => t.IdentityUser.FullName.Contains(inQuery.UserRealName))

View File

@ -125,8 +125,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialSite, SiteStatDTO>()
.ForMember(d => d.TrialSiteId, u => u.MapFrom(s => s.Id))
.ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count()))
.ForMember(d => d.SubjectCount, u => u.MapFrom(s => s.SubjectList.Count()))
.ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t=>t.IsDeleted==false)))
.ForMember(d => d.SubjectCount, u => u.MapFrom(s => s.SubjectList.Count(t=>t.IsDeleted==false)))
//.ForMember(d => d.UserCount, u => u.MapFrom(s => s.CRCUserList.Count()))
.ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.UserRole.IdentityUser.FullName)));
#endregion