修改仓储名称

Uat_Study
hang 2022-04-26 16:56:18 +08:00
parent f118dd6e42
commit 8f6830ea8d
50 changed files with 173 additions and 167 deletions

View File

@ -104,7 +104,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This item is referenced by content of the trial infomation."); return ResponseOutput.NotOk("This item is referenced by content of the trial infomation.");
} }
var success = await _dicRepository.BatchDeleteAsync(t => t.Id == id); var success = await _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{emailNoticeConfigId:guid}")] [HttpDelete("{emailNoticeConfigId:guid}")]
public async Task<IResponseOutput> DeleteEmailNoticeConfig(Guid emailNoticeConfigId) public async Task<IResponseOutput> DeleteEmailNoticeConfig(Guid emailNoticeConfigId)
{ {
var success = await repository.BatchDeleteAsync(t => t.Id == emailNoticeConfigId); var success = await repository.BatchDeleteNoTrackingAsync(t => t.Id == emailNoticeConfigId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -223,7 +223,7 @@ namespace IRaCIS.Core.Application.Service
{ {
foreach (var item in sortDto.SortData) foreach (var item in sortDto.SortData)
{ {
await _frontAuditConfigRepository.BatchUpdateAsync(x => x.Id == item.Id, x => new FrontAuditConfig await _frontAuditConfigRepository.BatchUpdateNoTrackingAsync(x => x.Id == item.Id, x => new FrontAuditConfig
{ {
Sort = item.Sort Sort = item.Sort
}); });

View File

@ -42,7 +42,7 @@ namespace IRaCIS.Application.Services
// File.Delete(temp); // File.Delete(temp);
//} //}
var success =await _attachmentrepository.BatchDeleteAsync(a => a.Id == param.Id); var success =await _attachmentrepository.BatchDeleteNoTrackingAsync(a => a.Id == param.Id);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -139,7 +139,7 @@ namespace IRaCIS.Application.Services
//重传的时候,发现 相同语言的官方简历数量为2 那么将重传的简历设置为非官方 //重传的时候,发现 相同语言的官方简历数量为2 那么将重传的简历设置为非官方
if (attachments.Count(t => t.Language == reUpload.Language && t.IsOfficial) == 2) if (attachments.Count(t => t.Language == reUpload.Language && t.IsOfficial) == 2)
{ {
await _attachmentrepository.BatchUpdateAsync(t => t.Id == reUpload.Id, u => new Attachment() await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == reUpload.Id, u => new Attachment()
{ {
Path = reUpload.Path, Path = reUpload.Path,
CreateTime = DateTime.Now, CreateTime = DateTime.Now,
@ -150,7 +150,7 @@ namespace IRaCIS.Application.Services
} }
else //相同语言的重传 else //相同语言的重传
{ {
await _attachmentrepository.BatchUpdateAsync(t => t.Id == reUpload.Id, u => new Attachment() await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == reUpload.Id, u => new Attachment()
{ {
Path = reUpload.Path, Path = reUpload.Path,
CreateTime = DateTime.Now, CreateTime = DateTime.Now,
@ -241,7 +241,7 @@ namespace IRaCIS.Application.Services
[HttpPost("{doctorId:guid}/{attachmentId:guid}/{language}")] [HttpPost("{doctorId:guid}/{attachmentId:guid}/{language}")]
public async Task<IResponseOutput> SetLanguage(Guid doctorId, Guid attachmentId, int language) public async Task<IResponseOutput> SetLanguage(Guid doctorId, Guid attachmentId, int language)
{ {
bool result =await _attachmentrepository.BatchUpdateAsync(t => t.Id == attachmentId, a => new Attachment bool result =await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == attachmentId, a => new Attachment
{ {
Language = language, Language = language,
IsOfficial = false IsOfficial = false

View File

@ -431,7 +431,7 @@ namespace IRaCIS.Application.Services
{ {
return ResponseOutput.NotOk("Resume & Consultant Agreement must be upload "); return ResponseOutput.NotOk("Resume & Consultant Agreement must be upload ");
} }
var success = await _doctorRepository.BatchUpdateAsync(o => o.Id == auditResumeParam.Id, u => new Doctor() var success = await _doctorRepository.BatchUpdateNoTrackingAsync(o => o.Id == auditResumeParam.Id, u => new Doctor()
{ {
CooperateStatus = auditResumeParam.CooperateStatus, CooperateStatus = auditResumeParam.CooperateStatus,
ResumeStatus = auditResumeParam.ResumeStatus, ResumeStatus = auditResumeParam.ResumeStatus,

View File

@ -92,7 +92,7 @@ namespace IRaCIS.Application.Services
[HttpDelete, Route("{doctorId:guid}")] [HttpDelete, Route("{doctorId:guid}")]
public async Task<IResponseOutput> DeleteEducationInfo(Guid id) public async Task<IResponseOutput> DeleteEducationInfo(Guid id)
{ {
var success = await _educationRepository.BatchDeleteAsync(o => o.Id == id); var success = await _educationRepository.BatchDeleteNoTrackingAsync(o => o.Id == id);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -35,7 +35,7 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
var success = await _vacationRepository.BatchUpdateAsync(u => u.Id == param.Id, var success = await _vacationRepository.BatchUpdateNoTrackingAsync(u => u.Id == param.Id,
h => new Vacation h => new Vacation
{ {
StartDate = param.StartDate, StartDate = param.StartDate,
@ -56,7 +56,7 @@ namespace IRaCIS.Application.Services
[HttpDelete("{holidayId:guid}")] [HttpDelete("{holidayId:guid}")]
public async Task<IResponseOutput> DeleteVacation(Guid holidayId) public async Task<IResponseOutput> DeleteVacation(Guid holidayId)
{ {
var success = await _vacationRepository.BatchDeleteAsync(u => u.Id == holidayId); var success = await _vacationRepository.BatchDeleteNoTrackingAsync(u => u.Id == holidayId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);

View File

@ -466,7 +466,7 @@ namespace IRaCIS.Core.Application.Services
return ResponseOutput.NotOk("该文档,已有用户签名 不允许删除"); return ResponseOutput.NotOk("该文档,已有用户签名 不允许删除");
} }
var success = await _trialDocumentRepository.BatchDeleteAsync(t => t.Id == trialDocumentId); var success = await _trialDocumentRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialDocumentId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -586,7 +586,7 @@ namespace IRaCIS.Core.Application.Services
} }
else else
{ {
await _trialDocumentRepository.BatchUpdateAsync(t => t.Id == documentId, u => new TrialDocument() { IsDeleted = true }); await _trialDocumentRepository.BatchUpdateNoTrackingAsync(t => t.Id == documentId, u => new TrialDocument() { IsDeleted = true });
} }
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -595,7 +595,7 @@ namespace IRaCIS.Application.Services
foreach (var reviewer in needUpdatePayment) foreach (var reviewer in needUpdatePayment)
{ {
await _paymentRepository.BatchUpdateAsync(u => u.YearMonth == yearMonth && await _paymentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
!u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment() !u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment()
{ {
AdjustmentUSD = reviewer.AdjustUSD, AdjustmentUSD = reviewer.AdjustUSD,
@ -638,12 +638,12 @@ namespace IRaCIS.Application.Services
// 如果是 当月计算的工作量费用 和 调整费用都为0则删除该行记录 // 如果是 当月计算的工作量费用 和 调整费用都为0则删除该行记录
if (addOrUpdateModel.PaymentUSD == 0 && paymentModel.AdjustmentUSD == 0) if (addOrUpdateModel.PaymentUSD == 0 && paymentModel.AdjustmentUSD == 0)
{ {
success =await _paymentRepository.BatchDeleteAsync(u => u.Id == paymentModel.Id); success =await _paymentRepository.BatchDeleteNoTrackingAsync(u => u.Id == paymentModel.Id);
//_paymentDetailRepository.Delete(u=>u.PaymentId==paymentModel.Id); //_paymentDetailRepository.Delete(u=>u.PaymentId==paymentModel.Id);
} }
else else
{ {
success = await _paymentRepository.BatchUpdateAsync(t => t.Id == paymentModel.Id, u => new Payment() success = await _paymentRepository.BatchUpdateNoTrackingAsync(t => t.Id == paymentModel.Id, u => new Payment()
{ {
PaymentUSD = addOrUpdateModel.PaymentUSD, PaymentUSD = addOrUpdateModel.PaymentUSD,
CalculateTime = addOrUpdateModel.CalculateTime, CalculateTime = addOrUpdateModel.CalculateTime,
@ -670,7 +670,7 @@ namespace IRaCIS.Application.Services
private async Task<bool> AddOrUpdateMonthlyPaymentDetail(List<PaymentDetailCommand> addOrUpdateList, Guid paymentId) private async Task<bool> AddOrUpdateMonthlyPaymentDetail(List<PaymentDetailCommand> addOrUpdateList, Guid paymentId)
{ {
//var paymentDetailIds = addOrUpdateList.Select(t => t.PaymentId).ToList(); //var paymentDetailIds = addOrUpdateList.Select(t => t.PaymentId).ToList();
await _paymentDetailRepository.BatchDeleteAsync(t => t.PaymentId == paymentId); await _paymentDetailRepository.BatchDeleteNoTrackingAsync(t => t.PaymentId == paymentId);
await _paymentDetailRepository.AddRangeAsync(_mapper.Map<List<PaymentDetail>>(addOrUpdateList)); await _paymentDetailRepository.AddRangeAsync(_mapper.Map<List<PaymentDetail>>(addOrUpdateList));
return await _paymentDetailRepository.SaveChangesAsync(); return await _paymentDetailRepository.SaveChangesAsync();
} }

View File

@ -46,7 +46,7 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
var success = await _exchangeRateRepository.BatchUpdateAsync(t => t.Id == model.Id, u => new ExchangeRate() var success = await _exchangeRateRepository.BatchUpdateNoTrackingAsync(t => t.Id == model.Id, u => new ExchangeRate()
{ {
//YearMonth = model.YearMonth, //YearMonth = model.YearMonth,
Rate = model.Rate, Rate = model.Rate,
@ -72,7 +72,7 @@ namespace IRaCIS.Application.Services
} }
var success = await _exchangeRateRepository.BatchDeleteAsync(t => t.Id == id); var success = await _exchangeRateRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Ok(success); return ResponseOutput.Ok(success);
} }

View File

@ -1256,18 +1256,18 @@ namespace IRaCIS.Application.Services
var isLock = param.IsLock; var isLock = param.IsLock;
var paymentLockSuccess = await _paymentRepository.BatchUpdateAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth, t => new Payment var paymentLockSuccess = await _paymentRepository.BatchUpdateNoTrackingAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth, t => new Payment
{ {
IsLock = isLock IsLock = isLock
}); });
var adjustmentLockSuccess = await _payAdjustmentRepository.BatchUpdateAsync( var adjustmentLockSuccess = await _payAdjustmentRepository.BatchUpdateNoTrackingAsync(
t => t.YearMonth == yearMonth && reviewerIds.Contains(t.ReviewerId), u => t => t.YearMonth == yearMonth && reviewerIds.Contains(t.ReviewerId), u =>
new PaymentAdjustment() new PaymentAdjustment()
{ {
IsLock = true IsLock = true
}); });
await _doctorWorkloadRepository.BatchUpdateAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth, await _doctorWorkloadRepository.BatchUpdateNoTrackingAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth,
t => new Workload { IsLock = true }); t => new Workload { IsLock = true });
return ResponseOutput.Result(paymentLockSuccess || adjustmentLockSuccess); return ResponseOutput.Result(paymentLockSuccess || adjustmentLockSuccess);

View File

@ -255,7 +255,7 @@ namespace IRaCIS.Application.Services
{ {
//如果是double 不会保留两位小数 //如果是double 不会保留两位小数
await _payAdjustmentRepository.BatchUpdateAsync(u => u.YearMonth == yearMonth && await _payAdjustmentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
!u.IsLock, t => new PaymentAdjustment !u.IsLock, t => new PaymentAdjustment
{ {
AdjustmentCNY = t.AdjustmentUSD * rate, AdjustmentCNY = t.AdjustmentUSD * rate,
@ -277,7 +277,7 @@ namespace IRaCIS.Application.Services
foreach (var reviewer in needUpdatePayment) foreach (var reviewer in needUpdatePayment)
{ {
await _paymentRepository.BatchUpdateAsync(u => u.YearMonth == yearMonth && await _paymentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
!u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment() !u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment()
{ {
AdjustmentUSD = reviewer.AdjustUSD, AdjustmentUSD = reviewer.AdjustUSD,

View File

@ -43,7 +43,7 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
var success =await _rankPriceRepository.BatchUpdateAsync(t => t.Id == addOrUpdateModel.Id, u => new RankPrice() var success =await _rankPriceRepository.BatchUpdateNoTrackingAsync(t => t.Id == addOrUpdateModel.Id, u => new RankPrice()
{ {
UpdateUserId = userId, UpdateUserId = userId,
UpdateTime = DateTime.Now, UpdateTime = DateTime.Now,
@ -76,7 +76,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This title has been used by reviewer payment information"); return ResponseOutput.NotOk("This title has been used by reviewer payment information");
} }
var success = await _rankPriceRepository.BatchDeleteAsync(t => t.Id == id); var success = await _rankPriceRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -78,7 +78,7 @@ namespace IRaCIS.Application.Services
[HttpPost] [HttpPost]
public async Task<IResponseOutput> DeleteTrialSOW(DeleteSowPathDTO trialSowPath) public async Task<IResponseOutput> DeleteTrialSOW(DeleteSowPathDTO trialSowPath)
{ {
var success = await _trialExtRepository.BatchUpdateAsync(u => u.TrialId == trialSowPath.TrialId, s => new TrialPaymentPrice var success = await _trialExtRepository.BatchUpdateNoTrackingAsync(u => u.TrialId == trialSowPath.TrialId, s => new TrialPaymentPrice
{ {
SowPath = "", SowPath = "",
SowName = "", SowName = "",

View File

@ -63,7 +63,7 @@ namespace IRaCIS.Application.Services
// 完善价格的 将对应的列设置为true 变更为有价格了 // 完善价格的 将对应的列设置为true 变更为有价格了
var aaa = await _trialRevenuesPriceVerificationRepository.BatchUpdateAsync(t => t.TrialId == model.TrialId, u => new TrialRevenuesPriceVerification() var aaa = await _trialRevenuesPriceVerificationRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == model.TrialId, u => new TrialRevenuesPriceVerification()
{ {
//有价格 则设置为true 否则 该列不变 //有价格 则设置为true 否则 该列不变
Timepoint = model.Timepoint > 0 || u.Timepoint, Timepoint = model.Timepoint > 0 || u.Timepoint,
@ -81,7 +81,7 @@ namespace IRaCIS.Application.Services
}); });
//删除所有有价格的记录 为true 表示有价格或者不需要价格 缺价格的为false //删除所有有价格的记录 为true 表示有价格或者不需要价格 缺价格的为false
await _trialRevenuesPriceVerificationRepository.BatchDeleteAsync(t => t.TrialId == model.TrialId && await _trialRevenuesPriceVerificationRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == model.TrialId &&
t.Timepoint&& t.Timepoint&&
t.TimepointIn24H&& t.TimepointIn24H&&
t.TimepointIn48H && t.TimepointIn48H &&
@ -101,7 +101,7 @@ namespace IRaCIS.Application.Services
[NonDynamicMethod] [NonDynamicMethod]
public async Task<bool> DeleteTrialCost(Guid id) public async Task<bool> DeleteTrialCost(Guid id)
{ {
return await _trialRevenuesPriceRepository.BatchDeleteAsync(u => u.Id == id); return await _trialRevenuesPriceRepository.BatchDeleteNoTrackingAsync(u => u.Id == id);
} }
/// <summary> /// <summary>

View File

@ -28,7 +28,7 @@ namespace IRaCIS.Application.Services
[NonDynamicMethod] [NonDynamicMethod]
public async Task<IResponseOutput> AddOrUpdateVolumeRewardPriceList(IEnumerable<AwardPriceCommand> addOrUpdateModel) public async Task<IResponseOutput> AddOrUpdateVolumeRewardPriceList(IEnumerable<AwardPriceCommand> addOrUpdateModel)
{ {
await _volumeRewardRepository.BatchDeleteAsync(t => t.Id != Guid.Empty); await _volumeRewardRepository.BatchDeleteNoTrackingAsync(t => t.Id != Guid.Empty);
var temp = _mapper.Map<List<VolumeReward>>(addOrUpdateModel); var temp = _mapper.Map<List<VolumeReward>>(addOrUpdateModel);
await _volumeRewardRepository.AddRangeAsync(temp); await _volumeRewardRepository.AddRangeAsync(temp);

View File

@ -57,7 +57,7 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{systemAnonymizationId:guid}")] [HttpDelete("{systemAnonymizationId:guid}")]
public async Task<IResponseOutput> DeleteSystemAnonymization(Guid systemAnonymizationId) public async Task<IResponseOutput> DeleteSystemAnonymization(Guid systemAnonymizationId)
{ {
var success = await systemAnonymizationRepository.BatchDeleteAsync(t => t.Id == systemAnonymizationId); var success = await systemAnonymizationRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemAnonymizationId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -70,7 +70,7 @@ namespace IRaCIS.Application.Services
//{ //{
// return ResponseOutput.NotOk("该CRO下存在用户暂时无法删除。"); // return ResponseOutput.NotOk("该CRO下存在用户暂时无法删除。");
//} //}
var success = await _croRepository.BatchDeleteAsync(x=>x.Id== cROCompanyId); var success = await _croRepository.BatchDeleteNoTrackingAsync(x=>x.Id== cROCompanyId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -54,7 +54,7 @@ namespace IRaCIS.Application.Services
// return ResponseOutput.NotOk("该医院下存在用户,暂时无法删除。"); // return ResponseOutput.NotOk("该医院下存在用户,暂时无法删除。");
//} //}
var success = await _hospitalRepository.BatchDeleteAsync(x => x.Id == hospitalId); var success = await _hospitalRepository.BatchDeleteNoTrackingAsync(x => x.Id == hospitalId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -69,7 +69,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This site has participated in the trial and couldn't be deleted."); return ResponseOutput.NotOk("This site has participated in the trial and couldn't be deleted.");
} }
var success = await _siteRepository.BatchDeleteAsync(x => x.Id == siteId); var success = await _siteRepository.BatchDeleteNoTrackingAsync(x => x.Id == siteId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
} }

View File

@ -75,7 +75,7 @@ namespace IRaCIS.Application.Services
//} //}
var success = await _sponsorRepository.BatchDeleteAsync(x => x.Id == sponsorId); var success = await _sponsorRepository.BatchDeleteNoTrackingAsync(x => x.Id == sponsorId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
} }

View File

@ -93,7 +93,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("不允许直接删除父节点"); return ResponseOutput.NotOk("不允许直接删除父节点");
} }
var success =await menuRepository.BatchDeleteAsync(u => u.Id == menuId); var success =await menuRepository.BatchDeleteNoTrackingAsync(u => u.Id == menuId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -73,7 +73,7 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{systemNoticeId:guid}")] [HttpDelete("{systemNoticeId:guid}")]
public async Task<IResponseOutput> DeleteSystemNotice(Guid systemNoticeId) public async Task<IResponseOutput> DeleteSystemNotice(Guid systemNoticeId)
{ {
var success = await _systemNoticeRepository.BatchDeleteAsync(t => t.Id == systemNoticeId); var success = await _systemNoticeRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemNoticeId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -93,13 +93,13 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("The mailbox for this user type already exists"); return ResponseOutput.NotOk("The mailbox for this user type already exists");
} }
await _userRepository.UpdatePartialFieldsNowAsync(_userInfo.Id, u => new User() await _userRepository.UpdateNowNoQueryAsync(_userInfo.Id, u => new User()
{ {
EMail = newEmail EMail = newEmail
}); });
//删除验证码历史记录 //删除验证码历史记录
await _verificationCodeRepository.BatchDeleteAsync(t => t.UserId == _userInfo.Id && t.CodeType == 0); await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.UserId == _userInfo.Id && t.CodeType == 0);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -113,7 +113,7 @@ namespace IRaCIS.Application.Services
{ {
await _userRepository.UpdatePartialFieldsNowAsync(_userInfo.Id, u => new User() await _userRepository.UpdateNowNoQueryAsync(_userInfo.Id, u => new User()
{ {
Phone = newPhone Phone = newPhone
}); });
@ -130,7 +130,7 @@ namespace IRaCIS.Application.Services
{ {
return ResponseOutput.NotOk("UserId already exists"); return ResponseOutput.NotOk("UserId already exists");
} }
await _userRepository.UpdatePartialFieldsNowAsync(_userInfo.Id, u => new User() await _userRepository.UpdateNowNoQueryAsync(_userInfo.Id, u => new User()
{ {
UserName = newUserName UserName = newUserName
}); });
@ -148,7 +148,7 @@ namespace IRaCIS.Application.Services
public async Task<IResponseOutput> ResetPassword(Guid userId) public async Task<IResponseOutput> ResetPassword(Guid userId)
{ {
await _userRepository.UpdatePartialFieldsNowAsync(userId, u => new User() await _userRepository.UpdateNowNoQueryAsync(userId, u => new User()
{ {
Password = MD5Helper.Md5(StaticData.DefaultPassword), Password = MD5Helper.Md5(StaticData.DefaultPassword),
IsFirstAdd = true IsFirstAdd = true
@ -228,7 +228,7 @@ namespace IRaCIS.Application.Services
{ {
//删除验证码历史记录 //删除验证码历史记录
await _verificationCodeRepository.BatchDeleteAsync(t => t.Id == verificationRecord.Id); await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.Id == verificationRecord.Id);
} }
} }
@ -260,7 +260,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("password not change"); return ResponseOutput.NotOk("password not change");
} }
var success = await _userRepository.BatchUpdateAsync(t => t.Id == userId, u => new User() var success = await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User()
{ {
Password = newPwd, Password = newPwd,
IsFirstAdd = false IsFirstAdd = false
@ -297,14 +297,14 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("UserId already exists"); return ResponseOutput.NotOk("UserId already exists");
} }
await _userRepository.BatchUpdateAsync(t => t.Id == _userInfo.Id, u => new User() await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new User()
{ {
UserName = editPwModel.NewUserName, UserName = editPwModel.NewUserName,
}); });
} }
var success = await _userRepository.BatchUpdateAsync(t => t.Id == _userInfo.Id, u => new User() var success = await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new User()
{ {
Password = editPwModel.NewPassWord, Password = editPwModel.NewPassWord,
IsFirstAdd = false IsFirstAdd = false
@ -318,7 +318,7 @@ namespace IRaCIS.Application.Services
//医生密码 //医生密码
if (await _doctorRepository.AnyAsync(t => t.Id == _userInfo.Id && t.Password == editPwModel.OldPassWord)) if (await _doctorRepository.AnyAsync(t => t.Id == _userInfo.Id && t.Password == editPwModel.OldPassWord))
{ {
var success = await _doctorRepository.BatchUpdateAsync(t => t.Id == _userInfo.Id, u => new Doctor() var success = await _doctorRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new Doctor()
{ {
Password = editPwModel.NewPassWord Password = editPwModel.NewPassWord
@ -445,7 +445,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This user has participated in the trial and couldn't be deleted"); return ResponseOutput.NotOk("This user has participated in the trial and couldn't be deleted");
} }
var success = await _userRepository.BatchDeleteAsync(t => t.Id == userId); var success = await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -460,7 +460,7 @@ namespace IRaCIS.Application.Services
[HttpPost("{userId:guid}/{state:int}")] [HttpPost("{userId:guid}/{state:int}")]
public async Task<IResponseOutput> UpdateUserState(Guid userId, UserStateEnum state) public async Task<IResponseOutput> UpdateUserState(Guid userId, UserStateEnum state)
{ {
var success = await _userRepository.BatchUpdateAsync(u => u.Id == userId, t => new User var success = await _userRepository.BatchUpdateNoTrackingAsync(u => u.Id == userId, t => new User
{ {
Status = state Status = state
}); });

View File

@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("该用户类型,被某些用户已使用,不能删除"); return ResponseOutput.NotOk("该用户类型,被某些用户已使用,不能删除");
} }
var success = await userTypeServiceRepository.BatchDeleteAsync(t => t.Id == userTypeId); var success = await userTypeServiceRepository.BatchDeleteNoTrackingAsync(t => t.Id == userTypeId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -166,7 +166,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{previousHistoryId:guid}")] [HttpDelete("{trialId:guid}/{previousHistoryId:guid}")]
public async Task<IResponseOutput> DeletePreviousHistory(Guid previousHistoryId) public async Task<IResponseOutput> DeletePreviousHistory(Guid previousHistoryId)
{ {
var success = await _previousHistoryRepository.BatchDeleteAsync(t => t.Id == previousHistoryId); var success = await _previousHistoryRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousHistoryId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -191,7 +191,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{previousOtherId:guid}")] [HttpDelete("{trialId:guid}/{previousOtherId:guid}")]
public async Task<IResponseOutput> DeletePreviousOther(Guid previousOtherId) public async Task<IResponseOutput> DeletePreviousOther(Guid previousOtherId)
{ {
var success = await _previousOtherRepository.BatchDeleteAsync(t => t.Id == previousOtherId); var success = await _previousOtherRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousOtherId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -216,7 +216,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{previousSurgeryId:guid}")] [HttpDelete("{trialId:guid}/{previousSurgeryId:guid}")]
public async Task<IResponseOutput> DeletePreviousSurgery(Guid previousSurgeryId) public async Task<IResponseOutput> DeletePreviousSurgery(Guid previousSurgeryId)
{ {
var success = await _previousSurgeryRepository.BatchDeleteAsync(t => t.Id == previousSurgeryId); var success = await _previousSurgeryRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousSurgeryId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -242,7 +242,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<IResponseOutput> DeletePreviousPDF(Guid previousPDFId) public async Task<IResponseOutput> DeletePreviousPDF(Guid previousPDFId)
{ {
var success = await _previousPdfRepository.BatchDeleteAsync(t => t.Id == previousPDFId); var success = await _previousPdfRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousPDFId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -115,7 +115,7 @@ namespace IRaCIS.Core.Application.Contracts
await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy); await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy);
await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.NoneDicomStudyId == noneDicomStudyId); await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == noneDicomStudyId); await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == noneDicomStudyId);
@ -128,7 +128,7 @@ namespace IRaCIS.Core.Application.Contracts
{ {
var subjectVisitId = await _noneDicomStudyFileRepository.Where(t => t.Id == noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync(); var subjectVisitId = await _noneDicomStudyFileRepository.Where(t => t.Id == noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync();
var success = await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyFileId); var success = await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.Id == noneDicomStudyFileId);
var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == subjectVisitId); var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == subjectVisitId);

View File

@ -408,7 +408,7 @@ namespace IRaCIS.Core.Application.Image.QA
{ {
return ResponseOutput.NotOk("核查通过的数据不允许申请回退"); return ResponseOutput.NotOk("核查通过的数据不允许申请回退");
} }
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { RequestBackState = RequestBackStateEnum.CRC_RequestBack }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { RequestBackState = RequestBackStateEnum.CRC_RequestBack });
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -1685,7 +1685,7 @@ namespace IRaCIS.Core.Application.Image.QA
qcChallenge.LatestMsgTime = DateTime.Now; qcChallenge.LatestMsgTime = DateTime.Now;
qcChallenge.LatestReplyUserId = _userInfo.Id; qcChallenge.LatestReplyUserId = _userInfo.Id;
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = true }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = true });
qcChallenge.DialogList.Add(new QCChallengeDialog() qcChallenge.DialogList.Add(new QCChallengeDialog()
{ {
@ -1790,7 +1790,7 @@ namespace IRaCIS.Core.Application.Image.QA
var dbSubjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == qcChallenge.SubjectVisitId).IfNullThrowException(); var dbSubjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == qcChallenge.SubjectVisitId).IfNullThrowException();
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = false }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = false });
qcChallenge.DialogList.Add(new QCChallengeDialog() qcChallenge.DialogList.Add(new QCChallengeDialog()
{ {
@ -2023,7 +2023,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (!result.IsSuccess) if (!result.IsSuccess)
{ {
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson()); return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson());
@ -2033,7 +2033,7 @@ namespace IRaCIS.Core.Application.Image.QA
} }
} }
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now }); u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now });
keyValuePairs["ForwardState"] = ForwardStateEnum.Forwarded; keyValuePairs["ForwardState"] = ForwardStateEnum.Forwarded;
@ -2041,7 +2041,7 @@ namespace IRaCIS.Core.Application.Image.QA
catch (Exception e) catch (Exception e)
{ {
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed }); u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
keyValuePairs["ForwardState"] = ForwardStateEnum.ForwardFailed; keyValuePairs["ForwardState"] = ForwardStateEnum.ForwardFailed;
} }

View File

@ -46,7 +46,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{qCQuestionConfigureId:guid}")] [HttpDelete("{qCQuestionConfigureId:guid}")]
public async Task<IResponseOutput> DeleteQCQuestionConfigure(Guid qCQuestionConfigureId) public async Task<IResponseOutput> DeleteQCQuestionConfigure(Guid qCQuestionConfigureId)
{ {
var success = await _qcQuestionRepository.BatchDeleteAsync(t => t.Id == qCQuestionConfigureId); var success = await _qcQuestionRepository.BatchDeleteNoTrackingAsync(t => t.Id == qCQuestionConfigureId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -151,7 +151,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("已有QC审核记录不允许删除问题项"); return ResponseOutput.NotOk("已有QC审核记录不允许删除问题项");
} }
var success = await _trialQcQuestionRepository.BatchDeleteAsync(t => t.Id == trialQCQuestionConfigureId); var success = await _trialQcQuestionRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialQCQuestionConfigureId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -72,7 +72,7 @@ namespace IRaCIS.Core.Application.Contracts
{ {
return ResponseOutput.NotOk("已锁定,不允许操作"); return ResponseOutput.NotOk("已锁定,不允许操作");
} }
var success = await _trialSiteEquipmentSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteEquipmentSurveyId); var success = await _trialSiteEquipmentSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteEquipmentSurveyId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -375,7 +375,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("已锁定,不允许操作"); return ResponseOutput.NotOk("已锁定,不允许操作");
} }
var success = await _trialSiteSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteSurveyId); var success = await _trialSiteSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteSurveyId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -634,12 +634,12 @@ namespace IRaCIS.Core.Application.Contracts
if (hasSPMOrCPM) if (hasSPMOrCPM)
{ {
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted }); await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
} }
else else
{ {
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit }); await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
} }
} }
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -751,7 +751,7 @@ namespace IRaCIS.Core.Application.Contracts
smtp.MessageSent += (sender, args) => smtp.MessageSent += (sender, args) =>
{ {
_ = _trialSiteUserSurveyRepository.BatchUpdateAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, InviteState = TrialSiteUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, SystemUserId = sysUserInfo.Id, ExpireTime = DateTime.Now.AddDays(7) }).Result; _ = _trialSiteUserSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, InviteState = TrialSiteUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, SystemUserId = sysUserInfo.Id, ExpireTime = DateTime.Now.AddDays(7) }).Result;
}; };
@ -799,12 +799,12 @@ namespace IRaCIS.Core.Application.Contracts
if (hasSPMOrCPM) if (hasSPMOrCPM)
{ {
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted }); await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
} }
else else
{ {
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved }); await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved });
} }
@ -812,7 +812,7 @@ namespace IRaCIS.Core.Application.Contracts
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
{ {
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved, PreliminaryUserId = _userInfo.Id, PreliminaryTime = DateTime.Now }); await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved, PreliminaryUserId = _userInfo.Id, PreliminaryTime = DateTime.Now });
} }
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager) else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
@ -829,7 +829,7 @@ namespace IRaCIS.Core.Application.Contracts
await SendInviteEmail(new InviteEmailCommand() { TrialId = trialId, RouteUrl = siteSurvyeSubmit.RouteUrl, UserList = needGenerateList }); await SendInviteEmail(new InviteEmailCommand() { TrialId = trialId, RouteUrl = siteSurvyeSubmit.RouteUrl, UserList = needGenerateList });
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now }); await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
} }

View File

@ -81,7 +81,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("已锁定,不允许操作"); return ResponseOutput.NotOk("已锁定,不允许操作");
} }
var success = await _trialSiteUserSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteUserSurveyId); var success = await _trialSiteUserSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteUserSurveyId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }

View File

@ -114,15 +114,15 @@ namespace IRaCIS.Core.Application
if (signConfirmDTO.SignCode == ((int)SignEnum.TrialLogicConfim).ToString()) if (signConfirmDTO.SignCode == ((int)SignEnum.TrialLogicConfim).ToString())
{ {
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialBasicLogicConfirmed = true }); await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialBasicLogicConfirmed = true });
} }
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialProcessConfim).ToString()) else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialProcessConfim).ToString())
{ {
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialProcessConfirmed = true }); await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialProcessConfirmed = true });
} }
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialUrgentConfim).ToString()) else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialUrgentConfim).ToString())
{ {
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true }); await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true });
} }
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString()) else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString())
@ -158,7 +158,7 @@ namespace IRaCIS.Core.Application
throw new BusinessValidationFailedException("父问题的序号要比子问题序号小,请确认"); throw new BusinessValidationFailedException("父问题的序号要比子问题序号小,请确认");
} }
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = DateTime.Now, QCQuestionConfirmedUserId = _userInfo.Id, IsQCQuestionConfirmed = true }); await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = DateTime.Now, QCQuestionConfirmedUserId = _userInfo.Id, IsQCQuestionConfirmed = true });
} }
@ -241,7 +241,7 @@ namespace IRaCIS.Core.Application
EnrollStatus = (int)EnrollStatus.Finished EnrollStatus = (int)EnrollStatus.Finished
}); });
await _trialRepository.BatchUpdateAsync(u => u.Id == trialId, s => new Trial { TrialFinishedTime = DateTime.UtcNow.AddHours(8) }); await _trialRepository.BatchUpdateNoTrackingAsync(u => u.Id == trialId, s => new Trial { TrialFinishedTime = DateTime.UtcNow.AddHours(8) });
} }
@ -279,11 +279,9 @@ namespace IRaCIS.Core.Application
[HttpPut("{trialId:guid}/{isAbandon:bool}")] [HttpPut("{trialId:guid}/{isAbandon:bool}")]
public async Task<IResponseOutput> AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon) public async Task<IResponseOutput> AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon)
{ {
await _trialRepository.UpdateNowNoQueryAsync(trialId, u => new Trial() { IsDeleted = isAbandon });
await _trialRepository.UpdatePartialFieldsNowAsync(trialId, u => new Trial() { IsDeleted = isAbandon });
//var success = await _repository.BatchUpdateAsync<TrialSign>(t => t.Id == signId, u => new TrialSign() { IsCompleted = true });
return ResponseOutput.Ok(); return ResponseOutput.Ok();

View File

@ -193,11 +193,11 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{trialExternalUserId:guid}/{isSystemUser:bool}/{systemUserId}")] [HttpDelete("{trialExternalUserId:guid}/{isSystemUser:bool}/{systemUserId}")]
public async Task<IResponseOutput> DeleteTrialExternalUser(Guid trialExternalUserId, bool isSystemUser, Guid systemUserId) public async Task<IResponseOutput> DeleteTrialExternalUser(Guid trialExternalUserId, bool isSystemUser, Guid systemUserId)
{ {
var success = await _trialExternalUseRepository.BatchDeleteAsync(t => t.Id == trialExternalUserId); var success = await _trialExternalUseRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialExternalUserId);
if (isSystemUser == false) if (isSystemUser == false)
{ {
await _userRepository.BatchDeleteAsync(t => t.Id == systemUserId); await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemUserId);
} }
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
@ -263,7 +263,7 @@ namespace IRaCIS.Core.Application.Service
smtp.MessageSent += (sender, args) => smtp.MessageSent += (sender, args) =>
{ {
_ = _trialExternalUseRepository.BatchUpdateAsync(t => t.Id == userInfo.Id, u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, ExpireTime = DateTime.Now.AddDays(7) }).Result; _ = _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == userInfo.Id, u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, ExpireTime = DateTime.Now.AddDays(7) }).Result;
}; };
@ -344,7 +344,7 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd) if (sysUserInfo.IsFirstAdd)
{ {
await _userRepository.BatchUpdateAsync(t => t.Id == sysUserInfo.Id, await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id,
u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) });
} }
@ -401,7 +401,7 @@ namespace IRaCIS.Core.Application.Service
await smtp.DisconnectAsync(true); await smtp.DisconnectAsync(true);
} }
await _userRepository.BatchUpdateAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable }); await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
} }
@ -487,7 +487,7 @@ namespace IRaCIS.Core.Application.Service
await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId }); await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId });
await _userRepository.BatchUpdateAsync(t => t.Id == needUpdate.SystemUserId, u => new User() { Status = UserStateEnum.Enable }); await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == needUpdate.SystemUserId, u => new User() { Status = UserStateEnum.Enable });
} }
@ -515,7 +515,7 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd) if (sysUserInfo.IsFirstAdd)
{ {
await _userRepository.BatchUpdateAsync(t => t.Id == sysUserInfo.Id, await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id,
u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) });
} }
@ -666,10 +666,10 @@ namespace IRaCIS.Core.Application.Service
{ {
await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = (Guid)externalUser.SystemUserId }); await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = (Guid)externalUser.SystemUserId });
await _trialExternalUseRepository.BatchUpdateAsync(t => t.Id == trialExternalUserId, await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialExternalUserId,
u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed }); u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed });
await _userRepository.BatchUpdateAsync(t => t.Id == externalUser.SystemUserId, u => new User() { Status = UserStateEnum.Enable }); await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == externalUser.SystemUserId, u => new User() { Status = UserStateEnum.Enable });
await _userRepository.SaveChangesAsync(); await _userRepository.SaveChangesAsync();
} }

View File

@ -204,7 +204,7 @@ namespace IRaCIS.Application.Services
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false }); await _repository.BatchUpdateAsync<SubjectVisit>(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
} }
await _trialUseRepository.BatchUpdateAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null }); await _trialUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
await _repository.SaveChangesAsync(); await _repository.SaveChangesAsync();

View File

@ -438,7 +438,7 @@ namespace IRaCIS.Application.Services
} }
} }
await _trialRepository.BatchUpdateAsync(u => u.Id == trialId, t => new Trial() { VisitPlanConfirmed = confirmOrCancel }); await _trialRepository.BatchUpdateNoTrackingAsync(u => u.Id == trialId, t => new Trial() { VisitPlanConfirmed = confirmOrCancel });
await _repository.BatchUpdateAsync<VisitStage>(u => u.Id == trialId, t => new VisitStage() { IsConfirmed = true }); await _repository.BatchUpdateAsync<VisitStage>(u => u.Id == trialId, t => new VisitStage() { IsConfirmed = true });

View File

@ -299,7 +299,7 @@ namespace IRaCIS.Core.Application.Services
{ {
var isSuccess = await _trialSiteUserRepository.BatchUpdateAsync(u => u.Id == id, u => new TrialSiteUser() var isSuccess = await _trialSiteUserRepository.BatchUpdateNoTrackingAsync(u => u.Id == id, u => new TrialSiteUser()
{ IsDeleted = isDelete, DeletedTime = isDelete ? DateTime.Now : null }); { IsDeleted = isDelete, DeletedTime = isDelete ? DateTime.Now : null });
return ResponseOutput.Ok(isSuccess); return ResponseOutput.Ok(isSuccess);

View File

@ -100,7 +100,7 @@ namespace IRaCIS.Core.Application.Service
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId }); await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId });
await _trialExternalUseRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.SystemUserId == userId, await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SystemUserId == userId,
u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed }); u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed });
@ -122,7 +122,7 @@ namespace IRaCIS.Core.Application.Service
} }
} }
await _userRepository.BatchUpdateAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable }); await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
return ResponseOutput.Ok(); return ResponseOutput.Ok();

