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
continuous-integration/drone/push Build is passing
Details
commit
ffe6a0a4a9
|
@ -354,7 +354,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
[HttpPost("{id:guid}")]
|
||||
public async Task<IResponseOutput> DeleteCustomTag(Guid id)
|
||||
{
|
||||
|
||||
if (await _readingTaskQuestionMarkRepository.AnyAsync(t => (t.Id == id || t.MarkId == id) && t.QuestionId != null))
|
||||
{
|
||||
throw new BusinessValidationFailedException(_localizer["ReadingCustomTag_CannotDelete"]);
|
||||
}
|
||||
|
||||
var success = await _readingTaskQuestionMarkRepository.DeleteFromQueryAsync(t => t.Id == id||t.MarkId==id, true);
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
@ -2189,28 +2196,123 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
async Task addOrEditmark(List<QuestionMarkInfo> addOrUpdatemarkList)
|
||||
{
|
||||
#region 老的代码
|
||||
//var markids = addOrUpdatemarkList.Select(x => x.MarkId).Where(x => x != null).Distinct().ToList();
|
||||
|
||||
var markids= addOrUpdatemarkList.Select(x => x.MarkId).Where(x => x != null).Distinct().ToList();
|
||||
//var markQuestionIds = addOrUpdatemarkList.Select(y => (Guid?)y.QuestionId).ToList();
|
||||
|
||||
var markQuestionIds= addOrUpdatemarkList.Select(y => (Guid?)y.QuestionId).ToList();
|
||||
|
||||
// 绑定的历史标记的话 相当于要把历史标记改为现在的标记 先删再添加 得到的结果一样
|
||||
await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => markids.Contains(x.MarkId)&&x.QuestionId==null );
|
||||
//// 绑定的历史标记的话 相当于要把历史标记改为现在的标记 先删再添加 得到的结果一样
|
||||
//await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => markids.Contains(x.MarkId) && x.QuestionId == null);
|
||||
|
||||
|
||||
await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && markQuestionIds.Contains(x.QuestionId));
|
||||
//// 这里还不能直接删除 因为可能该问题绑定的原标记为a 现在新绑定的标记要为b 那么就需要把原标记a的绑定关系删除
|
||||
|
||||
var datetime = DateTime.Now;
|
||||
//var oldMark = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && markQuestionIds.Contains(x.QuestionId) && x.MarkId != null).ToListAsync();
|
||||
|
||||
var markList = _mapper.Map<List<QuestionMarkInfo>, List<ReadingTaskQuestionMark>>(addOrUpdatemarkList);
|
||||
markList.ForEach(x =>
|
||||
//// 这里稽查又要记录为新增 只能把原标记记录为先删除再添加 不然稽查又对不上
|
||||
//List<ReadingTaskQuestionMark> oldAddMark = new List<ReadingTaskQuestionMark>();
|
||||
|
||||
//foreach (var item in oldMark)
|
||||
//{
|
||||
// if (addOrUpdatemarkList.Any(x => x.QuestionId == item.QuestionId && x.MarkId != item.MarkId))
|
||||
// {
|
||||
// var olditem = item.Clone();
|
||||
|
||||
// olditem.QuestionId = null;
|
||||
// olditem.TableQuestionId = null;
|
||||
// olditem.RowId = null;
|
||||
// olditem.RowIndex = null;
|
||||
// oldAddMark.Add(olditem);
|
||||
// }
|
||||
//}
|
||||
|
||||
//await _readingTaskQuestionMarkRepository.BatchDeleteNoTrackingAsync(x => x.VisitTaskId == inDto.VisitTaskId && markQuestionIds.Contains(x.QuestionId));
|
||||
|
||||
//var datetime = DateTime.Now;
|
||||
|
||||
//var markList = _mapper.Map<List<QuestionMarkInfo>, List<ReadingTaskQuestionMark>>(addOrUpdatemarkList);
|
||||
//markList.ForEach(x =>
|
||||
//{
|
||||
// x.Id = NewId.NextGuid();
|
||||
// x.VisitTaskId = inDto.VisitTaskId;
|
||||
// x.CreateTime = datetime;
|
||||
// x.FristAddTaskId = questionMarkList.Where(y => y.QuestionId == x.QuestionId).Select(x => x.FristAddTaskId).FirstOrDefault() ?? inDto.VisitTaskId;
|
||||
//});
|
||||
//// 原来移除关系的 已经删除 这里要添加 为什么要先删再加 因为稽查需要记录 稽查的记录方式为Add
|
||||
//oldAddMark.AddRange(markList);
|
||||
//await _readingTaskQuestionMarkRepository.AddRangeAsync(oldAddMark);
|
||||
#endregion
|
||||
|
||||
foreach (var item in addOrUpdatemarkList)
|
||||
{
|
||||
x.Id = NewId.NextGuid();
|
||||
x.VisitTaskId = inDto.VisitTaskId;
|
||||
x.CreateTime = datetime;
|
||||
x.FristAddTaskId = questionMarkList.Where(y => y.QuestionId == x.QuestionId).Select(x => x.FristAddTaskId).FirstOrDefault() ?? inDto.VisitTaskId;
|
||||
});
|
||||
await _readingTaskQuestionMarkRepository.AddRangeAsync(markList);
|
||||
var oldMark = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.QuestionId == item.QuestionId).FirstOrDefaultAsync();
|
||||
if (oldMark != null)
|
||||
{
|
||||
// 这种情况要先移除原来标记的绑定关系
|
||||
if (oldMark.MarkId != item.MarkId)
|
||||
{
|
||||
await _readingTaskQuestionMarkRepository.UpdatePartialFromQueryAsync(x => x.Id == oldMark.Id, x => new ReadingTaskQuestionMark()
|
||||
{
|
||||
QuestionId = null,
|
||||
TableQuestionId = null,
|
||||
RowId = null,
|
||||
RowIndex = null,
|
||||
});
|
||||
|
||||
var newMark = _mapper.Map<QuestionMarkInfo, ReadingTaskQuestionMark>(item);
|
||||
newMark.Id = NewId.NextGuid();
|
||||
newMark.VisitTaskId = inDto.VisitTaskId;
|
||||
newMark.FristAddTaskId = inDto.VisitTaskId;
|
||||
await _readingTaskQuestionMarkRepository.AddAsync(newMark);
|
||||
}
|
||||
else
|
||||
{
|
||||
// 这种情况直接更新
|
||||
await _readingTaskQuestionMarkRepository.UpdatePartialFromQueryAsync(x => x.Id == oldMark.Id, x => new ReadingTaskQuestionMark()
|
||||
{
|
||||
MeasureData = item.MeasureData ?? string.Empty,
|
||||
OtherMeasureData = item.OtherMeasureData ?? string.Empty,
|
||||
PicturePath = item.PicturePath ?? string.Empty,
|
||||
OtherPicturePath = item.OtherPicturePath ?? string.Empty,
|
||||
MarkTool = item.MarkTool ?? string.Empty,
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 这种情况可能是绑定历史的标记
|
||||
|
||||
if (item.MarkId != null && (await _readingTaskQuestionMarkRepository.AnyAsync(x => x.VisitTaskId == inDto.VisitTaskId&& x.QuestionId == null && x.MarkId == item.MarkId)))
|
||||
{
|
||||
|
||||
var oldMarkItem = await _readingTaskQuestionMarkRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId && x.MarkId == item.MarkId && x.QuestionId == null).FirstOrDefaultAsync();
|
||||
|
||||
await _readingTaskQuestionMarkRepository.UpdatePartialFromQueryAsync(x => x.Id == oldMarkItem.Id, x => new ReadingTaskQuestionMark()
|
||||
{
|
||||
QuestionId = item.QuestionId,
|
||||
TableQuestionId = item.TableQuestionId,
|
||||
RowId = item.RowId,
|
||||
MeasureData = item.MeasureData ?? string.Empty,
|
||||
OtherMeasureData = item.OtherMeasureData ?? string.Empty,
|
||||
PicturePath = item.PicturePath ?? string.Empty,
|
||||
OtherPicturePath = item.OtherPicturePath ?? string.Empty,
|
||||
MarkTool = item.MarkTool ?? string.Empty,
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
var newMark = _mapper.Map<QuestionMarkInfo, ReadingTaskQuestionMark>(item);
|
||||
newMark.Id = NewId.NextGuid();
|
||||
newMark.VisitTaskId = inDto.VisitTaskId;
|
||||
newMark.FristAddTaskId = inDto.VisitTaskId;
|
||||
await _readingTaskQuestionMarkRepository.AddAsync(newMark);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3168,11 +3168,26 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
generalId = IdentifierHelper.CreateGuid(entity.VisitTaskId.ToString(), entity.QuestionId.ToString(), entity.RowId.ToString(), entity.TableQuestionId.ToString(), "ReadingTaskQuestionMark");
|
||||
}
|
||||
|
||||
|
||||
bool isDistinctionInterface = true;
|
||||
var customPrefix=string.Empty;
|
||||
|
||||
// 对于一个标记绑定两个问题的不计稽查
|
||||
var exixtsMark = await _dbContext.ReadingTaskQuestionMark.AnyAsync(t => t.MarkId == entity.MarkId);
|
||||
// 自定义表格 和问题添加标记的时候 要记录为 添加标记
|
||||
if ((_userInfo.RequestUrl == "SaveTaskQuestion/-10"
|
||||
|| _userInfo.RequestUrl == "saveTableQuestionMark/-10") && type== "Add"&&!exixtsMark)
|
||||
{
|
||||
isDistinctionInterface = false;
|
||||
customPrefix = "ReadingImageTask/submitCustomTag";
|
||||
}
|
||||
|
||||
await InsertInspection<ReadingTaskQuestionMark>(entity, type, x => new InspectionConvertDTO()
|
||||
{
|
||||
VisitTaskId = entity.VisitTaskId,
|
||||
GeneralId = generalId,
|
||||
ObjectRelationParentId = entity.VisitTaskId,
|
||||
IsDistinctionInterface = isDistinctionInterface,
|
||||
|
||||
}, new
|
||||
{
|
||||
|
@ -3181,7 +3196,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
TableQuestionName = tableQuestionName,
|
||||
Answer = answer,
|
||||
LiverSegmentation = liverSegmentation,
|
||||
}, _userInfo.AuditIdentification);
|
||||
},string.Empty, customPrefix);
|
||||
}
|
||||
|
||||
//保存影像质量 多条记录,只记录一条稽查
|
||||
|
@ -3996,8 +4011,10 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
/// <param name="type">类型</param>
|
||||
/// <param name="expression">表达式</param>
|
||||
/// <param name="otherItem">其他对象</param>
|
||||
/// <param name="auditIdentification">额外标识</param>
|
||||
/// <param name="customPrefix">自定义前缀</param>
|
||||
/// <returns></returns>
|
||||
public async Task InsertInspection<T>(T entityObj, string type, Expression<Func<T, InspectionConvertDTO>> expression = null, object otherItem = null, string auditIdentification = "") where T : Entity
|
||||
public async Task InsertInspection<T>(T entityObj, string type, Expression<Func<T, InspectionConvertDTO>> expression = null, object otherItem = null, string auditIdentification = "", string customPrefix = "") where T : Entity
|
||||
{
|
||||
|
||||
InspectionConvertDTO inspection = new InspectionConvertDTO();
|
||||
|
@ -4014,7 +4031,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
var generalId = (inspection.GeneralId != null && inspection.GeneralId != Guid.Empty) ? inspection.GeneralId : entityObj.Id;
|
||||
inspection.GeneralId = generalId;
|
||||
|
||||
inspection.Identification = GetInspectionRecordIdentification(entityObj, type, inspection.IsDistinctionInterface, inspection.IsSelfDefine, auditIdentification) + inspection.ExtraIndentification;
|
||||
inspection.Identification = GetInspectionRecordIdentification(entityObj, type, inspection.IsDistinctionInterface, inspection.IsSelfDefine, auditIdentification, customPrefix) + inspection.ExtraIndentification;
|
||||
|
||||
//将实体对象属性 映射到稽查实体
|
||||
MapEntityPropertyToAuditEntity(entityObj, inspection);
|
||||
|
@ -4224,7 +4241,15 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
/// 获取稽查记录的标识符 部分业务会进行特殊处理
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string GetInspectionRecordIdentification<T>(T entityObj, string type, bool IsDistinctionInterface = true, bool isSelfDefine = false, string auditIdentification = "")
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="entityObj"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="IsDistinctionInterface"></param>
|
||||
/// <param name="isSelfDefine"></param>
|
||||
/// <param name="auditIdentification"></param>
|
||||
/// <param name="customPrefix">自定义前缀 某些接口需要用同一个稽查</param>
|
||||
/// <returns></returns>
|
||||
public string GetInspectionRecordIdentification<T>(T entityObj, string type, bool IsDistinctionInterface = true, bool isSelfDefine = false, string auditIdentification = "",string customPrefix="")
|
||||
{
|
||||
//var entityType = _dbContext.Model.FindEntityType(entityObj.GetType());
|
||||
//var tableName = entityType.GetTableName();
|
||||
|
@ -4271,6 +4296,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
|
|||
result = result + "/" + auditIdentification;
|
||||
}
|
||||
|
||||
if (customPrefix.IsNotNullOrEmpty())
|
||||
{
|
||||
result = customPrefix + "/" + result;
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue