diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs
index d1b7790d6..8e12973fc 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/ReadingQuestionViewModel.cs
@@ -49,6 +49,31 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public ArbitrationRule ArbitrationRule { get; set; }
}
+ public enum NeedSynchronize
+ {
+ ///
+ /// 需要
+ ///
+ Need=0,
+
+ ///
+ /// 不需要
+ ///
+ NotNeed = 1,
+
+ ///
+ /// 裁判不相等
+ ///
+ JudgeNotEqual=2,
+
+ }
+
+ public class SynchronizeCriterionInDto
+ {
+ [NotDefault]
+ public Guid TrialId { get; set; }
+ }
+
public class VerifyeCriterionNeedSynchronizeInDto
{
[NotDefault]
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs
index c1751902e..fbf124f95 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingQuestionService.cs
@@ -104,92 +104,121 @@ namespace IRaCIS.Application.Services
///
///
[HttpPost]
- public async Task VerifyeCriterionNeedSynchronize(VerifyeCriterionNeedSynchronizeInDto inDto)
+ public async Task VerifyeCriterionNeedSynchronize(VerifyeCriterionNeedSynchronizeInDto inDto)
{
var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId&&x.IsConfirm).FirstOrDefaultAsync();
if (trialCriterion == null)
{
- return false;
+ return NeedSynchronize.NotNeed;
}
if (trialCriterion.ReadingQuestionCriterionSystemId != null)
{
var systemCriterion = await _readingQuestionCriterionSystemRepository.Where(x => x.Id == trialCriterion.ReadingQuestionCriterionSystemId).FirstNotNullAsync();
if (systemCriterion.ConfirmTime > trialCriterion.SynchronizeTime)
{
- await SynchronizeCriterion(trialCriterion.Id);
- return true;
-
+
+ var systemQuestionList = await _readingQuestionSystemRepository.Where(x => x.IsJudgeQuestion && x.ReadingQuestionCriterionSystemId == trialCriterion.ReadingQuestionCriterionSystemId).ToListAsync();
+ var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.IsJudgeQuestion && x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync();
+ if (systemQuestionList.Count() != trialQuestionList.Count())
+ {
+ return NeedSynchronize.JudgeNotEqual;
+ }
+
+
+ foreach (var item in trialQuestionList)
+ {
+ var systemQuestion= systemQuestionList.Where(x=>x.Id== (item.ReadingQuestionSystemId??default(Guid))).FirstOrDefault();
+ if (systemQuestion == null)
+ {
+ return NeedSynchronize.JudgeNotEqual;
+ }
+
+
+ if (systemQuestion.TypeValue != item.TypeValue)
+ {
+ return NeedSynchronize.JudgeNotEqual;
+ }
+ }
+
+
+ return NeedSynchronize.Need;
+
}
else
{
- return false;
+ return NeedSynchronize.NotNeed;
}
}
else
{
- return false;
+ return NeedSynchronize.NotNeed;
}
}
///
/// 同步标准到项目新(2022-08-10)
///
- ///
+ ///
///
- public async Task SynchronizeCriterion(Guid trialCriterionId)
+ public async Task SynchronizeCriterion(SynchronizeCriterionInDto inDto)
{
- var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == trialCriterionId).FirstNotNullAsync();
- if(trialCriterion.ReadingQuestionCriterionSystemId!=null)
+ var trialCriterion = await _readingQuestionCriterionTrialRepository.Where(x => x.TrialId == inDto.TrialId&&x.IsConfirm).AsNoTracking().FirstOrDefaultAsync();
+
+ if (trialCriterion != null)
{
-
- // 将系统里面的问题转为项目问题
- var newTrialQuestionList = await _readingQuestionSystemRepository.Where(x => x.ReadingQuestionCriterionSystemId == trialCriterion.ReadingQuestionCriterionSystemId)
- .ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
- newTrialQuestionList.ForEach(x => {
- x.Id = NewId.NextGuid();
- x.ReadingQuestionCriterionTrialId = trialCriterionId;
- x.TrialId = trialCriterion.TrialId;
- });
- var copeNewQuestionList = newTrialQuestionList.Clone();
- var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterionId).ToListAsync();
-
- var needAddDatas = new List();
-
- foreach (var x in newTrialQuestionList)
+ if (trialCriterion.ReadingQuestionCriterionSystemId != null)
{
- var question = x.Clone();
- var firstQuestion = trialQuestionList.Where(y => y.ReadingQuestionSystemId == x.ReadingQuestionSystemId).FirstOrDefault();
- if (firstQuestion != null)
+ // 将系统里面的问题转为项目问题
+ var newTrialQuestionList = await _readingQuestionSystemRepository.Where(x => x.ReadingQuestionCriterionSystemId == trialCriterion.ReadingQuestionCriterionSystemId)
+ .ProjectTo(_mapper.ConfigurationProvider).ToListAsync();
+ newTrialQuestionList.ForEach(x => {
+ x.Id = NewId.NextGuid();
+ x.ReadingQuestionCriterionTrialId = trialCriterion.Id;
+ x.TrialId = trialCriterion.TrialId;
+ });
+ var copeNewQuestionList = newTrialQuestionList.Clone();
+ var trialQuestionList = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id).ToListAsync();
+
+ var needAddDatas = new List();
+
+ foreach (var x in newTrialQuestionList)
{
- var systemData = _mapper.Map(x);
- var newData = _mapper.Map(systemData, firstQuestion);
- newData.Id = x.Id;
- newData.ReadingQuestionSystemId= x.ReadingQuestionSystemId;
- question = newData.Clone();
- }
+ var question = x.Clone();
- if (question.ParentId != null)
+ var firstQuestion = trialQuestionList.Where(y => y.ReadingQuestionSystemId == x.ReadingQuestionSystemId).FirstOrDefault();
+ if (firstQuestion != null)
+ {
+ var systemData = _mapper.Map(x);
+ var newData = _mapper.Map(systemData, firstQuestion);
+ newData.Id = x.Id;
+ newData.ReadingQuestionSystemId = x.ReadingQuestionSystemId;
+ question = newData.Clone();
+ }
+
+ if (question.ParentId != null)
+ {
+ question.ParentId = copeNewQuestionList.Where(y => x.ParentId == y.ReadingQuestionSystemId).Select(y => y.Id).FirstOrDefault();
+ }
+ if (question.RelevanceId != null)
+ {
+ question.RelevanceId = copeNewQuestionList.Where(y => x.RelevanceId == y.ReadingQuestionSystemId).Select(y => y.Id).FirstOrDefault();
+ }
+
+ needAddDatas.Add(question);
+ };
+
+ await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(x => x.ReadingQuestionCriterionTrialId == trialCriterion.Id);
+ await _readingQuestionTrialRepository.AddRangeAsync(needAddDatas);
+ await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(trialCriterion.Id, x => new ReadingQuestionCriterionTrial()
{
- question.ParentId = copeNewQuestionList.Where(y =>x.ParentId==y.ReadingQuestionSystemId ).Select(y => y.Id).FirstOrDefault();
- }
- if (question.RelevanceId != null)
- {
- question.RelevanceId = copeNewQuestionList.Where(y => x.RelevanceId == y.ReadingQuestionSystemId).Select(y => y.Id).FirstOrDefault();
- }
-
- needAddDatas.Add(question);
- };
-
- await _readingQuestionTrialRepository.BatchDeleteNoTrackingAsync(x => x.ReadingQuestionCriterionTrialId == trialCriterionId);
- await _readingQuestionTrialRepository.AddRangeAsync(needAddDatas);
- await _readingQuestionCriterionTrialRepository.UpdatePartialFromQueryAsync(trialCriterionId, x => new ReadingQuestionCriterionTrial()
- {
- SynchronizeTime = DateTime.Now
- });
- await _readingQuestionTrialRepository.SaveChangesAsync();
+ SynchronizeTime = DateTime.Now
+ });
+ await _readingQuestionTrialRepository.SaveChangesAsync();
+ }
}
+
}