View File

@ -190,8 +190,8 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This subject has executed a visit with uploading study images,and couldn't be deleted."); return ResponseOutput.NotOk("This subject has executed a visit with uploading study images,and couldn't be deleted.");
} }
var isSuccess = await _subjectRepository.BatchDeleteAsync(u => u.Id == id); var isSuccess = await _subjectRepository.BatchDeleteNoTrackingAsync(u => u.Id == id);
await _subjectVisitRepository.TrackingDeleteFromQueryAsync(u => u.SubjectId == id); await _subjectVisitRepository.DeleteFromQueryAsync(u => u.SubjectId == id);
var subvisit = await _subjectVisitRepository.Where(x => x.SubjectId == id).ToListAsync(); var subvisit = await _subjectVisitRepository.Where(x => x.SubjectId == id).ToListAsync();

View File

@ -161,7 +161,7 @@ namespace IRaCIS.Core.Application.Services
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{isUrgent:bool}")] [HttpPut("{trialId:guid}/{subjectVisitId:guid}/{isUrgent:bool}")]
public async Task<IResponseOutput> SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent) public async Task<IResponseOutput> SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent)
{ {
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { IsUrgent = isUrgent }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { IsUrgent = isUrgent });
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -197,7 +197,7 @@ namespace IRaCIS.Core.Application.Services
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> SetSVExecuted(Guid subjectVisitId) public async Task<IResponseOutput> SetSVExecuted(Guid subjectVisitId)
{ {
return ResponseOutput.Result(await _subjectVisitRepository.BatchUpdateAsync(s => s.Id == subjectVisitId, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Executed })); return ResponseOutput.Result(await _subjectVisitRepository.BatchUpdateNoTrackingAsync(s => s.Id == subjectVisitId, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Executed }));
} }

View File

@ -248,7 +248,7 @@ namespace IRaCIS.Application.Services
//更新项目访视计划状态为已确认 必定生成更新的sql 通过状态改变 触发操作 //更新项目访视计划状态为已确认 必定生成更新的sql 通过状态改变 触发操作
await _trialRepository.UpdatePartialFieldsNowAsync(trialId, t => new Trial() { VisitPlanConfirmed = true }); await _trialRepository.UpdateNowNoQueryAsync(trialId, t => new Trial() { VisitPlanConfirmed = true });
//找到访视计划修改的Item //找到访视计划修改的Item
@ -449,7 +449,7 @@ namespace IRaCIS.Application.Services
await _repository.AddRangeAsync(subjectVisits); await _repository.AddRangeAsync(subjectVisits);
//访视计划 整体状态变更为 确认 //访视计划 整体状态变更为 确认
await _visitStageRepository.BatchUpdateAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true, IsHaveFirstConfirmed = true }); await _visitStageRepository.BatchUpdateNoTrackingAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true, IsHaveFirstConfirmed = true });
await _repository.SaveChangesAsync(); await _repository.SaveChangesAsync();
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -504,7 +504,7 @@ namespace IRaCIS.Application.Services
await _repository.BatchDeleteAsync<SubjectVisit>(t => t.TrialId == visitPlan.TrialId && t.VisitName == visitPlan.VisitName); await _repository.BatchDeleteAsync<SubjectVisit>(t => t.TrialId == visitPlan.TrialId && t.VisitName == visitPlan.VisitName);
var result = await _visitStageRepository.BatchDeleteAsync(u => u.Id == id); var result = await _visitStageRepository.BatchDeleteNoTrackingAsync(u => u.Id == id);
return ResponseOutput.Result(result); return ResponseOutput.Result(result);
} }

View File

@ -60,7 +60,7 @@ namespace IRaCIS.Application.Services
if (attachmentViewModel.Id != Guid.Empty) if (attachmentViewModel.Id != Guid.Empty)
{ {
await _attachmentRepository.BatchDeleteAsync(t => t.Id == attachmentViewModel.Id); await _attachmentRepository.BatchDeleteNoTrackingAsync(t => t.Id == attachmentViewModel.Id);
} }
var attach = _mapper.Map<Attachment>(attachmentViewModel); var attach = _mapper.Map<Attachment>(attachmentViewModel);
@ -83,8 +83,8 @@ namespace IRaCIS.Application.Services
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> DeleteReviewerAckSOW(Guid trialId, Guid doctorId, Guid attachmentId) public async Task<IResponseOutput> DeleteReviewerAckSOW(Guid trialId, Guid doctorId, Guid attachmentId)
{ {
var success1 = await _attachmentRepository.BatchDeleteAsync(a => a.Id == attachmentId); var success1 = await _attachmentRepository.BatchDeleteNoTrackingAsync(a => a.Id == attachmentId);
var success2 = await _enrollRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u => var success2 = await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u =>
new Enroll() new Enroll()
{ {
AttachmentId = Guid.Empty AttachmentId = Guid.Empty
@ -100,7 +100,7 @@ namespace IRaCIS.Application.Services
[TypeFilter(typeof(TrialResourceFilter))] [TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> UpdateReviewerReadingType(Guid trialId, Guid doctorId, int type) public async Task<IResponseOutput> UpdateReviewerReadingType(Guid trialId, Guid doctorId, int type)
{ {
var success2 = await _enrollRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u => var success2 = await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u =>
new Enroll() new Enroll()
{ {
ReviewerReadingType = type ReviewerReadingType = type
@ -625,7 +625,7 @@ namespace IRaCIS.Application.Services
await _doctorWorkloadRepository.AddAsync(workLoad); await _doctorWorkloadRepository.AddAsync(workLoad);
await _enrollRepository.BatchUpdateAsync( await _enrollRepository.BatchUpdateNoTrackingAsync(
t => t.DoctorId == workLoadAddOrUpdateModel.DoctorId && t.TrialId == workLoadAddOrUpdateModel.TrialId, u => new Enroll() t => t.DoctorId == workLoadAddOrUpdateModel.DoctorId && t.TrialId == workLoadAddOrUpdateModel.TrialId, u => new Enroll()
{ {
EnrollStatus = (int)EnrollStatus.DoctorReading, EnrollStatus = (int)EnrollStatus.DoctorReading,
@ -648,7 +648,7 @@ namespace IRaCIS.Application.Services
} }
var success = await _doctorWorkloadRepository.BatchUpdateAsync(t => t.Id == workLoadAddOrUpdateModel.Id, var success = await _doctorWorkloadRepository.BatchUpdateNoTrackingAsync(t => t.Id == workLoadAddOrUpdateModel.Id,
u => new Workload() u => new Workload()
{ {
Timepoint = workLoadAddOrUpdateModel.Timepoint, Timepoint = workLoadAddOrUpdateModel.Timepoint,
@ -678,7 +678,7 @@ namespace IRaCIS.Application.Services
/// </summary> /// </summary>
public async Task<IResponseOutput> DeleteWorkload(Guid workloadId) public async Task<IResponseOutput> DeleteWorkload(Guid workloadId)
{ {
return ResponseOutput.Result(await _doctorWorkloadRepository.BatchDeleteAsync(t => t.Id == workloadId)); return ResponseOutput.Result(await _doctorWorkloadRepository.BatchDeleteNoTrackingAsync(t => t.Id == workloadId));
} }
/// <summary> /// <summary>

View File

@ -23,7 +23,7 @@ namespace IRaCIS.Application.Services
public string Get(testModel testModel) public string Get(testModel testModel)
{ {
var tt= _dicRepository.TrackingUpdateFromQueryAsync(Guid.Parse("e2b97a6c-35a6-4aa3-7f27-08da13ab33ff"), t => new Dictionary() { Description = "xxxxx" }, true).Result; var tt= _dicRepository.UpdateFromQueryAsync(Guid.Parse("e2b97a6c-35a6-4aa3-7f27-08da13ab33ff"), t => new Dictionary() { Description = "xxxxx" }, true).Result;
//var d = _repository.Where<User>(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault(); //var d = _repository.Where<User>(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault();
@ -33,7 +33,7 @@ namespace IRaCIS.Application.Services
//var dd = _dicRepository.UpdatePartialFields(Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), //var dd = _dicRepository.UpdatePartialFields(Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"),
// u => new Dictionary() { ParentId = null, Code = "test" }, true); // u => new Dictionary() { ParentId = null, Code = "test" }, true);
var aaaa = _dicRepository.BatchDeleteAsync(t => t.Id == Guid.Empty).Result; var aaaa = _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == Guid.Empty).Result;
//var ggggg = _dicRepository.UpdateFromQueryAsync(t => t.ParentId == Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), u=>new Dictionary(){Code = "test"}).Result; //var ggggg = _dicRepository.UpdateFromQueryAsync(t => t.ParentId == Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), u=>new Dictionary(){Code = "test"}).Result;

View File

@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Triggers
sv.IsFinalVisit = true; sv.IsFinalVisit = true;
//末次访视后的 访视设置为不可用 //末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == dbSubject.Id && t.VisitNum > sv.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == dbSubject.Id && t.VisitNum > sv.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
} }
} }

View File

@ -37,21 +37,21 @@ namespace IRaCIS.Core.Application.Triggers
throw new BusinessValidationFailedException("该受试者此访视后有影像上传,该访视不允许设置为末次访视"); throw new BusinessValidationFailedException("该受试者此访视后有影像上传,该访视不允许设置为末次访视");
} }
await _subjectRepository.BatchUpdateAsync(t => t.Id == subjectVisit.SubjectId, await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OutOfVisit }); u => new Subject() { Status = SubjectStatus.OutOfVisit });
//末次访视后的 访视设置为不可用 //末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
} }
else else
{ {
//回退 //回退
await _subjectRepository.BatchUpdateAsync(t => t.Id == subjectVisit.SubjectId, await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OnVisit }); u => new Subject() { Status = SubjectStatus.OnVisit });
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
} }

View File

@ -25,7 +25,7 @@ namespace IRaCIS.Core.Application.Triggers
{ {
await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId); await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId);
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
{ {
VisitExecuted = VisitExecutedEnum.Executed VisitExecuted = VisitExecutedEnum.Executed
}); });
@ -46,7 +46,7 @@ namespace IRaCIS.Core.Application.Triggers
if (context.ChangeType == ChangeType.Added ) if (context.ChangeType == ChangeType.Added )
{ {
await UpdateSubjectVisitImageDateAsync(subjectVisitId); await UpdateSubjectVisitImageDateAsync(subjectVisitId);
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
{ {
VisitExecuted = VisitExecutedEnum.Executed VisitExecuted = VisitExecutedEnum.Executed
}); });
@ -88,7 +88,7 @@ namespace IRaCIS.Core.Application.Triggers
await _subjectVisitRepository.AddListInspectionRecordAsync(datas); await _subjectVisitRepository.AddListInspectionRecordAsync(datas);
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None }); u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None });
} }
} }
@ -108,7 +108,7 @@ namespace IRaCIS.Core.Application.Triggers
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime }; var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime }; var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
await _subjectVisitRepository.BatchUpdateAsync(t=>t.Id ==subjectVisitId, u => new SubjectVisit() await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t=>t.Id ==subjectVisitId, u => new SubjectVisit()
{ {
EarliestScanDate = minArray.Min(), EarliestScanDate = minArray.Min(),

View File

@ -170,7 +170,7 @@ namespace IRaCIS.Core.Application.Triggers
}); });
//变更某一访视计划Item 受试者访视相关字段 //变更某一访视计划Item 受试者访视相关字段
await _subjectVisitRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.VisitStageId == changedItem.Id, k => new SubjectVisit() await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.VisitStageId == changedItem.Id, k => new SubjectVisit()
{ {
IsBaseLine = changedItem.IsBaseLine, IsBaseLine = changedItem.IsBaseLine,
VisitName = changedItem.VisitName, VisitName = changedItem.VisitName,

View File

@ -22,36 +22,38 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary>EF跟踪方式 生成 部分字段立即更新,默认会去处理更新更新人 更新时间</summary> /// <summary>EF跟踪方式 生成 部分字段立即更新,默认会去处理更新更新人 更新时间</summary>
Task<bool> UpdatePartialFieldsNowAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, params EntityVerifyExp<TEntity>[] verify); Task<bool> UpdateNowNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, params EntityVerifyExp<TEntity>[] verify);
/// <summary> EF跟踪方式 生成 部分字段更新, 通过主键id 和表达式树 更新部分字段,默认不提交事务,一般用于服务里面 和别的操作 一起提交事务</summary> /// <summary> EF跟踪方式 生成 部分字段更新, 通过主键id 和表达式树 更新部分字段,默认不提交事务,一般用于服务里面 和别的操作 一起提交事务</summary>
Task UpdatePartialFieldsAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify); Task UpdateNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify);
/// <summary>批量删除相当于原生sql 没用EF跟踪方式所有查询出来再删除 浪费性能)</summary> /// <summary>批量删除相当于原生sql 没用EF跟踪方式所有查询出来再删除 浪费性能)</summary>
Task<bool> BatchDeleteAsync(Expression<Func<TEntity, bool>> deleteFilter); Task<bool> BatchDeleteNoTrackingAsync(Expression<Func<TEntity, bool>> deleteFilter);
/// <summary>批量更新相当于原生sql 没用EF跟踪方式所有查询出来再更新 浪费性能)</summary> /// <summary>批量更新相当于原生sql 没用EF跟踪方式所有查询出来再更新 浪费性能)</summary>
Task<bool> BatchUpdateAsync(Expression<Func<TEntity, bool>> where, Expression<Func<TEntity, TEntity>> updateFactory); Task<bool> BatchUpdateNoTrackingAsync(Expression<Func<TEntity, bool>> where, Expression<Func<TEntity, TEntity>> updateFactory);
/// <summary>批量删除EF跟踪方式所有查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary> /// <summary>批量删除EF跟踪方式所有查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary>
Task<List<TEntity>> TrackingDeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false); Task<List<TEntity>> DeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false,bool ignoreQueryFilter = false);
Task<TEntity> TrackingDeleteFromQueryAsync(Guid id, bool autoSave = false); Task<TEntity> DeleteFromQueryAsync(Guid id, bool autoSave = false, bool ignoreQueryFilter = false);
/// <summary> EF跟踪方式 已有查询好的,再更新部分字段 稽查的时候需要完整的实体信息</summary> /// <summary> EF跟踪方式 已有查询好的,再更新部分字段 稽查的时候需要完整的实体信息</summary>
Task<bool> TrackingUpdateAsync(TEntity entity, Expression<Func<TEntity, TEntity>> updateFactory, Task<bool> UpdateAsync(TEntity entity, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default); bool autoSave = false, CancellationToken cancellationToken = default);
/// <summary> EF跟踪方式 先查询出来,再更新部分字段 稽查的时候需要完整的实体信息</summary> /// <summary> EF跟踪方式 先查询出来,再更新部分字段 稽查的时候需要完整的实体信息</summary>
Task<TEntity> TrackingUpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, Task<TEntity> UpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default); bool autoSave = false, bool ignoreQueryFilter = false, CancellationToken cancellationToken = default);
Task TrackingUpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter, Task UpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Expression<Func<TEntity, TEntity>> updateFactory, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default); bool autoSave = false , bool ignoreQueryFilter = false,CancellationToken cancellationToken = default);

View File

@ -140,7 +140,7 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary> EF跟踪方式 生成 部分字段更新, 通过主键id 和表达式树 更新部分字段 /// <summary> EF跟踪方式 生成 部分字段更新, 通过主键id 和表达式树 更新部分字段
/// 例如 Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"),u => new Dictionary() { ParentId = null, Code = "test" }默认会去处理更新更新人 更新时间</summary> /// 例如 Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"),u => new Dictionary() { ParentId = null, Code = "test" }默认会去处理更新更新人 更新时间</summary>
public async Task UpdatePartialFieldsAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify) public async Task UpdateNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify)
{ {
await SetPartialFieldUpdateAsync(id, updateFactory, verify); await SetPartialFieldUpdateAsync(id, updateFactory, verify);
@ -150,7 +150,7 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary> EF跟踪方式 生成 部分字段立即更新,默认会去处理更新更新人 更新时间 </summary> /// <summary> EF跟踪方式 生成 部分字段立即更新,默认会去处理更新更新人 更新时间 </summary>
public async Task<bool> UpdatePartialFieldsNowAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, public async Task<bool> UpdateNowNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
params EntityVerifyExp<TEntity>[] verify) params EntityVerifyExp<TEntity>[] verify)
{ {
await SetPartialFieldUpdateAsync(id, updateFactory, verify); await SetPartialFieldUpdateAsync(id, updateFactory, verify);
@ -226,27 +226,10 @@ namespace IRaCIS.Core.Infra.EFCore
public async Task TrackingUpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default)
{
if (updateFilter == null)
{
throw new ArgumentException("更新过滤条件不允许为空", nameof(updateFilter));
}
var searchEntityList = await _dbSet.AsNoTracking().Where(updateFilter).ToListAsync();
foreach (var needUpdateEntity in searchEntityList)
{
await TrackingUpdateAsync(needUpdateEntity, updateFactory, autoSave);
}
}
/// <summary>EF跟踪方式 外层先有查询好的完成实体,再更新部分字段 稽查的时候需要完整的实体信息</summary> /// <summary>EF跟踪方式 外层先有查询好的完成实体,再更新部分字段 稽查的时候需要完整的实体信息</summary>
public async Task<bool> TrackingUpdateAsync(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, CancellationToken cancellationToken = default) public async Task<bool> UpdateAsync(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, CancellationToken cancellationToken = default)
{ {
var entityEntry = _dbContext.Entry(waitModifyEntity); var entityEntry = _dbContext.Entry(waitModifyEntity);
entityEntry.State = EntityState.Detached; entityEntry.State = EntityState.Detached;
@ -259,14 +242,14 @@ namespace IRaCIS.Core.Infra.EFCore
} }
/// <summary>EF跟踪方式 先查询出来,再更新部分字段 稽查的时候需要完整的实体信息</summary> /// <summary>EF跟踪方式 先查询出来,再更新部分字段 稽查的时候需要完整的实体信息</summary>
public async Task<TEntity> TrackingUpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, public async Task<TEntity> UpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default) bool autoSave = false, bool ignoreQueryFilter = false, CancellationToken cancellationToken = default)
{ {
var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
//不跟踪 查询出来的实体就是Detached //不跟踪 查询出来的实体就是Detached
var searchEntity = await _dbSet.AsNoTracking().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id); var searchEntity = await query.FirstOrDefaultAsync(t => t.Id == id);
if (searchEntity == null) if (searchEntity == null)
{ {
@ -283,7 +266,27 @@ namespace IRaCIS.Core.Infra.EFCore
return searchEntity; return searchEntity;
} }
/// <summary>应用更新后拥有完整的实体信息,便于稽查</summary> public async Task UpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, bool ignoreQueryFilter = false, CancellationToken cancellationToken = default)
{
if (updateFilter == null)
{
throw new ArgumentException("更新过滤条件不允许为空", nameof(updateFilter));
}
var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
var searchEntityList = await query.Where(updateFilter).ToListAsync();
foreach (var needUpdateEntity in searchEntityList)
{
await UpdateAsync(needUpdateEntity, updateFactory, autoSave);
}
}
/// <summary>更新后拥有完整的实体信息,便于稽查</summary>
private void ModifyPartialFiled(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory) private void ModifyPartialFiled(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory)
{ {
List<PropertyInfo> list = ((MemberInitExpression)updateFactory.Body).Bindings.Select(mb => mb.Member.Name) List<PropertyInfo> list = ((MemberInitExpression)updateFactory.Body).Bindings.Select(mb => mb.Member.Name)
@ -318,9 +321,11 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary>EF跟踪方式查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary> /// <summary>EF跟踪方式查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary>
public async Task<TEntity> TrackingDeleteFromQueryAsync(Guid id, bool autoSave = false) public async Task<TEntity> DeleteFromQueryAsync(Guid id, bool autoSave = false, bool ignoreQueryFilter = false)
{ {
var waitDelete = await _dbSet.IgnoreQueryFilters().Where(t=>t.Id== id).FirstOrDefaultAsync(); var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
var waitDelete = await query.Where(t=>t.Id== id).FirstOrDefaultAsync();
if (waitDelete == null) if (waitDelete == null)
{ {
@ -335,9 +340,10 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary>批量删除EF跟踪方式所有查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary> /// <summary>批量删除EF跟踪方式所有查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary>
public async Task<List<TEntity>> TrackingDeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false) public async Task<List<TEntity>> DeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false, bool ignoreQueryFilter = false)
{ {
var waitDeleteList = await _dbSet.IgnoreQueryFilters().Where(deleteFilter).ToListAsync(); var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
var waitDeleteList = await query.Where(deleteFilter).ToListAsync();
foreach (var deleteItem in waitDeleteList) foreach (var deleteItem in waitDeleteList)
{ {
@ -357,14 +363,14 @@ namespace IRaCIS.Core.Infra.EFCore
#region 不走EF 跟踪机制的删除 更新 以及批量操作 #region 不走EF 跟踪机制的删除 更新 以及批量操作
/// <summary>批量删除相当于原生sql 没用EF跟踪方式所有查询出来再删除 浪费性能)</summary> /// <summary>批量删除相当于原生sql 没用EF跟踪方式所有查询出来再删除 浪费性能)</summary>
public async Task<bool> BatchDeleteAsync(Expression<Func<TEntity, bool>> deleteFilter) public async Task<bool> BatchDeleteNoTrackingAsync(Expression<Func<TEntity, bool>> deleteFilter)
{ {
return await _dbSet.IgnoreQueryFilters().Where(deleteFilter).BatchDeleteAsync() > 0; return await _dbSet.IgnoreQueryFilters().Where(deleteFilter).BatchDeleteAsync() > 0;
} }
/// <summary>批量更新相当于原生sql 没用EF跟踪方式所有查询出来再更新 浪费性能)</summary> /// <summary>批量更新相当于原生sql 没用EF跟踪方式所有查询出来再更新 浪费性能)</summary>
public async Task<bool> BatchUpdateAsync(Expression<Func<TEntity, bool>> where, public async Task<bool> BatchUpdateNoTrackingAsync(Expression<Func<TEntity, bool>> where,
Expression<Func<TEntity, TEntity>> updateFactory) Expression<Func<TEntity, TEntity>> updateFactory)
{ {