合并
This commit is contained in:
@@ -3,12 +3,10 @@
|
||||
// 生成时间 2022-06-07 13:16:33
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
@@ -112,18 +110,19 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public List<CriterionReadingCategory> CriterionCategoryList =>
|
||||
|
||||
TrialReadingCriterionList.Select(t =>
|
||||
new CriterionReadingCategory() {
|
||||
EnrollId = EnrollId,
|
||||
TrialReadingCriterionId = t.TrialReadingCriterionId,
|
||||
new CriterionReadingCategory()
|
||||
{
|
||||
EnrollId = EnrollId,
|
||||
TrialReadingCriterionId = t.TrialReadingCriterionId,
|
||||
ReadingCategorys = CriterionReadingCategoryList.Where(c => c.TrialReadingCriterionId == t.TrialReadingCriterionId).Select(t => t.ReadingCategory).OrderBy(c => c).ToList()
|
||||
}).ToList();
|
||||
|
||||
|
||||
|
||||
//CriterionReadingCategoryList.Count == 0 ? TrialReadingCriterionList.Select(t => new CriterionReadingCategory() { EnrollId = EnrollId, TrialReadingCriterionId = t.TrialReadingCriterionId }).ToList() :
|
||||
// CriterionReadingCategoryList
|
||||
//.GroupBy(t => new { t.TrialReadingCriterionId, t.EnrollId })
|
||||
//.Select(g => new CriterionReadingCategory() { EnrollId = g.Key.EnrollId, TrialReadingCriterionId = g.Key.TrialReadingCriterionId, ReadingCategorys = g.Select(t => t.ReadingCategory).OrderBy(t=>t).ToList() }).ToList();
|
||||
//CriterionReadingCategoryList.Count == 0 ? TrialReadingCriterionList.Select(t => new CriterionReadingCategory() { EnrollId = EnrollId, TrialReadingCriterionId = t.TrialReadingCriterionId }).ToList() :
|
||||
// CriterionReadingCategoryList
|
||||
//.GroupBy(t => new { t.TrialReadingCriterionId, t.EnrollId })
|
||||
//.Select(g => new CriterionReadingCategory() { EnrollId = g.Key.EnrollId, TrialReadingCriterionId = g.Key.TrialReadingCriterionId, ReadingCategorys = g.Select(t => t.ReadingCategory).OrderBy(t=>t).ToList() }).ToList();
|
||||
|
||||
}
|
||||
|
||||
@@ -212,7 +211,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public class GenerateTaskCommand
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
|
||||
//针对访视产生任务的 有用
|
||||
public bool IsAssignSubjectToDoctor { get; set; }
|
||||
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
// 生成时间 2022-07-01 15:33:01
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
@@ -81,7 +79,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public Guid DoctorUserId { get; set; }
|
||||
}
|
||||
|
||||
public class ConsistentConfirmGenerateCommand: SelfConsistentSimpleQuery
|
||||
public class ConsistentConfirmGenerateCommand : SelfConsistentSimpleQuery
|
||||
{
|
||||
|
||||
|
||||
@@ -104,10 +102,10 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public bool IsAutoAllocateGenerateTask { get; set; }
|
||||
}
|
||||
|
||||
public class DoctorSelfConsistentSubjectView: ConsistentCommonView
|
||||
public class DoctorSelfConsistentSubjectView : ConsistentCommonView
|
||||
{
|
||||
public string FirstGlobalVisitName { get; set; } = string.Empty;
|
||||
public string? BlindSubjectCode { get; set; }
|
||||
public string? BlindSubjectCode { get; set; }
|
||||
|
||||
public List<VisitTaskSimpleDTO> VisitTaskList { get; set; }
|
||||
|
||||
@@ -130,14 +128,14 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public int? ValidVisitCount { get; set; }
|
||||
}
|
||||
|
||||
public class DoctorGroupConsistentSubjectView: ConsistentCommonView
|
||||
public class DoctorGroupConsistentSubjectView : ConsistentCommonView
|
||||
{
|
||||
|
||||
public List<VisitTaskGroupSimpleDTO> SubjectTaskVisitList => VisitTaskList.GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Select(g => g.First()).OrderBy(t=>t.VisitTaskNum).ToList();
|
||||
public List<VisitTaskGroupSimpleDTO> SubjectTaskVisitList => VisitTaskList.GroupBy(t => new { t.SubjectId, t.VisitTaskNum }).Where(g => g.Count() == 2).Select(g => g.First()).OrderBy(t => t.VisitTaskNum).ToList();
|
||||
|
||||
public List<VisitTaskGroupSimpleDTO> VisitTaskList { get; set; } = new List<VisitTaskGroupSimpleDTO>();
|
||||
|
||||
public List<UserSimpleInfo> DoctorUserList { get; set; }=new List<UserSimpleInfo>();
|
||||
public List<UserSimpleInfo> DoctorUserList { get; set; } = new List<UserSimpleInfo>();
|
||||
}
|
||||
|
||||
public class VisitTaskGroupSimpleDTO
|
||||
@@ -175,10 +173,10 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public bool IsClinicalDataSign { get; set; }
|
||||
}
|
||||
|
||||
public class VisitTaskSimpleDTO :VisitTaskGroupSimpleDTO
|
||||
public class VisitTaskSimpleDTO : VisitTaskGroupSimpleDTO
|
||||
{
|
||||
public Guid? Id { get; set; }
|
||||
|
||||
|
||||
|
||||
public string TaskCode { get; set; }
|
||||
|
||||
@@ -289,7 +287,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public class GetConsistentRuleOut
|
||||
{
|
||||
public TaskConsistentRuleBasic? ConsistentRuleBasic { get; set; }
|
||||
public TaskConsistentRuleBasic? ConsistentRuleBasic { get; set; }
|
||||
/// <summary>
|
||||
/// 任务展示访视 读片任务显示是否顺序
|
||||
/// </summary>
|
||||
@@ -316,7 +314,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public string VirtualSiteCode { get; set; }
|
||||
}
|
||||
|
||||
public class UpdateTrialSiteCodeCommandView: UpdateTrialSiteCodeCommand
|
||||
public class UpdateTrialSiteCodeCommandView : UpdateTrialSiteCodeCommand
|
||||
{
|
||||
public DateTime Creatime { get; set; }
|
||||
}
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
// 生成时间 2022-06-29 13:36:46
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
@@ -33,7 +30,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public List<TaskBasicIdView> ActualTumorTaskList { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[JsonIgnore]
|
||||
public List<TaskBasicIdView> GeneratedVisitTaskList { get; set; }
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
// 生成时间 2022-06-29 10:59:50
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
@@ -69,7 +67,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
if (!ReadingDurationTimeSpan.HasValue)
|
||||
return "";
|
||||
else return string.Format("{0}h:{1}m:{2}s", (SignTime - FirstReadingTime)?.Hours, (SignTime - FirstReadingTime)?.Minutes, (SignTime - FirstReadingTime)?.Seconds)
|
||||
else return string.Format("{0}h:{1}m:{2}s", (SignTime - FirstReadingTime)?.Hours, (SignTime - FirstReadingTime)?.Minutes, (SignTime - FirstReadingTime)?.Seconds)
|
||||
/*string.Format("{0}分钟", (ReadingDurationTimeSpan)?.TotalMinutes)*/;
|
||||
}
|
||||
}
|
||||
@@ -102,18 +100,18 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public Guid? SubjectId { get; set; }
|
||||
|
||||
public Guid? MedicalManagerUserId { get; set; }
|
||||
public Guid? MedicalManagerUserId { get; set; }
|
||||
|
||||
public DateTime? BeginSignTime { get; set; }
|
||||
public AuditAdvice? AuditAdviceEnum { get; set; }
|
||||
public DateTime? BeginSignTime { get; set; }
|
||||
public AuditAdvice? AuditAdviceEnum { get; set; }
|
||||
|
||||
public DateTime? EndSignTime { get; set; }
|
||||
public DateTime? EndSignTime { get; set; }
|
||||
|
||||
public bool IsGetBeRead { get; set; } = false;
|
||||
public bool IsGetBeRead { get; set; } = false;
|
||||
|
||||
public bool IsGetNextMedicalReviewTask { get; set; } = false;
|
||||
public bool IsGetNextMedicalReviewTask { get; set; } = false;
|
||||
|
||||
public string SubjectCode { get; set; } = String.Empty;
|
||||
public string SubjectCode { get; set; } = String.Empty;
|
||||
|
||||
public string TrialSiteCode { get; set; } = String.Empty;
|
||||
public string TaskName { get; set; } = String.Empty;
|
||||
@@ -133,7 +131,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public Guid? TrialReadingCriterionId { get; set; }
|
||||
|
||||
public MedicalReviewDoctorUserIdea? DoctorUserIdeaEnum { get; set; }
|
||||
public MedicalReviewDoctorUserIdea? DoctorUserIdeaEnum { get; set; }
|
||||
|
||||
public Arm? ArmEnum { get; set; }
|
||||
|
||||
|
||||
@@ -3,11 +3,9 @@
|
||||
// 生成时间 2022-06-07 14:10:54
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
@@ -86,9 +84,9 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public bool IsClinicalDataSign { get; set; }
|
||||
|
||||
|
||||
public CompleteClinicalDataEnum CompleteClinicalDataEnum =>
|
||||
public CompleteClinicalDataEnum CompleteClinicalDataEnum =>
|
||||
(IsNeedClinicalDataSign && IsClinicalDataSign) ? CompleteClinicalDataEnum.Complete : (IsNeedClinicalDataSign && IsClinicalDataSign == false) ? CompleteClinicalDataEnum.NotComplete : CompleteClinicalDataEnum.NA;
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -99,7 +97,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
/// <summary>
|
||||
/// 任务展示访视 读片任务显示是否顺序
|
||||
/// </summary>
|
||||
public ReadingOrder IsReadingTaskViewInOrder { get; set; }
|
||||
public ReadingOrder IsReadingTaskViewInOrder { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -163,7 +161,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public bool IsCanEditUrgentState { get; set; }
|
||||
|
||||
public DateTime? FirstReadingTime { get;set; }
|
||||
public DateTime? FirstReadingTime { get; set; }
|
||||
|
||||
public string ReadingDuration
|
||||
{
|
||||
@@ -224,7 +222,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public int ConsistentClinicalDataCount { get; set; } = 0;
|
||||
|
||||
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
|
||||
public bool IsReReadingOrBackInfluenceAnalysis { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -318,7 +316,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
if (this.SuggesteFinishedTime != null)
|
||||
{
|
||||
var date = DateTime.Now;
|
||||
var timeSpan = SuggesteFinishedTime.Value- date;
|
||||
var timeSpan = SuggesteFinishedTime.Value - date;
|
||||
if (timeSpan.TotalDays <= 2)
|
||||
{
|
||||
return 1;
|
||||
@@ -339,12 +337,12 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public int UrgentCount { get; set; }
|
||||
public int UrgentCount { get; set; }
|
||||
|
||||
|
||||
public List<IRUnreadTaskView> UnReadCanReadTaskList { get; set; } = new List<IRUnreadTaskView>();
|
||||
public List<IRUnreadTaskView> UnReadCanReadTaskList { get; set; } = new List<IRUnreadTaskView>();
|
||||
|
||||
public List<IRUnreadTaskView> UnReadTaskList { get; set; } = new List<IRUnreadTaskView>();
|
||||
public List<IRUnreadTaskView> UnReadTaskList { get; set; } = new List<IRUnreadTaskView>();
|
||||
}
|
||||
|
||||
public class IRUnreadTaskView
|
||||
@@ -391,13 +389,13 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
}
|
||||
|
||||
|
||||
public class GetReadingIQueryableInDto:PageInput
|
||||
public class GetReadingIQueryableInDto : PageInput
|
||||
{
|
||||
public Guid TrialId { get; set; }
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
public Guid? SubjectId { get; set; }
|
||||
public Guid? SubjectId { get; set; }
|
||||
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
||||
public string? SubjectCode { get; set; } = null;
|
||||
|
||||
@@ -409,7 +407,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
|
||||
public Guid? TrialSiteId { get; set; }
|
||||
public Guid? TrialSiteId { get; set; }
|
||||
|
||||
public Guid? SubjectId { get; set; }
|
||||
|
||||
@@ -435,7 +433,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public DateTime? BeginSignTime { get; set; }
|
||||
|
||||
public DateTime? EndSignTime { get; set; }
|
||||
public DateTime? EndSignTime { get; set; }
|
||||
|
||||
public DateTime? BeginRequestReReadingTime { get; set; }
|
||||
public DateTime? EndRequestReReadingTime { get; set; }
|
||||
@@ -553,7 +551,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public int? SubjectAllocateState { get; set; }
|
||||
|
||||
public List<Arm> ArmList { get; set; }=new List<Arm>() { };
|
||||
public List<Arm> ArmList { get; set; } = new List<Arm>() { };
|
||||
|
||||
[NotDefault]
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
|
||||
+12
-12
@@ -6,20 +6,20 @@
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// ITaskAllocationRuleService
|
||||
/// </summary>
|
||||
public interface ITaskAllocationRuleService
|
||||
{
|
||||
/// <summary>
|
||||
/// ITaskAllocationRuleService
|
||||
/// </summary>
|
||||
public interface ITaskAllocationRuleService
|
||||
{
|
||||
|
||||
|
||||
//Task<List<TaskAllocationRuleView>> GetTaskAllocationRuleList(TaskAllocationRuleQuery queryTaskAllocationRule);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateTaskAllocationRule(TaskAllocationRuleAddOrEdit addOrEditTaskAllocationRule);
|
||||
|
||||
Task<IResponseOutput> DeleteTaskAllocationRule(Guid taskAllocationRuleId);
|
||||
//Task<List<TaskAllocationRuleView>> GetTaskAllocationRuleList(TaskAllocationRuleQuery queryTaskAllocationRule);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateTaskAllocationRule(TaskAllocationRuleAddOrEdit addOrEditTaskAllocationRule);
|
||||
|
||||
Task<IResponseOutput> DeleteTaskAllocationRule(Guid taskAllocationRuleId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+12
-12
@@ -6,20 +6,20 @@
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// ITaskConsistentRuleService
|
||||
/// </summary>
|
||||
public interface ITaskConsistentRuleService
|
||||
{
|
||||
/// <summary>
|
||||
/// ITaskConsistentRuleService
|
||||
/// </summary>
|
||||
public interface ITaskConsistentRuleService
|
||||
{
|
||||
|
||||
|
||||
//Task<List<TaskConsistentRuleView>> GetTaskConsistentRuleList(TaskConsistentRuleQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateTaskConsistentRule(TaskConsistentRuleAddOrEdit addOrEditTaskConsistentRule);
|
||||
|
||||
Task<IResponseOutput> DeleteTaskConsistentRule(Guid taskConsistentRuleId);
|
||||
//Task<List<TaskConsistentRuleView>> GetTaskConsistentRuleList(TaskConsistentRuleQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateTaskConsistentRule(TaskConsistentRuleAddOrEdit addOrEditTaskConsistentRule);
|
||||
|
||||
Task<IResponseOutput> DeleteTaskConsistentRule(Guid taskConsistentRuleId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,6 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
Task AddConvertedTask(Guid taskId);
|
||||
|
||||
Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId,bool? isManualSelectVisit=null,List<Guid>? subjectVisitIdList=null);
|
||||
Task BaseCritrionGenerateVisitTask(Guid trialId, Guid confirmedTrialReadingCriterionId, bool? isManualSelectVisit = null, List<Guid>? subjectVisitIdList = null);
|
||||
}
|
||||
}
|
||||
@@ -4,13 +4,12 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
|
||||
@@ -4,23 +4,16 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Linq.Expressions;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using System.Linq;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using Medallion.Threading;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using Medallion.Threading;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -114,7 +107,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
}
|
||||
#endregion
|
||||
|
||||
var trialTaskConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { IsHaveDoubleReadCriterion = t.TrialReadingCriterionList.Any(t => t.IsSigned && t.IsConfirm && t.ReadingType == ReadingMethod.Double), t.VitrualSiteCode }).FirstOrDefault();
|
||||
var trialTaskConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { IsHaveDoubleReadCriterion = t.TrialReadingCriterionList.Any(t => t.IsSigned && t.IsConfirm && t.ReadingType == ReadingMethod.Double), t.VitrualSiteCode }).FirstOrDefault();
|
||||
|
||||
return ResponseOutput.Ok(pageList, trialTaskConfig);
|
||||
}
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -21,19 +20,19 @@ namespace IRaCIS.Core.Application.Service
|
||||
IRepository<TrialUser> _trialUserRepository) : BaseService, ITaskMedicalReviewRuleService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<(List<TaskMedicalReviewRuleView>,object)> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery inQuery)
|
||||
public async Task<(List<TaskMedicalReviewRuleView>, object)> GetTaskMedicalReviewRuleList(TaskMedicalReviewRuleQuery inQuery)
|
||||
{
|
||||
|
||||
|
||||
var taskTaskMedicalReviewRuleQueryable = _taskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
.ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider);
|
||||
|
||||
var isHaveMIM = await _trialUserRepository.AnyAsync(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId==inQuery.TrialId);
|
||||
var isHaveMIM = await _trialUserRepository.AnyAsync(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == inQuery.TrialId);
|
||||
|
||||
return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(),new {IsHaveMIM=isHaveMIM});
|
||||
return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(), new { IsHaveMIM = isHaveMIM });
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
@@ -43,7 +42,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
var verifyExp1 = new EntityVerifyExp<TaskMedicalReviewRule>()
|
||||
{
|
||||
|
||||
|
||||
VerifyExp = t => t.DoctorUserId == addOrEditTaskTaskMedicalReviewRule.DoctorUserId && t.TrialId == addOrEditTaskTaskMedicalReviewRule.TrialId,
|
||||
//"已有该医生配置,不允许继续增加"
|
||||
VerifyMsg = _localizer["TaskMedicalRule_TaskAlreadyAssigned"]
|
||||
@@ -68,7 +67,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
// return ResponseOutput.NotOk(_localizer["TaskMedicalRule_TaskStarted"]);
|
||||
//}
|
||||
|
||||
var success = await _taskMedicalReviewRuleRepository.DeleteFromQueryAsync(t => t.Id == taskMedicalReviewRuleId,true);
|
||||
var success = await _taskMedicalReviewRuleRepository.DeleteFromQueryAsync(t => t.Id == taskMedicalReviewRuleId, true);
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -26,7 +24,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
IRepository<VisitTask> _visitTaskRepository) : BaseService, ITaskMedicalReviewService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// PM 医学审核(挑选任务生成后的列表)
|
||||
@@ -41,7 +39,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId)
|
||||
.WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId)
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode) || t.VisitTask.Subject.MedicalNo.Contains(inQuery.SubjectCode))
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode) || t.VisitTask.Subject.MedicalNo.Contains(inQuery.SubjectCode))
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.VisitTask.TaskName.Contains(inQuery.TaskName) || t.VisitTask.TaskBlindName.Contains(inQuery.TaskName))
|
||||
.WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
|
||||
.WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId)
|
||||
@@ -50,23 +48,23 @@ namespace IRaCIS.Core.Application.Service
|
||||
.WhereIf(inQuery.TaskState != null, t => t.VisitTask.TaskState == inQuery.TaskState)
|
||||
.WhereIf(inQuery.ArmEnum != null, t => t.VisitTask.ArmEnum == inQuery.ArmEnum)
|
||||
.WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState)
|
||||
.WhereIf(inQuery.MedicalManagerUserId != null, t => t.MedicalManagerUserId == inQuery.MedicalManagerUserId)
|
||||
.WhereIf(inQuery.MedicalManagerUserId != null, t => t.MedicalManagerUserId == inQuery.MedicalManagerUserId)
|
||||
.WhereIf(inQuery.BeginSignTime != null, t => t.VisitTask.SignTime > inQuery.BeginSignTime)
|
||||
.WhereIf(inQuery.EndSignTime != null, t => t.VisitTask.SignTime < inQuery.EndSignTime)
|
||||
.WhereIf(inQuery.AuditAdviceEnum != null, t => t.AuditAdviceEnum == inQuery.AuditAdviceEnum)
|
||||
.WhereIf(inQuery.AuditAdviceEnum != null, t => t.AuditAdviceEnum == inQuery.AuditAdviceEnum)
|
||||
|
||||
.WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum)
|
||||
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||
.WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum)
|
||||
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||
.WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid)
|
||||
.WhereIf(inQuery.IsHaveQuestion != null, t => t.IsHaveQuestion == inQuery.IsHaveQuestion)
|
||||
|
||||
|
||||
.WhereIf(inQuery.BeginAllocateDate != null, t => t.AllocateTime >= inQuery.BeginAllocateDate)
|
||||
.WhereIf(inQuery.EndAllocateDate != null, t => t.AllocateTime <= inQuery.EndAllocateDate)
|
||||
.WhereIf(inQuery.BeginAuditSignTime != null, t => t.AuditSignTime >= inQuery.BeginAuditSignTime)
|
||||
.WhereIf(inQuery.EndAuditSignTime != null, t => t.AuditSignTime <= inQuery.EndAuditSignTime)
|
||||
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);
|
||||
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);
|
||||
|
||||
var defalutSortArray = new string[] { nameof(TaskMedicalReviewView.AuditState), nameof(TaskMedicalReviewView.SubjectCode), nameof(TaskMedicalReviewView.ArmEnum) , nameof(TaskMedicalReviewView.VisitTaskNum) };
|
||||
var defalutSortArray = new string[] { nameof(TaskMedicalReviewView.AuditState), nameof(TaskMedicalReviewView.SubjectCode), nameof(TaskMedicalReviewView.ArmEnum), nameof(TaskMedicalReviewView.VisitTaskNum) };
|
||||
var pageList = await taskMedicalReviewQueryable.ToPagedListAsync(inQuery, defalutSortArray);
|
||||
|
||||
return pageList;
|
||||
@@ -82,7 +80,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
public async Task<PageOutput<GenerateMedicalReviewTaskView>> GetGenerateMedicalReviewTaskList(GenerateMedicalReviewTaskQuery inQuery)
|
||||
{
|
||||
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
.Where(t => t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect||t.TaskState==TaskState.Freeze) && t.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
.Where(t => t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.ReadingTaskState == ReadingTaskState.HaveSigned)
|
||||
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
|
||||
.WhereIf(inQuery.SubjectId != null, t => t.SubjectId == inQuery.SubjectId)
|
||||
@@ -161,16 +159,16 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var result = new TaskMedicalReviewView() { };
|
||||
|
||||
if (index+1 == data.CurrentPageData.Count()) // 最后一个
|
||||
if (index + 1 == data.CurrentPageData.Count()) // 最后一个
|
||||
{
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
else if (index == -1 || data.CurrentPageData.Count == 1) // 第一个或者只有一个
|
||||
{
|
||||
if (data.CurrentPageData[0].Id == inDto.MedicalReviewId)
|
||||
{
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
result = data.CurrentPageData[0];
|
||||
}
|
||||
else
|
||||
@@ -183,8 +181,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -196,34 +194,34 @@ namespace IRaCIS.Core.Application.Service
|
||||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput< PageOutput<TaskMedicalReviewView>>> GetMIMMedicalReviewTaskList(TaskMedicalReviewQuery inQuery)
|
||||
public async Task<IResponseOutput<PageOutput<TaskMedicalReviewView>>> GetMIMMedicalReviewTaskList(TaskMedicalReviewQuery inQuery)
|
||||
{
|
||||
|
||||
var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId && t.MedicalManagerUserId == _userInfo.Id&&t.VisitTask.TrialReadingCriterionId==inQuery.TrialReadingCriterionId)
|
||||
|
||||
var taskMedicalReviewQueryable = _taskMedicalReviewRepository.Where(t => t.VisitTask.TrialId == inQuery.TrialId && t.MedicalManagerUserId == _userInfo.Id && t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||
|
||||
.WhereIf(inQuery.IsGetNextMedicalReviewTask,
|
||||
x=>(
|
||||
!x.IsInvalid&& x.AuditState== MedicalReviewAuditState.Auditing &
|
||||
( x.ReadingMedicalReviewDialogList.Count()!=0&&
|
||||
x.ReadingMedicalReviewDialogList.Count()>0&&
|
||||
x.ReadingMedicalReviewDialogList.OrderByDescending(x=>x.CreateTime).FirstOrDefault().UserTypeEnumInt==(int)UserTypeEnum.IndependentReviewer)
|
||||
x => (
|
||||
!x.IsInvalid && x.AuditState == MedicalReviewAuditState.Auditing &
|
||||
(x.ReadingMedicalReviewDialogList.Count() != 0 &&
|
||||
x.ReadingMedicalReviewDialogList.Count() > 0 &&
|
||||
x.ReadingMedicalReviewDialogList.OrderByDescending(x => x.CreateTime).FirstOrDefault().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer)
|
||||
) // 审核中最新回复为IR的
|
||||
|| (!x.IsInvalid&& x.AuditState==MedicalReviewAuditState.WaitAudit)
|
||||
||x.Id == inQuery.Id // 这里必须找传入id 因为要找到这条的索引 获取下一条
|
||||
)
|
||||
|| (!x.IsInvalid && x.AuditState == MedicalReviewAuditState.WaitAudit)
|
||||
|| x.Id == inQuery.Id // 这里必须找传入id 因为要找到这条的索引 获取下一条
|
||||
)
|
||||
.WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId)
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId)
|
||||
.WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent)
|
||||
.WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState)
|
||||
.WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum)
|
||||
.WhereIf(inQuery.TaskState != null, t => t.VisitTask.TaskState == inQuery.TaskState)
|
||||
.WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum)
|
||||
.WhereIf(inQuery.TaskState != null, t => t.VisitTask.TaskState == inQuery.TaskState)
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode) || t.VisitTask.Subject.MedicalNo.Contains(inQuery.SubjectCode))
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.VisitTask.TaskName.Contains(inQuery.TaskName) || t.VisitTask.TaskBlindName.Contains(inQuery.TaskName))
|
||||
.WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId)
|
||||
.WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory)
|
||||
.WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState)
|
||||
.WhereIf(inQuery.IsInvalid != null, t => t.IsInvalid == inQuery.IsInvalid)
|
||||
.WhereIf(inQuery.IsGetBeRead,x=>!x.IsInvalid&&x.AuditState!= MedicalReviewAuditState.HaveSigned)
|
||||
.WhereIf(inQuery.IsGetBeRead, x => !x.IsInvalid && x.AuditState != MedicalReviewAuditState.HaveSigned)
|
||||
.WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
|
||||
.WhereIf(inQuery.BeginAuditSignTime != null, t => t.AuditSignTime >= inQuery.BeginAuditSignTime)
|
||||
.WhereIf(inQuery.EndAuditSignTime != null, t => t.AuditSignTime <= inQuery.EndAuditSignTime)
|
||||
@@ -239,10 +237,10 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider);
|
||||
|
||||
|
||||
var defalutSortArray = new string[] { nameof(TaskMedicalReviewView.SubjectCode), nameof(TaskMedicalReviewView.ArmEnum), nameof(TaskMedicalReviewView.VisitTaskNum) };
|
||||
var defalutSortArray = new string[] { nameof(TaskMedicalReviewView.SubjectCode), nameof(TaskMedicalReviewView.ArmEnum), nameof(TaskMedicalReviewView.VisitTaskNum) };
|
||||
var pageList = await taskMedicalReviewQueryable.ToPagedListAsync(inQuery, defalutSortArray);
|
||||
|
||||
return ResponseOutput.Ok(pageList, new
|
||||
return ResponseOutput.Ok(pageList, new
|
||||
{
|
||||
|
||||
IsConfirmMedicineQuestion = await _readingQuestionCriterionTrialRepository.Where(x => x.Id == inQuery.TrialReadingCriterionId).Select(x => x.IsConfirmMedicineQuestion).FirstOrDefaultAsync()
|
||||
@@ -265,7 +263,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
return ResponseOutput.NotOk(_localizer["TaskMedical_DirtyData"]);
|
||||
}
|
||||
|
||||
await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(t => command.MedicalReviewIdList.Contains(t.Id), c => new TaskMedicalReview() { IsInvalid = true },true);
|
||||
await _taskMedicalReviewRepository.UpdatePartialFromQueryAsync(t => command.MedicalReviewIdList.Contains(t.Id), c => new TaskMedicalReview() { IsInvalid = true }, true);
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
|
||||
@@ -4,20 +4,13 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using AutoMapper;
|
||||
using MassTransit;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using System.Linq.Expressions;
|
||||
using IRaCIS.Core.Domain.Share.Reading;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using System.Runtime.InteropServices;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using MassTransit;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ZiggyCreatures.Caching.Fusion;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
@@ -35,7 +28,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository,
|
||||
IRepository<SubjectUser> _subjectUserRepository,
|
||||
IRepository<ReadModule> _readModuleRepository,
|
||||
|
||||
|
||||
IRepository<ReadingOncologyTaskInfo> _readingOncologyTaskInfoRepository,
|
||||
|
||||
IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository,
|
||||
@@ -44,7 +37,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
IRepository<ReadingConsistentClinicalData> _readingConsistentClinicalDataRepository) : BaseService, IVisitTaskHelpeService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
//查询列表的时候,一致性核查通过未产生任务的 自动产生任务 如果是一致性核查,那么还会自动分配
|
||||
public async Task GenerateVisitTaskAsync(Guid trialId, List<Guid> subjectVisitIdList, bool isAssignSubjectToDoctor = false)
|
||||
@@ -136,7 +129,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var dbMaxCode = _visitTaskRepository.Where(t => t.TrialId == trialId).Select(t => t.Code).DefaultIfEmpty().Max();
|
||||
|
||||
var cacheMaxCodeInt =_fusionCache.GetOrDefault<int>(CacheKeys.TrialStudyMaxCode(trialId));
|
||||
var cacheMaxCodeInt = _fusionCache.GetOrDefault<int>(CacheKeys.TrialStudyMaxCode(trialId));
|
||||
|
||||
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
|
||||
|
||||
@@ -432,8 +425,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
//CRC 的自动签名 不用管 只用处理PM的就好
|
||||
var haveSignedCount = _readingClinicalDataRepository
|
||||
.Where(t => t.TrialId == trialId && t.IsSign
|
||||
&& t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(x=>x.TrialReadingCriterionId== trialReadingCriterionId)
|
||||
.Where(t => t.TrialId == trialId && t.IsSign
|
||||
&& t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(x => x.TrialReadingCriterionId == trialReadingCriterionId)
|
||||
&& t.ReadingClinicalDataState == ReadingClinicalDataStatus.HaveSigned && t.ReadingId == readingId && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM).Count();
|
||||
|
||||
|
||||
@@ -575,7 +568,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var dbMaxCode = _visitTaskRepository.Where(t => t.TrialId == trialId).Select(t => t.Code).DefaultIfEmpty().Max();
|
||||
|
||||
var cacheMaxCodeInt =_fusionCache.GetOrDefault<int>(CacheKeys.TrialStudyMaxCode(trialId));
|
||||
var cacheMaxCodeInt = _fusionCache.GetOrDefault<int>(CacheKeys.TrialStudyMaxCode(trialId));
|
||||
|
||||
int currentMaxCodeInt = cacheMaxCodeInt > dbMaxCode ? cacheMaxCodeInt : dbMaxCode;
|
||||
|
||||
@@ -1390,13 +1383,13 @@ namespace IRaCIS.Core.Application.Service
|
||||
var firsttask = generateTaskCommand.GenerataConsistentTaskList[0];
|
||||
var clinicalDataList = _readingClinicalDataRepository.Where(t => t.SubjectId == subjectId
|
||||
&& t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == firsttask.TrialReadingCriterionId)
|
||||
&& t.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.Study
|
||||
&& t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study
|
||||
&& t.ClinicalDataTrialSet.ClinicalUploadType == ClinicalUploadType.PDF)
|
||||
// crc受试者和访视的临床数据没上传 一致性分析的时候也不用显示
|
||||
.Where(x=>x.ClinicalDataTrialSet.UploadRole == UploadRole.PM||x.FileCount>0)
|
||||
.Where(x => x.ClinicalDataTrialSet.UploadRole == UploadRole.PM || x.FileCount > 0)
|
||||
.Include(t => t.ReadingClinicalDataPDFList).Include(t => t.ClinicalDataTrialSet).ToList();
|
||||
|
||||
|
||||
|
||||
foreach (var clinicalData in clinicalDataList)
|
||||
{
|
||||
var consistnentClinicalData = _mapper.Map<ReadingConsistentClinicalData>(clinicalData);
|
||||
@@ -1424,12 +1417,12 @@ namespace IRaCIS.Core.Application.Service
|
||||
foreach (var task in generateTaskCommand.GenerataConsistentTaskList)
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
var exsitPDF = await _readingClinicalDataRepository
|
||||
.WhereIf(isReadingTaskViewInOrder== ReadingOrder.Random,t=>t.ReadingId== task.SouceReadModuleId|| t.ReadingId == task.SourceSubjectVisitId)
|
||||
.WhereIf(isReadingTaskViewInOrder == ReadingOrder.Random, t => t.ReadingId == task.SouceReadModuleId || t.ReadingId == task.SourceSubjectVisitId)
|
||||
.AnyAsync(t => t.TrialId == trialId &&
|
||||
t.SubjectId== task.SubjectId&&
|
||||
t.SubjectId == task.SubjectId &&
|
||||
|
||||
t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(c => c.TrialReadingCriterionId == readingCriterionId)
|
||||
&& t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study
|
||||
|
||||
@@ -4,24 +4,17 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using System.Linq.Expressions;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using DocumentFormat.OpenXml.Office2010.Word;
|
||||
using System.Linq.Dynamic.Core;
|
||||
using System.Linq;
|
||||
using DocumentFormat.OpenXml.Bibliography;
|
||||
using IRaCIS.Core.Domain.Share.Reading;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using MassTransit;
|
||||
using System.Reactive.Subjects;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Linq.Dynamic.Core;
|
||||
using Subject = IRaCIS.Core.Domain.Models.Subject;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service.Allocation;
|
||||
@@ -73,7 +66,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||
TaskUrgentRemake = inDto.TaskUrgentRemake,
|
||||
|
||||
});
|
||||
|
||||
|
||||
return await _visitTaskRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
@@ -145,7 +138,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||
.ProjectTo<SubjectAssignStat>(_mapper.ConfigurationProvider, new { trialReadingCriterionId = inQuery.TrialReadingCriterionId });
|
||||
|
||||
|
||||
var pageList = await subjectQuery.ToPagedListAsync(inQuery,nameof(SubjectAssignStat.SubjectId));
|
||||
var pageList = await subjectQuery.ToPagedListAsync(inQuery, nameof(SubjectAssignStat.SubjectId));
|
||||
|
||||
|
||||
|
||||
@@ -1205,7 +1198,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
||||
.ToList()
|
||||
}).Where(x => x.UnReadCanReadTaskCount > 0);
|
||||
|
||||
var pageList = await visitTaskQuery.ToPagedListAsync(inQuery, nameof(IRUnReadSubjectView.UnReadCanReadTaskCount) );
|
||||
var pageList = await visitTaskQuery.ToPagedListAsync(inQuery, nameof(IRUnReadSubjectView.UnReadCanReadTaskCount));
|
||||
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
using AutoMapper;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
@@ -59,10 +57,10 @@ namespace IRaCIS.Core.Application.Service
|
||||
: u.Trial.SubjectList.Where(t => subjectIdList.Contains(t.Id) && t.SubjectVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Any(c => c.DoctorUserId == null)).Count()
|
||||
))
|
||||
|
||||
//.ForMember(o => o.WaitApplySelfTaskCount, t => t.MapFrom(u =>
|
||||
//subjectIdList.Count == 0 ? u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
|
||||
//: u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId && subjectIdList.Contains(d.SubjectId)).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
|
||||
// ))
|
||||
//.ForMember(o => o.WaitApplySelfTaskCount, t => t.MapFrom(u =>
|
||||
//subjectIdList.Count == 0 ? u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
|
||||
//: u.Trial.SubjectDoctorUserList.Where(d => d.DoctorUserId == u.DoctorUserId && subjectIdList.Contains(d.SubjectId)).SelectMany(t => t.SubjectArmVisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null)).Count()
|
||||
// ))
|
||||
|
||||
.ForMember(o => o.WaitApplyTotalTaskCount, t => t.MapFrom(u =>
|
||||
subjectIdList.Count == 0 ? u.Trial.VisitTaskList.Where(t => isJudgeDoctor ? t.ArmEnum == Arm.JudgeArm : t.ArmEnum != Arm.JudgeArm).Where(t => t.DoctorUserId == null).Count()
|
||||
@@ -75,7 +73,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.Enroll.DoctorUser))
|
||||
.ForMember(o => o.CriterionReadingCategoryList, t => t.MapFrom(u => u.Enroll.EnrollReadingCategoryList.Select(t => new TrialCriterionReadingCategory() { EnrollId = t.EnrollId, ReadingCategory = t.ReadingCategory, TrialReadingCriterionId = t.TrialReadingCriterionId })))
|
||||
.ForMember(o => o.TrialReadingCriterionList, t => t.MapFrom(u => u.Trial.TrialReadingCriterionList.Where(t => t.IsConfirm)))
|
||||
.ForMember(o => o.ReadingCategoryList, t => t.MapFrom(u => u.Enroll.EnrollReadingCategoryList.Where(t=>t.TrialReadingCriterionId== trialReadingCriterionId).OrderBy(t => t.ReadingCategory).Select(t => t.ReadingCategory).ToList()))
|
||||
.ForMember(o => o.ReadingCategoryList, t => t.MapFrom(u => u.Enroll.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).OrderBy(t => t.ReadingCategory).Select(t => t.ReadingCategory).ToList()))
|
||||
;
|
||||
|
||||
CreateMap<ReadingQuestionCriterionTrial, TrialReadingCriterionDto>()
|
||||
@@ -86,25 +84,25 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ForMember(o => o.AssignedSubjectCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.TrialId == u.TrialId).Select(t => t.SubjectId).Distinct().Count()))
|
||||
.ForMember(o => o.WaitDealTrialTaskCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.TrialId == u.TrialId).Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect).Count()))
|
||||
.ForMember(o => o.WaitDealAllTaskCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect).Count()));
|
||||
|
||||
|
||||
|
||||
|
||||
CreateMap<Subject, SubjectAssignStat>()
|
||||
|
||||
.ForMember(o => o.SubjectId, t => t.MapFrom(u => u.Id))
|
||||
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.TrialSite.TrialSiteCode))
|
||||
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Code))
|
||||
.ForMember(o => o.VisitTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit && t.TrialReadingCriterionId==trialReadingCriterionId && t.TaskState==TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count()))
|
||||
.ForMember(o => o.VisitTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count()))
|
||||
.ForMember(o => o.GlobalTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count()))
|
||||
.ForMember(o => o.OncologyTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count()))
|
||||
.ForMember(o => o.JudgeTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge && t.TrialReadingCriterionId == trialReadingCriterionId && t.TaskState == TaskState.Effect).Select(t => t.VisitTaskNum).Distinct().Count()))
|
||||
.ForMember(o => o.DoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList.Where(t=>t.TrialReadingCriterionId== trialReadingCriterionId)));
|
||||
.ForMember(o => o.DoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId)));
|
||||
|
||||
CreateMap<SubjectUser, SubjectUserView>()
|
||||
.ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.DoctorUser));
|
||||
|
||||
|
||||
CreateMap<SubjectUser, SubjectUserDTO>().IncludeBase<SubjectUser, SubjectUserView>()
|
||||
.ForMember(o => o.IsHaveReading, t => t.MapFrom(u => u.Subject.SubjectVisitTaskList.Any(t => t.ReadingTaskState != ReadingTaskState.WaitReading && t.TrialReadingCriterionId==u.TrialReadingCriterionId && t.DoctorUserId==u.DoctorUserId && t.TaskState == TaskState.Effect)));
|
||||
.ForMember(o => o.IsHaveReading, t => t.MapFrom(u => u.Subject.SubjectVisitTaskList.Any(t => t.ReadingTaskState != ReadingTaskState.WaitReading && t.TrialReadingCriterionId == u.TrialReadingCriterionId && t.DoctorUserId == u.DoctorUserId && t.TaskState == TaskState.Effect)));
|
||||
|
||||
|
||||
CreateMap<SubjectVisit, VisitGenerataTaskDTO>();
|
||||
@@ -127,13 +125,13 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ForMember(o => o.TrialSiteId, t => t.MapFrom(u => u.Subject.TrialSiteId))
|
||||
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => /*u.IsAnalysisCreate == true ? u.BlindTrialSiteCode :*/ u.Subject.TrialSite.TrialSiteCode))
|
||||
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => /*u.IsAnalysisCreate == true ? u.BlindSubjectCode :*/ u.Subject.Code))
|
||||
.ForMember(o => o.MedicalNo, t => t.MapFrom(u => u.Subject.MedicalNo))
|
||||
|
||||
.ForMember(o => o.MedicalNo, t => t.MapFrom(u => u.Subject.MedicalNo))
|
||||
|
||||
.ForMember(o => o.UserCode, t => t.MapFrom(u => u.DoctorUser.UserCode))
|
||||
.ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName))
|
||||
.ForMember(o => o.FullName, t => t.MapFrom(u => u.DoctorUser.FullName))
|
||||
.ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName))
|
||||
//.ForMember(o => o.IsClinicalDataSigned, t => t.MapFrom(u => u.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == u.SouceReadModuleId || c.ReadingId == u.SourceSubjectVisitId))))
|
||||
//.ForMember(o => o.IsClinicalDataSigned, t => t.MapFrom(u => u.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == u.SouceReadModuleId || c.ReadingId == u.SourceSubjectVisitId))))
|
||||
;
|
||||
|
||||
|
||||
@@ -145,21 +143,21 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ForMember(o => o.HistoryReadingDoctorUserList, t => t.MapFrom(u => u.JudgeVisitList));
|
||||
|
||||
CreateMap<VisitTask, ReadingTaskView>().IncludeBase<VisitTask, VisitTaskView>()
|
||||
.ForMember(o=>o.IsManualGeneration,t=> t.MapFrom(u => !u.TrialReadingCriterion.IsAutoCreate))
|
||||
.ForMember(o => o.IsHaveFeedBack, t => t.MapFrom(u => u.UserFeedBackList.Any(t=>t.State==0)))
|
||||
.ForMember(o => o.IsManualGeneration, t => t.MapFrom(u => !u.TrialReadingCriterion.IsAutoCreate))
|
||||
.ForMember(o => o.IsHaveFeedBack, t => t.MapFrom(u => u.UserFeedBackList.Any(t => t.State == 0)))
|
||||
;
|
||||
|
||||
CreateMap<VisitTask, AnalysisTaskView>().IncludeBase<VisitTask, VisitTaskView>()
|
||||
.ForMember(o => o.IsReReadingOrBackInfluenceAnalysis, t => t.MapFrom(u => u.Subject.IsReReadingOrBackInfluenceAnalysis));
|
||||
|
||||
|
||||
|
||||
CreateMap<CancelDoctorCommand, SubjectCanceDoctor>();
|
||||
|
||||
CreateMap<CancelDoctorCommand, SubjectCanceDoctor>();
|
||||
|
||||
CreateMap<SubjectCanceDoctor, SubjectCancelDoctorView>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CreateMap<VisitTaskReReading, ReReadingTaskView>()
|
||||
.ForMember(o => o.ReReadingNewTaskCode, t => t.MapFrom(u => u.NewReReadingTask.TaskCode))
|
||||
@@ -239,12 +237,12 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionName))
|
||||
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => /*u.IsAnalysisCreate == true ? u.BlindTrialSiteCode :*/ u.Subject.TrialSite.TrialSiteCode))
|
||||
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => /*u.IsAnalysisCreate == true ? u.BlindSubjectCode :*/ u.Subject.Code))
|
||||
.ForMember(o => o.GeneratedMedicalReviewCount, t => t.MapFrom(u => u.TaskMedicalReviewList.Count(t=>t.MedicalManagerUserId!=null)))
|
||||
.ForMember(o => o.GeneratedMedicalReviewCount, t => t.MapFrom(u => u.TaskMedicalReviewList.Count(t => t.MedicalManagerUserId != null)))
|
||||
.ForMember(o => o.MedicalNo, t => t.MapFrom(u => u.Subject.MedicalNo))
|
||||
.ForMember(o => o.IsGeneratedJudge, t => t.MapFrom(u => u.JudgeVisitTaskId != null))
|
||||
.ForMember(o => o.ReadingDurationTimeSpan, t => t.MapFrom(u => u.SignTime - u.FirstReadingTime))
|
||||
|
||||
|
||||
|
||||
;
|
||||
|
||||
CreateMap<VisitTask, VisitTaskGroupSimpleDTO>();
|
||||
|
||||
@@ -4,12 +4,10 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -33,7 +31,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
.WhereIf(!string.IsNullOrEmpty(queryCommonDocument.Name), t => t.Name.Contains(queryCommonDocument.Name))
|
||||
.ProjectTo<CommonDocumentView>(_mapper.ConfigurationProvider, new { token = _userInfo.UserToken, userId = _userInfo.Id });
|
||||
|
||||
return await commonDocumentQueryable.ToPagedListAsync(queryCommonDocument);
|
||||
return await commonDocumentQueryable.ToPagedListAsync(queryCommonDocument);
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (addOrEditCommonDocument.Id == null) //insert
|
||||
{
|
||||
|
||||
@@ -111,7 +109,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
var filePath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, dbbeforeEntity.Path);
|
||||
|
||||
if (File.Exists(filePath) && dbbeforeEntity.Path!=addOrEditCommonDocument.Path)
|
||||
if (File.Exists(filePath) && dbbeforeEntity.Path != addOrEditCommonDocument.Path)
|
||||
{
|
||||
File.Delete(filePath);
|
||||
}
|
||||
@@ -121,7 +119,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -129,9 +127,9 @@ namespace IRaCIS.Core.Application.Service
|
||||
[HttpDelete("{commonDocumentId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteCommonDocument(Guid commonDocumentId)
|
||||
{
|
||||
var find= await _commonDocumentRepository.FirstOrDefaultNoTrackingAsync(t=>t.Id== commonDocumentId);
|
||||
|
||||
var success = await _commonDocumentRepository.DeleteFromQueryAsync(t => t.Id == commonDocumentId, true,true);
|
||||
var find = await _commonDocumentRepository.FirstOrDefaultNoTrackingAsync(t => t.Id == commonDocumentId);
|
||||
|
||||
var success = await _commonDocumentRepository.DeleteFromQueryAsync(t => t.Id == commonDocumentId, true, true);
|
||||
|
||||
if (find != null)
|
||||
{
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
// 生成时间 2022-03-31 13:18:48
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
|
||||
@@ -23,7 +21,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public class CommonDocumentView : CommonDocumentAddOrEdit
|
||||
{
|
||||
|
||||
public string FullFilePath { get; set; } = String.Empty;
|
||||
public string FullFilePath { get; set; } = String.Empty;
|
||||
public DateTime? DeletedTime { get; set; }
|
||||
public DateTime CreateTime { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
@@ -33,7 +31,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
///<summary>CommonDocumentQuery 列表查询参数模型</summary>
|
||||
public class CommonDocumentQuery : PageInput
|
||||
{
|
||||
public CriterionType? CriterionTypeEnum { get; set; }
|
||||
public CriterionType? CriterionTypeEnum { get; set; }
|
||||
public CommonDocumentFileType? FileTypeEnum { get; set; }
|
||||
public EmailBusinessScenario? BusinessScenarioEnum { get; set; }
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
@@ -92,8 +91,8 @@ namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public Guid? TrialReadingCriterionId { get; set; }
|
||||
|
||||
public Guid? SystemReadingCriterionId { get; set; }
|
||||
}
|
||||
public Guid? SystemReadingCriterionId { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class GetTrialCriterionDictionaryListInDto
|
||||
@@ -118,7 +117,7 @@ namespace IRaCIS.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
public class BasicDicSelectCopy:BasicDicSelect
|
||||
public class BasicDicSelectCopy : BasicDicSelect
|
||||
{
|
||||
|
||||
}
|
||||
@@ -144,12 +143,12 @@ namespace IRaCIS.Application.Contracts
|
||||
|
||||
public CrterionDictionaryGroup CrterionDictionaryGroup { get; set; } = IRaCIS.Core.Domain.Share.CrterionDictionaryGroup.General;
|
||||
|
||||
public bool IsEnumInt => System.Text.RegularExpressions.Regex.IsMatch(Code, @"^[-+]?\d*$") && DataTypeEnum== DicDataTypeEnum.Enum;
|
||||
public bool IsEnumInt => System.Text.RegularExpressions.Regex.IsMatch(Code, @"^[-+]?\d*$") && DataTypeEnum == DicDataTypeEnum.Enum;
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class BasicDicQuery:PageInput
|
||||
public class BasicDicQuery : PageInput
|
||||
{
|
||||
public string? keyInfo { get; set; }
|
||||
|
||||
@@ -220,7 +219,7 @@ namespace IRaCIS.Application.Contracts
|
||||
|
||||
public class DicViewModelDTO : AddOrUpdateDicDTO
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,9 +3,7 @@
|
||||
// 生成时间 2022-02-15 11:55:57
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Newtonsoft.Json;
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
public class TrialSelectEmailNoticeConfigView : EmailNoticeConfigView
|
||||
@@ -127,7 +125,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public List<UserTypeEnum> CopyUserTypeList { get; set; }
|
||||
|
||||
|
||||
public SysEmailLevel SystemLevel { get; set; }
|
||||
public SysEmailLevel SystemLevel { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -3,15 +3,12 @@
|
||||
// 生成时间 2024-07-02 09:29:36
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
/// <summary> ExploreRecommendView 列表视图模型 </summary>
|
||||
public class ExploreRecommendView: ExploreRecommendAddOrEdit
|
||||
public class ExploreRecommendView : ExploreRecommendAddOrEdit
|
||||
{
|
||||
|
||||
|
||||
public DateTime CreateTime { get; set; }
|
||||
public Guid CreateUserId { get; set; }
|
||||
public Guid UpdateUserId { get; set; }
|
||||
@@ -22,7 +19,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
}
|
||||
|
||||
///<summary>ExploreRecommendQuery 列表查询参数模型</summary>
|
||||
public class ExploreRecommendQuery:PageInput
|
||||
public class ExploreRecommendQuery : PageInput
|
||||
{
|
||||
|
||||
public string? Version { get; set; }
|
||||
@@ -48,7 +45,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public string Version { get; set; }
|
||||
public string Title { get; set; }
|
||||
|
||||
|
||||
public bool IsDeleted { get; set; }
|
||||
public string DownloadUrl { get; set; }
|
||||
public string Path { get; set; }
|
||||
|
||||
@@ -3,16 +3,13 @@
|
||||
// 生成时间 2022-03-28 16:43:52
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
/// <summary> FrontAuditConfigView 列表视图模型 </summary>
|
||||
public class FrontAuditConfigView:FrontAuditConfig
|
||||
public class FrontAuditConfigView : FrontAuditConfig
|
||||
{
|
||||
public string ChildrenTypeValue { get; set; } = string.Empty;
|
||||
public string ChildrenTypeValueCN { get; set; } = string.Empty;
|
||||
@@ -43,7 +40,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public class GetChildrenItem
|
||||
{
|
||||
|
||||
|
||||
|
||||
public Guid Id { get; set; }
|
||||
}
|
||||
@@ -74,7 +71,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
/// <summary>
|
||||
/// 数据源Guids
|
||||
/// </summary>
|
||||
public List<Guid?> DataSourceGuids { get; set; }=new List<Guid?>(){ };
|
||||
public List<Guid?> DataSourceGuids { get; set; } = new List<Guid?>() { };
|
||||
|
||||
/// <summary>
|
||||
/// 添加对象的Guid
|
||||
@@ -106,7 +103,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public Guid? OptTypeId { get; set; }
|
||||
|
||||
///<summary> ChildrenTypeId</summary>
|
||||
public Guid? ChildrenTypeId { get; set; }
|
||||
public Guid? ChildrenTypeId { get; set; }
|
||||
|
||||
public Guid? ModuleTypeId { get; set; }
|
||||
|
||||
@@ -131,7 +128,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
|
||||
|
||||
public class FrontAuditConfigDTO: FrontAuditConfigAddOrEdit
|
||||
public class FrontAuditConfigDTO : FrontAuditConfigAddOrEdit
|
||||
{
|
||||
|
||||
}
|
||||
@@ -158,8 +155,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
public Guid? ParentId { get; set; }
|
||||
public bool IsEnable { get; set; }
|
||||
public Guid? ModuleTypeId { get; set; }
|
||||
public Guid? OptTypeId { get; set; }
|
||||
public Guid? ChildrenTypeId { get; set; }
|
||||
public Guid? OptTypeId { get; set; }
|
||||
public Guid? ChildrenTypeId { get; set; }
|
||||
|
||||
public string ConfigType { get; set; } = string.Empty;
|
||||
|
||||
@@ -172,7 +169,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public string EnumType { get; set; } = string.Empty;
|
||||
|
||||
public Guid? ObjectTypeId { get; set; }
|
||||
public Guid? ObjectTypeId { get; set; }
|
||||
|
||||
public bool? IsShowByTrialConfig { get; set; }
|
||||
|
||||
@@ -244,7 +241,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
/// 日期类型
|
||||
/// </summary>
|
||||
|
||||
public string DateType { get; set; }=string.Empty;
|
||||
public string DateType { get; set; } = string.Empty;
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -285,7 +282,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
/// </summary>
|
||||
public string ForeignKeyEnText { get; set; } = string.Empty;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -3,9 +3,6 @@
|
||||
// 生成时间 2023-06-01 13:38:20
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
/// <summary> InternationalizationView 列表视图模型 </summary>
|
||||
@@ -33,7 +30,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
|
||||
public string? ValueCN { get; set; }
|
||||
|
||||
public string? Module { get; set; }
|
||||
public string? Module { get; set; }
|
||||
//关联版本历史记录表Id
|
||||
public Guid? PublishLogId { get; set; }
|
||||
|
||||
|
||||
@@ -3,9 +3,6 @@
|
||||
// 生成时间 2023-06-27 15:47:02
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
/// <summary> PublishLogView 列表视图模型 </summary>
|
||||
@@ -19,7 +16,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||
}
|
||||
|
||||
///<summary>PublishLogQuery 列表查询参数模型</summary>
|
||||
public class PublishLogQuery:PageInput
|
||||
public class PublishLogQuery : PageInput
|
||||
{
|
||||
|
||||
public string? Version { get; set; }
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class SysMessageDTO
|
||||
{
|
||||
|
||||
@@ -3,21 +3,17 @@
|
||||
// 生成时间 2022-02-15 15:46:00
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
/// <summary> SystemBasicDataView 列表视图模型 </summary>
|
||||
public class SystemBasicDataView: SystemBasicDataAddOrEdit
|
||||
public class SystemBasicDataView : SystemBasicDataAddOrEdit
|
||||
{
|
||||
|
||||
|
||||
public DateTime CreateTime { get; set; }
|
||||
public Guid CreateUserId { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
public Guid UpdateUserId { get; set; }
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +30,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
|
||||
///<summary>SystemBasicDataQuery 列表查询参数模型</summary>
|
||||
public class SystemBasicDataQuery:PageInput
|
||||
public class SystemBasicDataQuery : PageInput
|
||||
{
|
||||
///<summary> Name</summary>
|
||||
public string? Name { get; set; }
|
||||
@@ -57,7 +53,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public string ValueCN { get; set; } = string.Empty;
|
||||
|
||||
public bool IsEnable { get; set; }=true;
|
||||
public bool IsEnable { get; set; } = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class SystemLogDTO
|
||||
{
|
||||
@@ -22,7 +20,7 @@ namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public string Keyword { get; set; } = string.Empty;
|
||||
public string LogCategory { get; set; } = string.Empty;
|
||||
public DateTime? BeginTime { get; set; }
|
||||
public DateTime? BeginTime { get; set; }
|
||||
public DateTime? EndTime { get; set; }
|
||||
}
|
||||
|
||||
@@ -42,7 +40,7 @@ namespace IRaCIS.Application.Contracts
|
||||
public Guid? OptUserId { get; set; }
|
||||
|
||||
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
|
||||
public DateTime? EndDate { get; set; }
|
||||
}
|
||||
@@ -82,7 +80,7 @@ namespace IRaCIS.Application.Contracts
|
||||
|
||||
public class OptUserDto
|
||||
{
|
||||
public Guid OptUserId { get; set; }
|
||||
public Guid OptUserId { get; set; }
|
||||
public string OptUser { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service.Common
|
||||
{
|
||||
|
||||
@@ -1,22 +1,18 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IP2Region.Net.XDB;
|
||||
using System.Collections;
|
||||
using System.Text;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据字典-基础数据维护
|
||||
/// </summary>
|
||||
|
||||
[ApiExplorerSettings(GroupName = "Common")]
|
||||
public class DictionaryService (IRepository<Dictionary> _dicRepository,
|
||||
public class DictionaryService(IRepository<Dictionary> _dicRepository,
|
||||
IRepository<DoctorDictionary> _doctorDictionaryRepository,
|
||||
IRepository<TrialDictionary> _trialDictionaryRepository,
|
||||
IRepository<Doctor> _doctorRepository,
|
||||
@@ -52,7 +48,7 @@ namespace IRaCIS.Application.Services
|
||||
enumCode.AppendLine("}");
|
||||
|
||||
// 返回生成的枚举代码
|
||||
var enumStr= enumCode.ToString();
|
||||
var enumStr = enumCode.ToString();
|
||||
|
||||
return ResponseOutput.Ok(enumStr);
|
||||
|
||||
@@ -96,11 +92,11 @@ namespace IRaCIS.Application.Services
|
||||
[HttpPost]
|
||||
public async Task<List<string>> GetAllDictionaryKey()
|
||||
{
|
||||
var result =await _dicRepository.Where(t => t.ParentId == null).OrderBy(x=>x.Code).Select(x => x.Code).ToListAsync();
|
||||
var result = await _dicRepository.Where(t => t.ParentId == null).OrderBy(x => x.Code).Select(x => x.Code).ToListAsync();
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加字典 的同时 一起添加子项 --New
|
||||
@@ -117,10 +113,10 @@ namespace IRaCIS.Application.Services
|
||||
IsVerify = true
|
||||
};
|
||||
|
||||
|
||||
if((addBasicDicAndChild.DataTypeEnum == DicDataTypeEnum.Enum || addBasicDicAndChild.DataTypeEnum == DicDataTypeEnum.Bool))
|
||||
|
||||
if ((addBasicDicAndChild.DataTypeEnum == DicDataTypeEnum.Enum || addBasicDicAndChild.DataTypeEnum == DicDataTypeEnum.Bool))
|
||||
{
|
||||
if(addBasicDicAndChild.ChildList.GroupBy(t => t.Code).Where(g => g.Count() > 1).Any())
|
||||
if (addBasicDicAndChild.ChildList.GroupBy(t => t.Code).Where(g => g.Count() > 1).Any())
|
||||
{
|
||||
return ResponseOutput.NotOk(_localizer["Dictionary_RepeateCode"]);
|
||||
}
|
||||
@@ -187,11 +183,11 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
var verifyExp2 = new EntityVerifyExp<Dictionary>()
|
||||
{
|
||||
VerifyExp = t => t.Code == addOrEditBasic.Code && t.ParentId == addOrEditBasic.ParentId && t.Code==addOrEditBasic.Code,
|
||||
VerifyExp = t => t.Code == addOrEditBasic.Code && t.ParentId == addOrEditBasic.ParentId && t.Code == addOrEditBasic.Code,
|
||||
|
||||
VerifyMsg = _localizer["Dictionary_RepeateCode"],
|
||||
|
||||
IsVerify = addOrEditBasic.ParentId != null && (addOrEditBasic.DataTypeEnum == DicDataTypeEnum.Enum || addOrEditBasic.DataTypeEnum == DicDataTypeEnum.Bool)
|
||||
IsVerify = addOrEditBasic.ParentId != null && (addOrEditBasic.DataTypeEnum == DicDataTypeEnum.Enum || addOrEditBasic.DataTypeEnum == DicDataTypeEnum.Bool)
|
||||
};
|
||||
|
||||
|
||||
@@ -236,14 +232,14 @@ namespace IRaCIS.Application.Services
|
||||
//return ResponseOutput.NotOk(_localizer["Dictionary_DictionaryDeletion"]);
|
||||
}
|
||||
|
||||
if (await _readingTrialCriterionDictionaryRepository.AnyAsync(x => x.DictionaryId == id))
|
||||
{
|
||||
await _readingTrialCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.DictionaryId == id);
|
||||
//---当前字典在标准中被引用,不允许删除!
|
||||
//return ResponseOutput.NotOk(_localizer["Dictionary_DictionaryDeletion"]);
|
||||
}
|
||||
if (await _readingTrialCriterionDictionaryRepository.AnyAsync(x => x.DictionaryId == id))
|
||||
{
|
||||
await _readingTrialCriterionDictionaryRepository.BatchDeleteNoTrackingAsync(t => t.DictionaryId == id);
|
||||
//---当前字典在标准中被引用,不允许删除!
|
||||
//return ResponseOutput.NotOk(_localizer["Dictionary_DictionaryDeletion"]);
|
||||
}
|
||||
|
||||
if (await _dicRepository.AnyAsync(t => t.ParentId == id))
|
||||
if (await _dicRepository.AnyAsync(t => t.ParentId == id))
|
||||
{
|
||||
//---有子项数据,不允许直接删除!
|
||||
return ResponseOutput.NotOk(_localizer["Dictionary_SubitemDeletion"]);
|
||||
@@ -279,7 +275,7 @@ namespace IRaCIS.Application.Services
|
||||
public async Task<Dictionary<string, List<BasicDicSelectCopy>>> GetBasicDataSelect(string[] searchArray)
|
||||
{
|
||||
|
||||
var searchList = await _dicRepository.Where(t => searchArray.Contains(t.Parent.Code) && t.ParentId != null && t.IsEnable).ProjectTo<BasicDicSelectCopy>(_mapper.ConfigurationProvider,new { isEn_Us = _userInfo.IsEn_Us}).ToListAsync();
|
||||
var searchList = await _dicRepository.Where(t => searchArray.Contains(t.Parent.Code) && t.ParentId != null && t.IsEnable).ProjectTo<BasicDicSelectCopy>(_mapper.ConfigurationProvider, new { isEn_Us = _userInfo.IsEn_Us }).ToListAsync();
|
||||
|
||||
return searchList.GroupBy(t => t.ParentCode).ToDictionary(g => g.Key, g => g.OrderBy(t => t.ShowOrder).ToList());
|
||||
|
||||
@@ -397,45 +393,45 @@ namespace IRaCIS.Application.Services
|
||||
List<string> selectCode = new List<string>();
|
||||
List<BasicDicSelect> criterionDictionList = new List<BasicDicSelect>();
|
||||
|
||||
var isSystemCriterion = await _readingQuestionCriterionSystem.AnyAsync(x => x.Id == inDto.ReadingCriterionId);
|
||||
var isSystemCriterion = await _readingQuestionCriterionSystem.AnyAsync(x => x.Id == inDto.ReadingCriterionId);
|
||||
if (isSystemCriterion)
|
||||
{
|
||||
selectCode = await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
|
||||
criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
Code = x.Dictionary.Code,
|
||||
DataTypeEnum = x.Dictionary.DataTypeEnum,
|
||||
ShowOrder = x.Dictionary.ShowOrder,
|
||||
ParentCode = x.ParentCode,
|
||||
CrterionDictionaryGroup = x.CrterionDictionaryGroup,
|
||||
Id = x.DictionaryId,
|
||||
ParentId = x.Dictionary.ParentId,
|
||||
Value = x.Dictionary.Value,
|
||||
ValueCN = x.Dictionary.ValueCN
|
||||
criterionDictionList = await _readingCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
Code = x.Dictionary.Code,
|
||||
DataTypeEnum = x.Dictionary.DataTypeEnum,
|
||||
ShowOrder = x.Dictionary.ShowOrder,
|
||||
ParentCode = x.ParentCode,
|
||||
CrterionDictionaryGroup = x.CrterionDictionaryGroup,
|
||||
Id = x.DictionaryId,
|
||||
ParentId = x.Dictionary.ParentId,
|
||||
Value = x.Dictionary.Value,
|
||||
ValueCN = x.Dictionary.ValueCN
|
||||
|
||||
}).ToListAsync();
|
||||
}
|
||||
}).ToListAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
selectCode = await _trialCriterionDictionaryCodeRepository.Where(x => x.TrialCriterionId == inDto.ReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
|
||||
criterionDictionList = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
Code = x.Dictionary.Code,
|
||||
DataTypeEnum = x.Dictionary.DataTypeEnum,
|
||||
ShowOrder = x.Dictionary.ShowOrder,
|
||||
ParentCode = x.ParentCode,
|
||||
CrterionDictionaryGroup = x.CrterionDictionaryGroup,
|
||||
Id = x.DictionaryId,
|
||||
ParentId = x.Dictionary.ParentId,
|
||||
Value = x.Dictionary.Value,
|
||||
ValueCN = x.Dictionary.ValueCN
|
||||
criterionDictionList = await _readingTrialCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.ReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
Code = x.Dictionary.Code,
|
||||
DataTypeEnum = x.Dictionary.DataTypeEnum,
|
||||
ShowOrder = x.Dictionary.ShowOrder,
|
||||
ParentCode = x.ParentCode,
|
||||
CrterionDictionaryGroup = x.CrterionDictionaryGroup,
|
||||
Id = x.DictionaryId,
|
||||
ParentId = x.Dictionary.ParentId,
|
||||
Value = x.Dictionary.Value,
|
||||
ValueCN = x.Dictionary.ValueCN
|
||||
|
||||
}).ToListAsync();
|
||||
}
|
||||
}).ToListAsync();
|
||||
}
|
||||
|
||||
|
||||
var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync();
|
||||
@@ -450,7 +446,7 @@ namespace IRaCIS.Application.Services
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
criterionDictionList = criterionDictionList.Where(x => selectCode.Contains(x.ParentCode)).ToList();
|
||||
|
||||
@@ -542,48 +538,48 @@ namespace IRaCIS.Application.Services
|
||||
}
|
||||
else
|
||||
{
|
||||
List<string> selectCode = await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.SystemReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
List<string> selectCode = await _systemCriterionDictionaryCodeRepository.Where(x => x.SystemCriterionId == inDto.SystemReadingCriterionId).Select(x => x.Code).ToListAsync();
|
||||
|
||||
|
||||
var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync();
|
||||
var criterionCode = await _dicRepository.Where(x => x.ConfigDictionary.Code == "Reading_eCRF_Criterion").Select(x => x.Code).ToListAsync();
|
||||
|
||||
|
||||
foreach (var item in criterionCode)
|
||||
{
|
||||
if (result.ContainsKey(item))
|
||||
{
|
||||
result[item] = new List<BasicDicSelect>();
|
||||
}
|
||||
}
|
||||
foreach (var item in criterionCode)
|
||||
{
|
||||
if (result.ContainsKey(item))
|
||||
{
|
||||
result[item] = new List<BasicDicSelect>();
|
||||
}
|
||||
}
|
||||
|
||||
var criterionDictionList = await _readingSystemCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.SystemReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
Code = x.Dictionary.Code,
|
||||
Description = x.Dictionary.Description,
|
||||
DataTypeEnum = x.Dictionary.DataTypeEnum,
|
||||
ShowOrder = x.Dictionary.ShowOrder,
|
||||
ParentCode = x.ParentCode,
|
||||
Id = x.DictionaryId,
|
||||
CrterionDictionaryGroup = x.CrterionDictionaryGroup,
|
||||
ParentId = x.Dictionary.ParentId,
|
||||
Value = x.Dictionary.Value,
|
||||
ValueCN = x.Dictionary.ValueCN
|
||||
var criterionDictionList = await _readingSystemCriterionDictionaryRepository.Where(x => x.CriterionId == inDto.SystemReadingCriterionId).Select(x => new BasicDicSelect()
|
||||
{
|
||||
ChildGroup = x.Dictionary.ChildGroup,
|
||||
Code = x.Dictionary.Code,
|
||||
Description = x.Dictionary.Description,
|
||||
DataTypeEnum = x.Dictionary.DataTypeEnum,
|
||||
ShowOrder = x.Dictionary.ShowOrder,
|
||||
ParentCode = x.ParentCode,
|
||||
Id = x.DictionaryId,
|
||||
CrterionDictionaryGroup = x.CrterionDictionaryGroup,
|
||||
ParentId = x.Dictionary.ParentId,
|
||||
Value = x.Dictionary.Value,
|
||||
ValueCN = x.Dictionary.ValueCN
|
||||
|
||||
}).ToListAsync();
|
||||
}).ToListAsync();
|
||||
|
||||
criterionDictionList = criterionDictionList.Where(x => selectCode.Contains(x.ParentCode)).ToList();
|
||||
criterionDictionList = criterionDictionList.Where(x => selectCode.Contains(x.ParentCode)).ToList();
|
||||
|
||||
var criterionDic = criterionDictionList.GroupBy(x => x.ParentCode).ToDictionary(g => g.Key, g => g.OrderBy(t => t.ShowOrder).ToList());
|
||||
var criterionDic = criterionDictionList.GroupBy(x => x.ParentCode).ToDictionary(g => g.Key, g => g.OrderBy(t => t.ShowOrder).ToList());
|
||||
|
||||
foreach (var item in criterionDic)
|
||||
{
|
||||
result[item.Key] = item.Value;
|
||||
}
|
||||
foreach (var item in criterionDic)
|
||||
{
|
||||
result[item.Key] = item.Value;
|
||||
}
|
||||
|
||||
return result;
|
||||
return result;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
@@ -18,13 +17,13 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public class EmailNoticeConfigService(IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
|
||||
IRepository<EmailNoticeUserType> _emailNoticeUserTypeRepository) : BaseService, IEmailNoticeConfigService
|
||||
{
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<EmailNoticeConfigView>> GetEmailNoticeConfigList(EmailNoticeConfigQuery inQuery)
|
||||
{
|
||||
var emailNoticeConfigQueryable = _emailNoticeConfigrepository
|
||||
.WhereIf(inQuery.SystemLevel == null, t => t.SystemLevel == SysEmailLevel.not_sys)
|
||||
.WhereIf(inQuery.SystemLevel!=null, t =>t.SystemLevel == inQuery.SystemLevel)
|
||||
.WhereIf(inQuery.SystemLevel != null, t => t.SystemLevel == inQuery.SystemLevel)
|
||||
.WhereIf(inQuery.IsDistinguishCriteria != null, t => t.IsDistinguishCriteria == inQuery.IsDistinguishCriteria)
|
||||
.WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeEnum == inQuery.CriterionTypeEnum)
|
||||
.WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum)
|
||||
@@ -48,8 +47,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
// 匹配所有占位符的正则表达式,允许包含空格的占位符
|
||||
var regex = new Regex(@"\{\s*\d+\s*\}");
|
||||
|
||||
if (regex.Matches($"{addOrEditEmailNoticeConfig.EmailTopic}{addOrEditEmailNoticeConfig.EmailTopicCN}{addOrEditEmailNoticeConfig.EmailHtmlContent}{addOrEditEmailNoticeConfig.EmailHtmlContentCN}" )
|
||||
.Any(t=>t.Value.Contains(" ")))
|
||||
if (regex.Matches($"{addOrEditEmailNoticeConfig.EmailTopic}{addOrEditEmailNoticeConfig.EmailTopicCN}{addOrEditEmailNoticeConfig.EmailHtmlContent}{addOrEditEmailNoticeConfig.EmailHtmlContentCN}")
|
||||
.Any(t => t.Value.Contains(" ")))
|
||||
{
|
||||
//邮件模板占位符不允许有空格,请核查占位符的地方
|
||||
return ResponseOutput.NotOk("EmailNoticeConfig_ContainEmpty");
|
||||
@@ -98,7 +97,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
var entity = await _emailNoticeConfigrepository.UpdateFromDTOAsync(addOrEditEmailNoticeConfig, true, false,verifyExp1);
|
||||
var entity = await _emailNoticeConfigrepository.UpdateFromDTOAsync(addOrEditEmailNoticeConfig, true, false, verifyExp1);
|
||||
|
||||
return ResponseOutput.Ok(entity.Id.ToString());
|
||||
|
||||
|
||||
@@ -1,29 +1,14 @@
|
||||
using DocumentFormat.OpenXml.Office2010.ExcelAc;
|
||||
using DocumentFormat.OpenXml.Presentation;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.API._ServiceExtensions.NewtonsoftJson;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts.DTO;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using MiniExcelLibs;
|
||||
using MiniExcelLibs.OpenXml;
|
||||
using NPOI.HPSF;
|
||||
using NPOI.HSSF.UserModel;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using NPOI.XSSF.UserModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service.Common
|
||||
{
|
||||
@@ -87,7 +72,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialUserList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialMaintenanceDTO));
|
||||
@@ -133,7 +118,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -188,7 +173,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
var exportInfo = data;
|
||||
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSiteUserSummary_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialSiteUserSummaryDto));
|
||||
|
||||
@@ -220,7 +205,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
|
||||
var query = _trialRepository.AsQueryable()
|
||||
.WhereIf(inQuery.TrialIdList.Count()>0, o => inQuery.TrialIdList.Contains(o.Id))
|
||||
.WhereIf(inQuery.TrialIdList.Count() > 0, o => inQuery.TrialIdList.Contains(o.Id))
|
||||
|
||||
.WhereIf(inQuery.SponsorId != null, o => o.SponsorId == inQuery.SponsorId)
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.Code), o => o.TrialCode.Contains(inQuery.Code))
|
||||
@@ -314,7 +299,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TrialToBeDoneDto));
|
||||
@@ -348,7 +333,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
[FromServices] IRepository<Trial> _trialRepository
|
||||
)
|
||||
{
|
||||
var trialInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync());
|
||||
var trialInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync());
|
||||
|
||||
var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId)
|
||||
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
@@ -433,7 +418,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
exportInfo.List=list;
|
||||
exportInfo.List = list;
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
|
||||
@@ -491,7 +476,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialCRCUploadImageList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO));
|
||||
@@ -550,7 +535,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialQCVisitImageList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(CRCVisitExportDTO));
|
||||
@@ -600,7 +585,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialQCImageChanllengeList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(QCChanllengeExportDto));
|
||||
}
|
||||
@@ -644,7 +629,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectExportDTO));
|
||||
|
||||
@@ -720,7 +705,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
var (memoryStream, fileName) = await ExcelExportHelper.DataExport_NpoiTestAsync(StaticData.Export.TrialSubjectProgressList_Export, exportInfo, /*"", */_commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SubjectProgressDto));
|
||||
|
||||
@@ -866,7 +851,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyUploadMonitor_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyMonitorExportDto));
|
||||
@@ -903,7 +888,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectReadingPeriodList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadPeriodExportDto));
|
||||
|
||||
@@ -993,7 +978,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyExportDTO));
|
||||
}
|
||||
@@ -1034,7 +1019,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectVisitCheckList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PMKCheckEXportDTO));
|
||||
}
|
||||
@@ -1087,7 +1072,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReadingTaskList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadingTaskExportDto));
|
||||
}
|
||||
@@ -1153,7 +1138,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReReadingTaskList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReReadingTaskExportDto));
|
||||
}
|
||||
@@ -1213,7 +1198,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto));
|
||||
}
|
||||
@@ -1298,7 +1283,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync();
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSelfAnalysisList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SelftAnalysisExport));
|
||||
}
|
||||
@@ -1402,7 +1387,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
exportInfo.CriterionName = await _readingQuestionCriterionTrialRepository.Where(u => u.TrialId == queryVisitTask.TrialId && u.IsConfirm && u.Id == queryVisitTask.TrialReadingCriterionId).Select(t => t.CriterionName).FirstOrDefaultAsync();
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(newList, _userInfo.TimeZoneId); ;
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialGroupAnalysisList_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(GroupAnalysisExport));
|
||||
}
|
||||
@@ -1680,7 +1665,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list.Where(t => t.ReadingCategory != ReadingCategory.Global).ToList(), _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.OverallTumorEvaluation_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(OverallTumorEvaluationExport), criterion.CriterionType);
|
||||
@@ -1740,7 +1725,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list.Where(t => t.ReadingCategory != ReadingCategory.Global).ToList(), _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.RECIST1Point1EvaluationOfTumorEfficacy_Export, exportInfo, $"{exportInfo.ResearchProgramNo}_{exportInfo.CriterionName}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1EvaluationOfTumorEfficacyExport), criterion.CriterionType);
|
||||
@@ -1829,7 +1814,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
list = DealJudgeMark(criterion.ArbitrationRule, list);
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(exportList, _userInfo.TimeZoneId);
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.RECIST1Point1DetailedOfEvaluatedLesion_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(RECIST1Point1DetailedOfEvaluatedLesionExport), criterion.CriterionType);
|
||||
|
||||
@@ -1864,7 +1849,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
|
||||
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(exportList, _userInfo.TimeZoneId); ;
|
||||
exportInfo.CurrentTime = ExportExcelConverterDate.DateTimeInternationalToString(DateTime.Now, _userInfo.TimeZoneId);
|
||||
|
||||
|
||||
|
||||
return await ExcelExportHelper.DataExportAsync(StaticData.Export.PCWG3Point1DetailedOfEvaluatedLesion_Export, exportInfo, $"{exportInfo.ResearchProgramNo}", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PCWG3DetailedOfEvaluatedLesionExport), criterion.CriterionType);
|
||||
|
||||
|
||||
@@ -4,11 +4,10 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
/// <summary>
|
||||
@@ -47,7 +46,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
VerifyExp = u => u.IsDeleted == addOrEditExploreRecommend.IsDeleted && u.ExploreType == addOrEditExploreRecommend.ExploreType,
|
||||
|
||||
// "当前类型浏览器启用版本只允许有一个"
|
||||
VerifyMsg = _localizer["ExploreRecommend_OnlyOneTypePerType"] ,
|
||||
VerifyMsg = _localizer["ExploreRecommend_OnlyOneTypePerType"],
|
||||
|
||||
IsVerify = addOrEditExploreRecommend.IsDeleted == false
|
||||
};
|
||||
@@ -62,18 +61,18 @@ namespace IRaCIS.Core.Application.Service
|
||||
[HttpDelete("{exploreRecommendId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteExploreRecommend(Guid exploreRecommendId)
|
||||
{
|
||||
var success = await _exploreRecommendRepository.DeleteFromQueryAsync(t => t.Id == exploreRecommendId, true,true);
|
||||
var success = await _exploreRecommendRepository.DeleteFromQueryAsync(t => t.Id == exploreRecommendId, true, true);
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
[AllowAnonymous]
|
||||
public async Task<List<ExploreRecommendView> > GetExploreRecommentInfo()
|
||||
public async Task<List<ExploreRecommendView>> GetExploreRecommentInfo()
|
||||
{
|
||||
|
||||
|
||||
var result = await _exploreRecommendRepository.Where(t => t.IsDeleted == false).ProjectTo<ExploreRecommendView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
if (result .Count==0)
|
||||
if (result.Count == 0)
|
||||
{ //"系统浏览器版本推荐未维护,请联系维护人员"
|
||||
throw new QueryBusinessObjectNotExistException(_localizer["ExploreRecommend_NoExporeRecord"]);
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using System.Text;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using System.Text;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
public class FileService(
|
||||
IDoctorService _doctorService,
|
||||
|
||||
@@ -6,19 +6,19 @@
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// ICommonDocumentService
|
||||
/// </summary>
|
||||
public interface ICommonDocumentService
|
||||
{
|
||||
/// <summary>
|
||||
/// ICommonDocumentService
|
||||
/// </summary>
|
||||
public interface ICommonDocumentService
|
||||
{
|
||||
|
||||
|
||||
Task<PageOutput<CommonDocumentView>> GetCommonDocumentList(CommonDocumentQuery queryCommonDocument);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateCommonDocument(CommonDocumentAddOrEdit addOrEditCommonDocument);
|
||||
|
||||
Task<PageOutput<CommonDocumentView>> GetCommonDocumentList(CommonDocumentQuery queryCommonDocument);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateCommonDocument(CommonDocumentAddOrEdit addOrEditCommonDocument);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
@@ -12,7 +9,7 @@ namespace IRaCIS.Application.Interfaces
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> GetBoolValueState(bool value);
|
||||
Task<string> GetBoolValueState(bool value);
|
||||
|
||||
/// <summary>
|
||||
/// 获取审核状态
|
||||
@@ -21,7 +18,7 @@ namespace IRaCIS.Application.Interfaces
|
||||
/// <param name="trial"></param>
|
||||
/// <param name="childCode"></param>
|
||||
/// <returns></returns>
|
||||
Task<string> GetAuditState<T>(Guid trial, T childCode);
|
||||
Task<string> GetAuditState<T>(Guid trial, T childCode);
|
||||
|
||||
/// <summary>
|
||||
/// 获取枚举翻译
|
||||
|
||||
@@ -6,19 +6,19 @@
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// IExploreRecommendService
|
||||
/// </summary>
|
||||
public interface IExploreRecommendService
|
||||
{
|
||||
/// <summary>
|
||||
/// IExploreRecommendService
|
||||
/// </summary>
|
||||
public interface IExploreRecommendService
|
||||
{
|
||||
|
||||
Task<PageOutput<ExploreRecommendView>> GetExploreRecommendList(ExploreRecommendQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateExploreRecommend(ExploreRecommendAddOrEdit addOrEditExploreRecommend);
|
||||
Task<PageOutput<ExploreRecommendView>> GetExploreRecommendList(ExploreRecommendQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateExploreRecommend(ExploreRecommendAddOrEdit addOrEditExploreRecommend);
|
||||
|
||||
Task<IResponseOutput> DeleteExploreRecommend(Guid exploreRecommendId);
|
||||
|
||||
Task<IResponseOutput> DeleteExploreRecommend(Guid exploreRecommendId);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
public interface IFileService
|
||||
{
|
||||
|
||||
@@ -6,20 +6,20 @@
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// IFrontAuditConfigService
|
||||
/// </summary>
|
||||
public interface IFrontAuditConfigService
|
||||
{
|
||||
/// <summary>
|
||||
/// IFrontAuditConfigService
|
||||
/// </summary>
|
||||
public interface IFrontAuditConfigService
|
||||
{
|
||||
|
||||
|
||||
Task<List<FrontAuditConfigView>> GetFrontAuditConfigList(FrontAuditConfigQuery queryFrontAuditConfig);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateFrontAuditConfig(FrontAuditConfigAddOrEdit addOrEditFrontAuditConfig);
|
||||
|
||||
Task<IResponseOutput> DeleteFrontAuditConfig(Guid frontAuditConfigId);
|
||||
Task<List<FrontAuditConfigView>> GetFrontAuditConfigList(FrontAuditConfigQuery queryFrontAuditConfig);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateFrontAuditConfig(FrontAuditConfigAddOrEdit addOrEditFrontAuditConfig);
|
||||
|
||||
Task<IResponseOutput> DeleteFrontAuditConfig(Guid frontAuditConfigId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using System.Collections.Generic;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -6,19 +6,19 @@
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// IPublishLogService
|
||||
/// </summary>
|
||||
public interface IPublishLogService
|
||||
{
|
||||
/// <summary>
|
||||
/// IPublishLogService
|
||||
/// </summary>
|
||||
public interface IPublishLogService
|
||||
{
|
||||
|
||||
Task<PageOutput<PublishLogView>> GetPublishLogList(PublishLogQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdatePublishLog(PublishLogAddOrEdit addOrEditPublishLog);
|
||||
Task<PageOutput<PublishLogView>> GetPublishLogList(PublishLogQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdatePublishLog(PublishLogAddOrEdit addOrEditPublishLog);
|
||||
|
||||
Task<IResponseOutput> DeletePublishLog(Guid publishLogId);
|
||||
|
||||
Task<IResponseOutput> DeletePublishLog(Guid publishLogId);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,20 +6,20 @@
|
||||
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
/// ISystemBasicDataService
|
||||
/// </summary>
|
||||
public interface ISystemBasicDataService
|
||||
{
|
||||
/// <summary>
|
||||
/// ISystemBasicDataService
|
||||
/// </summary>
|
||||
public interface ISystemBasicDataService
|
||||
{
|
||||
|
||||
|
||||
Task<PageOutput<SystemBasicDataView>> GetSystemBasicDataList(SystemBasicDataQuery querySystemBasicData);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateSystemBasicData(SystemBasicDataAddOrEdit addOrEditSystemBasicData);
|
||||
|
||||
Task<IResponseOutput> DeleteSystemBasicData(Guid systemBasicDataId);
|
||||
Task<PageOutput<SystemBasicDataView>> GetSystemBasicDataList(SystemBasicDataQuery querySystemBasicData);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateSystemBasicData(SystemBasicDataAddOrEdit addOrEditSystemBasicData);
|
||||
|
||||
Task<IResponseOutput> DeleteSystemBasicData(Guid systemBasicDataId);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,13 +4,11 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ZiggyCreatures.Caching.Fusion;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
@@ -19,9 +17,9 @@ namespace IRaCIS.Core.Application.Service
|
||||
/// InternationalizationService
|
||||
/// </summary>
|
||||
[ApiExplorerSettings(GroupName = "Common")]
|
||||
public class InternationalizationService (IRepository<Internationalization> _internationalizationRepository) : BaseService, IInternationalizationService
|
||||
public class InternationalizationService(IRepository<Internationalization> _internationalizationRepository) : BaseService, IInternationalizationService
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 前端国际化内容接口
|
||||
@@ -140,7 +138,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
await _internationalizationRepository.SaveChangesAsync();
|
||||
|
||||
//清理缓存
|
||||
await _fusionCache.SetAsync<List<InternationalizationSimpleDto>>(CacheKeys.FrontInternational, new List<InternationalizationSimpleDto>(), TimeSpan.FromDays(1));
|
||||
await _fusionCache.SetAsync<List<InternationalizationSimpleDto>>(CacheKeys.FrontInternational, new List<InternationalizationSimpleDto>(), TimeSpan.FromDays(1));
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
@@ -181,7 +179,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
else
|
||||
{
|
||||
//清理缓存
|
||||
await _fusionCache.SetAsync<List<InternationalizationSimpleDto>>(CacheKeys.FrontInternational, new List<InternationalizationSimpleDto>(), TimeSpan.FromDays(1));
|
||||
await _fusionCache.SetAsync<List<InternationalizationSimpleDto>>(CacheKeys.FrontInternational, new List<InternationalizationSimpleDto>(), TimeSpan.FromDays(1));
|
||||
}
|
||||
return ResponseOutput.Ok(entity.Id.ToString());
|
||||
|
||||
|
||||
@@ -1,29 +1,15 @@
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using MimeKit;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using MailKit;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Auth;
|
||||
using AutoMapper;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Medallion.Threading;
|
||||
using System.Text.RegularExpressions;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using DocumentFormat.OpenXml.Office2013.Excel;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using DocumentFormat.OpenXml.Vml;
|
||||
using System.Net.Mail;
|
||||
using IP2Region.Net.XDB;
|
||||
using NPOI.SS.Formula.Eval;
|
||||
using System.Linq;
|
||||
using MailKit;
|
||||
using Medallion.Threading;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
using MimeKit;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
public interface IMailVerificationService
|
||||
{
|
||||
@@ -72,7 +58,7 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
private readonly SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue;
|
||||
|
||||
|
||||
|
||||
private async Task<EmailNoticeConfig> GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario scenario, MimeMessage messageToSend,
|
||||
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc)
|
||||
{
|
||||
@@ -818,7 +804,7 @@ namespace IRaCIS.Application.Services
|
||||
var emailType = await _dictionaryRepository.Where(t => t.Parent.Code == "Email_BusinessScenario" && t.ParentId != null && t.Code == ((int)EmailBusinessScenario.TrialFeedBack).ToString()).Select(t => _userInfo.IsEn_Us ? t.Value : t.ValueCN).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
var info = await _trialRepository.Where(t => t.Id == feedBack.TrialId).Select(t => new { t.ResearchProgramNo, t.TrialCode }).FirstNotNullAsync();
|
||||
var info = await _trialRepository.Where(t => t.Id == feedBack.TrialId).Select(t => new { t.ResearchProgramNo, t.TrialCode }).FirstNotNullAsync();
|
||||
|
||||
Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailConfigFunc = input =>
|
||||
{
|
||||
|
||||
@@ -4,12 +4,10 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -45,7 +43,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
if (!Version.TryParse(addOrEditPublishLog.Version, out version))
|
||||
{
|
||||
//"版本号不符合要求"
|
||||
return ResponseOutput.NotOk(_localizer["PublishLog_NotValidVersion"] );
|
||||
return ResponseOutput.NotOk(_localizer["PublishLog_NotValidVersion"]);
|
||||
}
|
||||
|
||||
var verifyExp1 = new EntityVerifyExp<PublishLog>()
|
||||
@@ -61,9 +59,9 @@ namespace IRaCIS.Core.Application.Service
|
||||
VerifyExp = u => u.IsCurrentVersion == addOrEditPublishLog.IsCurrentVersion,
|
||||
|
||||
//"当前发布版本只允许有一个"
|
||||
VerifyMsg = _localizer["PublishLog_OnlyOneCurrentVersion"] ,
|
||||
VerifyMsg = _localizer["PublishLog_OnlyOneCurrentVersion"],
|
||||
|
||||
IsVerify=addOrEditPublishLog.IsCurrentVersion==true
|
||||
IsVerify = addOrEditPublishLog.IsCurrentVersion == true
|
||||
};
|
||||
|
||||
var entity = await _publishLogRepository.InsertOrUpdateAsync(addOrEditPublishLog, true, verifyExp1, verifyExp2);
|
||||
@@ -88,7 +86,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
if (result == null)
|
||||
{
|
||||
//"系统当前版本未标记,请联系维护人员"
|
||||
throw new QueryBusinessObjectNotExistException(_localizer["PublishLog_NoCurrentVersion"] );
|
||||
throw new QueryBusinessObjectNotExistException(_localizer["PublishLog_NoCurrentVersion"]);
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
var systemBasicDataQueryable = _systemBasicDataRepository.Where(t => t.ParentId == null)
|
||||
.ProjectTo<SystemBasicDataView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await systemBasicDataQueryable.ToPagedListAsync(inQuery,nameof(SystemBasicDataView.Code));
|
||||
return await systemBasicDataQueryable.ToPagedListAsync(inQuery, nameof(SystemBasicDataView.Code));
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
[HttpGet("{parentId:guid}")]
|
||||
public async Task<List<SystemBasicDataView>> GetChildList(Guid parentId)
|
||||
{
|
||||
return await _systemBasicDataRepository.Where(t => t.ParentId == parentId&&t.IsEnable).OrderBy(t => t.Code).ProjectTo<SystemBasicDataView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
return await _systemBasicDataRepository.Where(t => t.ParentId == parentId && t.IsEnable).OrderBy(t => t.Code).ProjectTo<SystemBasicDataView>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
else
|
||||
{
|
||||
|
||||
var entity =await _systemBasicDataRepository.Where(t => t.Id == addOrEditSystemBasicData.Id,true).FirstOrDefaultAsync();
|
||||
var entity = await _systemBasicDataRepository.Where(t => t.Id == addOrEditSystemBasicData.Id, true).FirstOrDefaultAsync();
|
||||
_mapper.Map(addOrEditSystemBasicData, entity);
|
||||
await _systemBasicDataRepository.SaveChangesAsync();
|
||||
|
||||
@@ -80,7 +80,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
[HttpDelete("{systemBasicDataId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteSystemBasicData(Guid systemBasicDataId)
|
||||
{
|
||||
var success = await _systemBasicDataRepository.DeleteFromQueryAsync(x=>x.Id== systemBasicDataId);
|
||||
var success = await _systemBasicDataRepository.DeleteFromQueryAsync(x => x.Id == systemBasicDataId);
|
||||
await _systemBasicDataRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Result(true);
|
||||
}
|
||||
@@ -95,7 +95,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
public async Task<Dictionary<string, List<SystemBasicDataSelect>>> GetBasicDataSelect(string[] searchArray)
|
||||
{
|
||||
|
||||
var searchList = await _systemBasicDataRepository.Where(t => searchArray.Contains(t.Parent.Code) && t.ParentId != null).ProjectTo<SystemBasicDataSelect>(_mapper.ConfigurationProvider,new { _userInfo.IsEn_Us}).ToListAsync();
|
||||
var searchList = await _systemBasicDataRepository.Where(t => searchArray.Contains(t.Parent.Code) && t.ParentId != null).ProjectTo<SystemBasicDataSelect>(_mapper.ConfigurationProvider, new { _userInfo.IsEn_Us }).ToListAsync();
|
||||
|
||||
return searchList.GroupBy(t => t.ParentCode).ToDictionary(g => g.Key, g => g.ToList());
|
||||
|
||||
|
||||
@@ -1,23 +1,7 @@
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Configuration.Json;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using SharpCompress.Common;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Nodes;
|
||||
using System.Text.Encodings.Web;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service.Common
|
||||
{
|
||||
@@ -63,7 +47,7 @@ namespace IRaCIS.Core.Application.Service.Common
|
||||
{
|
||||
|
||||
//---解析Json文件配置出现问题
|
||||
throw new BusinessValidationFailedException(_localizer["SysMon_JsonConfig"]+e.Message);
|
||||
throw new BusinessValidationFailedException(_localizer["SysMon_JsonConfig"] + e.Message);
|
||||
}
|
||||
|
||||
//默认存储的路径
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -71,7 +69,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
CreateMap<Internationalization, InternationalizationAddOrEdit>().ReverseMap();
|
||||
|
||||
CreateMap<Internationalization, BatchInternationalizationDto>().ReverseMap();
|
||||
|
||||
|
||||
|
||||
CreateMap<BatchAddInternationalizationDto, InternationalizationAddOrEdit>();
|
||||
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 医生文档关联关系维护
|
||||
@@ -14,7 +11,7 @@ namespace IRaCIS.Application.Services
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class AttachmentService(IRepository<Attachment> _attachmentrepository) : BaseService, IAttachmentService
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 删除附件
|
||||
@@ -22,7 +19,7 @@ namespace IRaCIS.Application.Services
|
||||
/// <param name="param"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
public async Task<IResponseOutput> DeleteAttachment([FromBody]AttachementCommand param)
|
||||
public async Task<IResponseOutput> DeleteAttachment([FromBody] AttachementCommand param)
|
||||
{
|
||||
//var attachment = _doctorAttachmentApp.GetDetailById(id);
|
||||
//string file = HostingEnvironment.MapPath(attachment.Path);
|
||||
@@ -37,7 +34,7 @@ namespace IRaCIS.Application.Services
|
||||
// File.Delete(temp);
|
||||
//}
|
||||
|
||||
var success =await _attachmentrepository.BatchDeleteNoTrackingAsync(a => a.Id == param.Id);
|
||||
var success = await _attachmentrepository.BatchDeleteNoTrackingAsync(a => a.Id == param.Id);
|
||||
return ResponseOutput.Result(success);
|
||||
}
|
||||
|
||||
@@ -52,7 +49,7 @@ namespace IRaCIS.Application.Services
|
||||
public async Task<IEnumerable<AttachmentDTO>> GetAttachmentByType(Guid doctorId, string type)
|
||||
{
|
||||
var attachmentList = await _attachmentrepository.Where(a => a.DoctorId == doctorId && a.Type.Equals(type)).ProjectTo<AttachmentDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
attachmentList.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
attachmentList.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
|
||||
return attachmentList;
|
||||
}
|
||||
@@ -64,11 +61,11 @@ namespace IRaCIS.Application.Services
|
||||
/// <param name="types">类型数组</param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("{doctorId:guid}")]
|
||||
public async Task<IEnumerable<AttachmentDTO>> GetAttachmentByTypes(Guid doctorId, string[] types)
|
||||
public async Task<IEnumerable<AttachmentDTO>> GetAttachmentByTypes(Guid doctorId, string[] types)
|
||||
{
|
||||
|
||||
var attachmentList =await _attachmentrepository.Where(a => a.DoctorId == doctorId && types.Contains(a.Type)).OrderBy(s => s.Type).ThenBy(m => m.CreateTime).ProjectTo<AttachmentDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
attachmentList.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
var attachmentList = await _attachmentrepository.Where(a => a.DoctorId == doctorId && types.Contains(a.Type)).OrderBy(s => s.Type).ThenBy(m => m.CreateTime).ProjectTo<AttachmentDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
attachmentList.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
|
||||
return attachmentList;
|
||||
}
|
||||
@@ -81,8 +78,8 @@ namespace IRaCIS.Application.Services
|
||||
[HttpGet("{doctorId:guid}")]
|
||||
public async Task<IEnumerable<AttachmentDTO>> GetAttachments(Guid doctorId)
|
||||
{
|
||||
var attachmentList =await _attachmentrepository.Where(a => a.DoctorId == doctorId).OrderBy(s => s.Type).ThenBy(m => m.CreateTime).ProjectTo<AttachmentDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
attachmentList.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
var attachmentList = await _attachmentrepository.Where(a => a.DoctorId == doctorId).OrderBy(s => s.Type).ThenBy(m => m.CreateTime).ProjectTo<AttachmentDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
attachmentList.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
|
||||
return attachmentList;
|
||||
}
|
||||
@@ -91,8 +88,8 @@ namespace IRaCIS.Application.Services
|
||||
public async Task<AttachmentDTO> GetDetailById(Guid attachmentId)
|
||||
{
|
||||
var attachment = await _attachmentrepository.FirstOrDefaultAsync(a => a.Id == attachmentId).IfNullThrowException();
|
||||
var temp= _mapper.Map<AttachmentDTO>(attachment);
|
||||
temp.FullPath = temp.Path + "?access_token=" + _userInfo.UserToken;
|
||||
var temp = _mapper.Map<AttachmentDTO>(attachment);
|
||||
temp.FullPath = temp.Path + "?access_token=" + _userInfo.UserToken;
|
||||
return temp;
|
||||
}
|
||||
|
||||
@@ -129,12 +126,12 @@ namespace IRaCIS.Application.Services
|
||||
//因为界面现实的列表用了 接口返回的列表,所以要把返回的模型对应的字段也要更改
|
||||
var attach = attachments.First(t => t.Id == reUpload.Id);
|
||||
attach.CreateTime = DateTime.Now;
|
||||
|
||||
|
||||
|
||||
//重传的时候,发现 相同语言的官方简历数量为2 那么将重传的简历设置为非官方
|
||||
if (attachments.Count(t => t.Language == reUpload.Language && t.IsOfficial) == 2)
|
||||
{
|
||||
await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == reUpload.Id, u => new Attachment()
|
||||
await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == reUpload.Id, u => new Attachment()
|
||||
{
|
||||
Path = reUpload.Path,
|
||||
CreateTime = DateTime.Now,
|
||||
@@ -167,7 +164,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
var list = _mapper.Map<IEnumerable<AttachmentDTO>>(attachments).ToList();
|
||||
|
||||
list.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
list.ForEach(t => t.FullPath = t.Path + "?access_token=" + _userInfo.UserToken);
|
||||
|
||||
return list;
|
||||
}
|
||||
@@ -177,7 +174,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
var newAttachment = _mapper.Map<Attachment>(attachment);
|
||||
//如果这个医生不存在 这个语言的官方简历 就设置为官方简历
|
||||
if (! await _attachmentrepository.AnyAsync(t => t.Type == "Resume" && t.DoctorId == attachment.DoctorId && t.Language == attachment.Language && t.IsOfficial))
|
||||
if (!await _attachmentrepository.AnyAsync(t => t.Type == "Resume" && t.DoctorId == attachment.DoctorId && t.Language == attachment.Language && t.IsOfficial))
|
||||
{
|
||||
newAttachment.IsOfficial = true;
|
||||
|
||||
@@ -210,17 +207,17 @@ namespace IRaCIS.Application.Services
|
||||
/// <param name="attachmentId"></param>
|
||||
/// <param name="language"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
|
||||
[HttpPost("{doctorId:guid}/{attachmentId:guid}/{language}")]
|
||||
public async Task<IResponseOutput> SetOfficial(Guid doctorId, Guid attachmentId, int language)
|
||||
{
|
||||
var resumeList = await _attachmentrepository.Where(t => t.DoctorId == doctorId && t.Type == "Resume" && t.Language == language,true).ToListAsync();
|
||||
var resumeList = await _attachmentrepository.Where(t => t.DoctorId == doctorId && t.Type == "Resume" && t.Language == language, true).ToListAsync();
|
||||
foreach (var item in resumeList)
|
||||
{
|
||||
if (item.Id == attachmentId) item.IsOfficial = true;
|
||||
else item.IsOfficial = false;
|
||||
}
|
||||
|
||||
|
||||
return ResponseOutput.Result(await _attachmentrepository.SaveChangesAsync());
|
||||
}
|
||||
|
||||
@@ -231,11 +228,11 @@ namespace IRaCIS.Application.Services
|
||||
/// <param name="attachmentId"></param>
|
||||
/// <param name="language">0-未设置,1-中文,2-英文</param>
|
||||
/// <returns></returns>
|
||||
|
||||
|
||||
[HttpPost("{doctorId:guid}/{attachmentId:guid}/{language}")]
|
||||
public async Task<IResponseOutput> SetLanguage(Guid doctorId, Guid attachmentId, int language)
|
||||
{
|
||||
bool result =await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == attachmentId, a => new Attachment
|
||||
bool result = await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == attachmentId, a => new Attachment
|
||||
{
|
||||
Language = language,
|
||||
IsOfficial = false
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
public Guid DoctorId { get; set; }
|
||||
public string Type { get; set; } = string.Empty;
|
||||
public string Path { get; set; } = string.Empty;
|
||||
public string FullPath => Path;
|
||||
public string FullPath => Path;
|
||||
public string FileName { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
public Guid DoctorId { get; set; }
|
||||
public string Type { get; set; } = string.Empty;
|
||||
public string Path { get; set; } = string.Empty;
|
||||
public string FullPath => Path;
|
||||
public string FullPath => Path;
|
||||
|
||||
public string FileName { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class DoctorAccountRegisterModel : DoctorAccountLoginDTO
|
||||
{
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Newtonsoft.Json;
|
||||
using System.Linq;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
@@ -141,9 +136,9 @@ namespace IRaCIS.Application.Contracts
|
||||
public List<Guid> TitleIdList { get; set; } = new List<Guid>();
|
||||
public Guid? DepartmentId { get; set; }
|
||||
public Guid? SpecialityId { get; set; }
|
||||
public Guid? PositionId { get; set; }
|
||||
public Guid? PositionId { get; set; }
|
||||
public Guid? RankId { get; set; }
|
||||
public Guid? HospitalId { get; set; }
|
||||
public Guid? HospitalId { get; set; }
|
||||
|
||||
//合作状态
|
||||
public ContractorStatusEnum? ContractorStatus { get; set; }
|
||||
@@ -203,7 +198,7 @@ namespace IRaCIS.Application.Contracts
|
||||
|
||||
public class ConfirmationReviewerDTO : DoctorOptDTO
|
||||
{
|
||||
public int DoctorTrialState { get; set; }
|
||||
public int DoctorTrialState { get; set; }
|
||||
public string OptUserName { get; set; } = string.Empty;
|
||||
public DateTime? OptTime { get; set; }
|
||||
public string? OptTimeStr => OptTime?.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
@@ -308,7 +303,7 @@ namespace IRaCIS.Application.Contracts
|
||||
|
||||
public class DoctorBasicInfoCommand : DoctorBasicInfo
|
||||
{
|
||||
|
||||
|
||||
//职称
|
||||
public List<Guid> TitleIds { get; set; } = new List<Guid>();
|
||||
}
|
||||
@@ -342,11 +337,11 @@ namespace IRaCIS.Application.Contracts
|
||||
|
||||
//职称
|
||||
public List<Guid> TitleIds => DoctorDicViewDtos.Select(t => t.Id).ToList();
|
||||
|
||||
public List<string> TitleList=> DoctorDicViewDtos.Select(t => t.Value).ToList();
|
||||
|
||||
public List<string> TitleCNList=> DoctorDicViewDtos.Select(t => t.ValueCN).ToList();
|
||||
|
||||
|
||||
public List<string> TitleList => DoctorDicViewDtos.Select(t => t.Value).ToList();
|
||||
|
||||
public List<string> TitleCNList => DoctorDicViewDtos.Select(t => t.ValueCN).ToList();
|
||||
|
||||
#region ef select
|
||||
//[JsonIgnore]
|
||||
//public List<TempObj> TempObjList { get; set; }
|
||||
@@ -403,7 +398,7 @@ namespace IRaCIS.Application.Contracts
|
||||
public string FileName { get; set; } = string.Empty;
|
||||
public string TrialCode { get; set; } = string.Empty;
|
||||
public string FilePath { get; set; } = string.Empty;
|
||||
public string FullPath { get { return FilePath; } }
|
||||
public string FullPath { get { return FilePath; } }
|
||||
public DateTime CreateTime { get; set; }
|
||||
}
|
||||
|
||||
@@ -784,12 +779,12 @@ namespace IRaCIS.Application.Contracts
|
||||
public DateTime CreateTime { get; set; }
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class GetDoctorCriterionFileInDto
|
||||
public class GetDoctorCriterionFileInDto
|
||||
{
|
||||
public Guid DoctorId { get; set; }
|
||||
public Guid DoctorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文件类型
|
||||
@@ -828,7 +823,7 @@ namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public string KeyWord { get; set; } = String.Empty;
|
||||
|
||||
public Guid? CroId { get; set; }
|
||||
public Guid? CroId { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class EducationCommand
|
||||
{
|
||||
@@ -28,7 +25,7 @@ namespace IRaCIS.Application.Contracts
|
||||
public class EducationInfoViewModel : EducationCommand
|
||||
{
|
||||
public DateTime? CreateTime { get; set; }
|
||||
public string BeginDateStr => BeginDate.ToString("yyyy-MM");
|
||||
public string BeginDateStr => BeginDate.ToString("yyyy-MM");
|
||||
public string EndDateStr => EndDate.ToString("yyyy-MM");
|
||||
|
||||
}
|
||||
@@ -36,9 +33,9 @@ namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public Guid? Id { get; set; }
|
||||
public Guid DoctorId { get; set; }
|
||||
|
||||
|
||||
public DateTime BeginDate { get; set; }
|
||||
|
||||
|
||||
public DateTime EndDate { get; set; }
|
||||
|
||||
public string Training { get; set; } = String.Empty;
|
||||
@@ -72,7 +69,7 @@ namespace IRaCIS.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
public class PostgraduateViewModel: PostgraduateCommand
|
||||
public class PostgraduateViewModel : PostgraduateCommand
|
||||
{
|
||||
public DateTime? CreateTime { get; set; }
|
||||
public string BeginDateStr => BeginDate.ToString("yyyy-MM");
|
||||
@@ -81,9 +78,9 @@ namespace IRaCIS.Application.Contracts
|
||||
}
|
||||
public class DoctorEducationExperienceDTO
|
||||
{
|
||||
public IEnumerable<EducationInfoViewModel> EducationList=new List<EducationInfoViewModel>();
|
||||
public IEnumerable<EducationInfoViewModel> EducationList = new List<EducationInfoViewModel>();
|
||||
|
||||
public IEnumerable<PostgraduateViewModel> PostgraduateList = new List<PostgraduateViewModel>();
|
||||
public IEnumerable<PostgraduateViewModel> PostgraduateList = new List<PostgraduateViewModel>();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class VacationCommand
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class ResearchPublicationDTO
|
||||
{
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
}
|
||||
|
||||
public class TrialExperienceListDTO: TrialExperienceCommand
|
||||
public class TrialExperienceListDTO : TrialExperienceCommand
|
||||
{
|
||||
public string Phase { get; set; } = String.Empty;
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
|
||||
public Guid? GCPId { get; set; }
|
||||
|
||||
public string OtherClinicalExperience { get; set; }=String.Empty;
|
||||
public string OtherClinicalExperience { get; set; } = String.Empty;
|
||||
public string OtherClinicalExperienceCN { get; set; } = String.Empty;
|
||||
|
||||
public string Type { get; set; } = string.Empty;
|
||||
@@ -74,7 +74,7 @@
|
||||
public Guid Id { get; set; }
|
||||
public int GCP { get; set; }
|
||||
|
||||
public Guid? GCPId { get; set; }
|
||||
public Guid? GCPId { get; set; }
|
||||
}
|
||||
|
||||
public class ClinicalExperienceCommand
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Linq.Dynamic.Core;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Linq.Dynamic.Core;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class DoctorListService (
|
||||
public class DoctorListService(
|
||||
IRepository<Doctor> _doctorRepository,
|
||||
IRepository<Enroll> _enrollRepository,
|
||||
IRepository<EnrollDetail> _enrollDetailRepository,
|
||||
IRepository<Trial> _trialRepository) : BaseService, IDoctorListQueryService
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Reviewer列表分页查询
|
||||
@@ -66,7 +65,7 @@ namespace IRaCIS.Application.Services
|
||||
ReviewerSelectionQueryDTO inQuery)
|
||||
{
|
||||
//项目配置需要的医生过滤 2表示混合
|
||||
var trialConfig = await _trialRepository.Where(s => s.Id == inQuery.TrialId).Select(t=>new { t.AttendedReviewerTypeEnumList ,t.TrialType} ).FirstOrDefaultAsync().IfNullThrowException();
|
||||
var trialConfig = await _trialRepository.Where(s => s.Id == inQuery.TrialId).Select(t => new { t.AttendedReviewerTypeEnumList, t.TrialType }).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
//var nation = trialConfig.AttendedReviewerType;
|
||||
// 临床项目经验 多选
|
||||
@@ -78,15 +77,15 @@ namespace IRaCIS.Application.Services
|
||||
var guidList = inQuery.ReadingTypeIdList.Concat(inQuery.SubspecialityIdList).Concat(inQuery.TitleIdList);
|
||||
|
||||
var query = _doctorRepository/*.WhereIf(nation != AttendedReviewerType.USAndCN, t => t.Nation ==(int) nation)*/
|
||||
|
||||
|
||||
.WhereIf(inQuery.DepartmentId != null, t => t.DepartmentId == inQuery.DepartmentId)
|
||||
.WhereIf(inQuery.SpecialityId != null, t => t.SpecialityId == inQuery.SpecialityId)
|
||||
.WhereIf(trialConfig.TrialType == TrialType.NoneOfficial, t => t.IsVirtual ==true)
|
||||
.WhereIf(trialConfig.TrialType == TrialType.NoneOfficial, t => t.IsVirtual == true)
|
||||
.WhereIf(trialConfig.TrialType != TrialType.NoneOfficial, t => t.IsVirtual == false)
|
||||
.WhereIf(inQuery.HospitalId != null, t => t.HospitalId == inQuery.HospitalId)
|
||||
.WhereIf(inQuery.PositionId != null, t => t.PositionId == inQuery.PositionId)
|
||||
.WhereIf(inQuery.RankId != null, t => t.RankId == inQuery.RankId)
|
||||
.WhereIf(inQuery.ContractorStatus != null, t => t.CooperateStatus == inQuery.ContractorStatus )
|
||||
.WhereIf(inQuery.ContractorStatus != null, t => t.CooperateStatus == inQuery.ContractorStatus)
|
||||
.WhereIf(inQuery.InformationConfirmed != null, t => t.ResumeStatus == inQuery.InformationConfirmed)
|
||||
.WhereIf(inQuery.AcceptingNewTrial != null, t => t.AcceptingNewTrial == inQuery.AcceptingNewTrial)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.ChineseName.Contains(inQuery.Name) || (t.LastName + t.FirstName).Contains(inQuery.Name))
|
||||
@@ -101,7 +100,7 @@ namespace IRaCIS.Application.Services
|
||||
var result = await query.ToPagedListAsync(inQuery);
|
||||
|
||||
//是否已申请 申请时间 申请人
|
||||
var doctorStateList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus == EnrollStatus.HasApplyDownloadResume)
|
||||
var doctorStateList = await _enrollDetailRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus == EnrollStatus.HasApplyDownloadResume)
|
||||
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
result.CurrentPageData.ToList().ForEach(doctor =>
|
||||
@@ -150,7 +149,7 @@ namespace IRaCIS.Application.Services
|
||||
.ProjectTo<DoctorStateModelDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
doctorPageList.CurrentPageData.ToList().ForEach(u =>
|
||||
{
|
||||
@@ -181,7 +180,7 @@ namespace IRaCIS.Application.Services
|
||||
var opt = enrollCommitList.FirstOrDefault(t => t.DoctorId == u.Id);
|
||||
if (opt != null)
|
||||
{
|
||||
|
||||
|
||||
u.SubmmitTime = opt.OptTime;
|
||||
u.SubmmitUserName = opt.OptUserName;
|
||||
}
|
||||
@@ -240,7 +239,7 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
|
||||
|
||||
var doctorQuery = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
|
||||
var doctorQuery = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.InviteIntoGroup)
|
||||
.ProjectTo<ConfirmationReviewerDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
var doctorPageList = await doctorQuery.ToPagedListAsync(inQuery);
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Linq.Expressions;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class DoctorService(
|
||||
@@ -20,7 +18,7 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<TrialPaymentPrice> _trialExtRepository
|
||||
) : BaseService, IDoctorService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -36,7 +34,7 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
Expression<Func<Doctor, bool>> verifyExp = t => t.Phone == basicInfoModel.Phone || t.EMail == basicInfoModel.EMail;
|
||||
|
||||
//---current phone or email number already existed
|
||||
//---current phone or email number already existed
|
||||
var verifyPair = new KeyValuePair<Expression<Func<Doctor, bool>>, string>(verifyExp, _localizer["Doctor_DupPhoneOrEmail"]);
|
||||
|
||||
if (basicInfoModel.Id == Guid.Empty || basicInfoModel.Id == null)
|
||||
@@ -47,13 +45,13 @@ namespace IRaCIS.Application.Services
|
||||
//验证用户手机号
|
||||
if (await _doctorRepository.AnyAsync(t => t.Phone == doctor.Phone))
|
||||
{
|
||||
//---The current phone number already existed!
|
||||
//---The current phone number already existed!
|
||||
return ResponseOutput.NotOk(_localizer["Doctor_DupPhone"], new DoctorBasicInfoCommand());
|
||||
}
|
||||
|
||||
if (await _doctorRepository.AnyAsync(t => t.EMail == doctor.EMail))
|
||||
{
|
||||
//---The current email already existed!
|
||||
//---The current email already existed!
|
||||
return ResponseOutput.NotOk(_localizer["Doctor_DupEmail"], new DoctorBasicInfoCommand());
|
||||
}
|
||||
|
||||
@@ -84,13 +82,13 @@ namespace IRaCIS.Application.Services
|
||||
var phone = updateModel.Phone.Trim();
|
||||
if ((await _doctorRepository.FirstOrDefaultAsync(t => t.Phone == phone && t.Id != updateModel.Id)) != null)
|
||||
{
|
||||
//---The current phone number already existed!
|
||||
//---The current phone number already existed!
|
||||
return ResponseOutput.NotOk(_localizer["Doctor_DupPhone"], new DoctorBasicInfoCommand());
|
||||
}
|
||||
var email = updateModel.EMail.Trim();
|
||||
if (await _doctorRepository.AnyAsync(t => t.EMail == email && t.Id != updateModel.Id))
|
||||
{
|
||||
//---The current email already existed!
|
||||
//---The current email already existed!
|
||||
return ResponseOutput.NotOk(_localizer["Doctor_DupEmail"], new DoctorBasicInfoCommand());
|
||||
}
|
||||
|
||||
@@ -461,7 +459,7 @@ namespace IRaCIS.Application.Services
|
||||
public async Task<IResponseOutput> AddDoctorCriterionFile(AddDoctorCriterionFileDto inDto)
|
||||
{
|
||||
|
||||
if (await _doctorCriterionFileRepository.AnyAsync(x => inDto.IsEnable && x.DoctorId == inDto.DoctorId && x.FileType == inDto.FileType && x.TrialId==inDto.TrialId &&x.TrialReadingCriterionId==inDto.TrialReadingCriterionId && x.IsEnable && x.CriterionType == inDto.CriterionType && x.Id != inDto.Id))
|
||||
if (await _doctorCriterionFileRepository.AnyAsync(x => inDto.IsEnable && x.DoctorId == inDto.DoctorId && x.FileType == inDto.FileType && x.TrialId == inDto.TrialId && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId && x.IsEnable && x.CriterionType == inDto.CriterionType && x.Id != inDto.Id))
|
||||
{
|
||||
//-----------当前标准已添加过此类型文件
|
||||
throw new BusinessValidationFailedException(_localizer["Doctor_StandardDuplicateFileTypeError"]);
|
||||
|
||||
@@ -1,20 +1,17 @@
|
||||
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class EducationService(
|
||||
IRepository<Postgraduate> _postgraduateRepository,
|
||||
IRepository<Education> _educationRepository) : BaseService, IEducationService
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 根据医生Id获取医生教育经历和继续学习经历列表
|
||||
/// </summary>
|
||||
@@ -81,7 +78,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
[HttpDelete, Route("{doctorId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteEducationInfo(Guid id)
|
||||
{
|
||||
@@ -90,7 +87,7 @@ namespace IRaCIS.Application.Services
|
||||
return ResponseOutput.Result(success);
|
||||
}
|
||||
/// <summary> 添加/更新医生继续学习经历</summary>
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> AddOrUpdatePostgraduateInfo(PostgraduateCommand postgraduateViewModel)
|
||||
{
|
||||
@@ -114,7 +111,7 @@ namespace IRaCIS.Application.Services
|
||||
//}
|
||||
#endregion
|
||||
|
||||
var entity = await _postgraduateRepository.InsertOrUpdateAsync(postgraduateViewModel, true);
|
||||
var entity = await _postgraduateRepository.InsertOrUpdateAsync(postgraduateViewModel, true);
|
||||
return ResponseOutput.Ok(entity.Id);
|
||||
}
|
||||
/// <summary>
|
||||
@@ -122,7 +119,7 @@ namespace IRaCIS.Application.Services
|
||||
/// </summary>
|
||||
/// <param name="doctorId">医生Id</param>
|
||||
/// <returns></returns>
|
||||
|
||||
|
||||
[HttpDelete("{doctorId:guid}")]
|
||||
public async Task<IResponseOutput> DeletePostgraduateInfo(Guid doctorId)
|
||||
{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
@@ -12,7 +7,7 @@ namespace IRaCIS.Application.Interfaces
|
||||
Task<IEnumerable<AttachmentDTO>> SaveAttachments(IEnumerable<AttachmentDTO> attachmentList);
|
||||
|
||||
|
||||
Task<IResponseOutput<AttachmentDTO>> AddAttachment(AttachmentDTO attachment);
|
||||
Task<IResponseOutput<AttachmentDTO>> AddAttachment(AttachmentDTO attachment);
|
||||
Task<IResponseOutput> DeleteAttachment(AttachementCommand param);
|
||||
Task<AttachmentDTO> GetDetailById(Guid attachmentId);
|
||||
Task<IEnumerable<AttachmentDTO>> GetAttachmentByType(Guid doctorId, string type);
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace IRaCIS.Application.Interfaces
|
||||
/// <summary>
|
||||
/// 医生多条件查询
|
||||
/// </summary>
|
||||
Task<PageOutput<DoctorDTO>> GetDoctorSearchList(DoctorSearchDTO param);
|
||||
Task<PageOutput<DoctorDTO>> GetDoctorSearchList(DoctorSearchDTO param);
|
||||
|
||||
/// <summary>
|
||||
/// 筛选医生列表
|
||||
@@ -15,18 +15,18 @@ namespace IRaCIS.Application.Interfaces
|
||||
/// <param name="doctorSearchModel"></param>
|
||||
/// <returns></returns>
|
||||
//
|
||||
Task<PageOutput<SelectionReviewerDTO>> GetSelectionReviewerList(
|
||||
ReviewerSelectionQueryDTO doctorSearchModel);
|
||||
Task<PageOutput<SelectionReviewerDTO>> GetSelectionReviewerList(
|
||||
ReviewerSelectionQueryDTO doctorSearchModel);
|
||||
|
||||
/// <summary>
|
||||
/// //入组 相关接口 (提交CRO-1) CRO确认-4
|
||||
/// </summary>
|
||||
Task<PageOutput<ConfirmationReviewerDTO>> GetSubmissionOrApprovalReviewerList(
|
||||
ReviewerSubmissionQueryDTO doctorIntoGroupSearchModel);
|
||||
Task<PageOutput<ConfirmationReviewerDTO>> GetSubmissionOrApprovalReviewerList(
|
||||
ReviewerSubmissionQueryDTO doctorIntoGroupSearchModel);
|
||||
|
||||
|
||||
//医生确认状态列表
|
||||
Task<PageOutput<ConfirmationReviewerDTO>> GetConfirmationReviewerList(
|
||||
ReviewerConfirmationQueryDTO trialIdPageModel);
|
||||
Task<PageOutput<ConfirmationReviewerDTO>> GetConfirmationReviewerList(
|
||||
ReviewerConfirmationQueryDTO trialIdPageModel);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
@@ -21,7 +18,7 @@ namespace IRaCIS.Application.Interfaces
|
||||
/// </summary>
|
||||
/// <param name="addBasicInfoParam"></param>
|
||||
/// <returns></returns>
|
||||
Task<IResponseOutput<DoctorBasicInfoCommand>> AddOrUpdateDoctorBasicInfo(DoctorBasicInfoCommand addBasicInfoParam);
|
||||
Task<IResponseOutput<DoctorBasicInfoCommand>> AddOrUpdateDoctorBasicInfo(DoctorBasicInfoCommand addBasicInfoParam);
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
@@ -12,7 +7,7 @@ namespace IRaCIS.Application.Interfaces
|
||||
Task<IResponseOutput> AddOrUpdateVacation(VacationCommand vacationViewModel);
|
||||
Task<IResponseOutput> DeleteVacation(Guid id);
|
||||
Task<PageOutput<VacationCommand>> GetVacationList(Guid doctorId, int pageIndex, int pageSize);
|
||||
|
||||
|
||||
/// <summary> 判断当前时间是否在休假 </summary>
|
||||
Task<IResponseOutput> OnVacation(Guid reviewerId);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class ResearchPublicationService(IRepository<ResearchPublication> _researchPublicationRepository) : BaseService, IResearchPublicationService
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 查询-医生科学研究信息
|
||||
@@ -23,7 +23,7 @@ namespace IRaCIS.Application.Services
|
||||
return doctorScientificResearchInfo!;
|
||||
}
|
||||
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> AddOrUpdateResearchPublication(ResearchPublicationDTO param)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class TrialExperienceService(
|
||||
@@ -12,7 +12,7 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<Attachment> _attachmentRepository
|
||||
) : BaseService, ITrialExperienceService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -40,7 +40,7 @@ namespace IRaCIS.Application.Services
|
||||
trialExperience.ExpiryDateStr = attachment.ExpiryDate == null ? "" : attachment.ExpiryDate.Value.ToString("yyyy-MM-dd HH:mm");
|
||||
|
||||
trialExperience.Path = attachment.Path;
|
||||
trialExperience.GCPFullPath = attachment.Path + "?access_token=" + _userInfo.UserToken;
|
||||
trialExperience.GCPFullPath = attachment.Path + "?access_token=" + _userInfo.UserToken;
|
||||
trialExperience.Type = attachment.Type;
|
||||
trialExperience.FileName = attachment.FileName;
|
||||
trialExperience.GCPId = attachment.Id;
|
||||
@@ -56,10 +56,10 @@ namespace IRaCIS.Application.Services
|
||||
.ProjectTo<TrialExperienceListDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
return doctorClinicalTrialExperienceList;
|
||||
|
||||
|
||||
}
|
||||
/// <summary> 添加或更新医生临床经验列表项</summary>
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> AddOrUpdateTrialExperience(TrialExperienceCommand trialExperienceViewModel)
|
||||
{
|
||||
@@ -114,7 +114,7 @@ namespace IRaCIS.Application.Services
|
||||
/// <summary>
|
||||
/// 删除临床经验
|
||||
/// </summary>
|
||||
|
||||
|
||||
[HttpDelete, Route("{doctorId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteTrialExperience(Guid doctorId)
|
||||
{
|
||||
@@ -126,7 +126,7 @@ namespace IRaCIS.Application.Services
|
||||
/// </summary>
|
||||
/// <param name="updateGCPExperienceParam"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> UpdateGcpExperience(GCPExperienceCommand updateGCPExperienceParam)
|
||||
{
|
||||
@@ -135,12 +135,12 @@ namespace IRaCIS.Application.Services
|
||||
var successs = await _doctorRepository.BatchUpdateNoTrackingAsync(o => o.Id == updateGCPExperienceParam.Id, u => new Doctor()
|
||||
{
|
||||
GCP = updateGCPExperienceParam.GCP,
|
||||
GCPId = (updateGCPExperienceParam.GCP==0||updateGCPExperienceParam.GCPId==null)?Guid.Empty: updateGCPExperienceParam.GCPId!.Value
|
||||
GCPId = (updateGCPExperienceParam.GCP == 0 || updateGCPExperienceParam.GCPId == null) ? Guid.Empty : updateGCPExperienceParam.GCPId!.Value
|
||||
});
|
||||
|
||||
if (updateGCPExperienceParam.GCP == 0 )
|
||||
if (updateGCPExperienceParam.GCP == 0)
|
||||
{
|
||||
await _attachmentRepository.BatchDeleteNoTrackingAsync(a => a.DoctorId == updateGCPExperienceParam.Id && a.Type=="GCP");
|
||||
await _attachmentRepository.BatchDeleteNoTrackingAsync(a => a.DoctorId == updateGCPExperienceParam.Id && a.Type == "GCP");
|
||||
}
|
||||
|
||||
return ResponseOutput.Result(successs, updateGCPExperienceParam.GCPId.ToString());
|
||||
@@ -150,7 +150,7 @@ namespace IRaCIS.Application.Services
|
||||
/// <summary>
|
||||
/// 更新其他技能经验
|
||||
/// </summary>
|
||||
|
||||
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> UpdateOtherExperience(ClinicalExperienceCommand updateOtherClinicalExperience)
|
||||
{
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class VacationService (IRepository<Vacation> _vacationRepository) : BaseService, IVacationService
|
||||
[ApiExplorerSettings(GroupName = "Reviewer")]
|
||||
public class VacationService(IRepository<Vacation> _vacationRepository) : BaseService, IVacationService
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 添加休假时间段
|
||||
/// </summary>
|
||||
@@ -19,7 +18,7 @@ namespace IRaCIS.Application.Services
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> AddOrUpdateVacation(VacationCommand param)
|
||||
{
|
||||
if (param.Id == Guid.Empty|| param.Id ==null)
|
||||
if (param.Id == Guid.Empty || param.Id == null)
|
||||
{
|
||||
var result = await _vacationRepository.AddAsync(_mapper.Map<Vacation>(param));
|
||||
|
||||
@@ -47,7 +46,7 @@ namespace IRaCIS.Application.Services
|
||||
/// </summary>
|
||||
/// <param name="holidayId">记录Id</param>
|
||||
/// <returns></returns>
|
||||
|
||||
|
||||
[HttpDelete("{holidayId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteVacation(Guid holidayId)
|
||||
{
|
||||
@@ -67,8 +66,8 @@ namespace IRaCIS.Application.Services
|
||||
var query = _vacationRepository.Where(u => u.DoctorId == doctorId)
|
||||
.ProjectTo<VacationCommand>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await query.ToPagedListAsync(new PageInput() { PageIndex = pageIndex,PageSize=pageSize },nameof(VacationCommand.StartDate));
|
||||
|
||||
return await query.ToPagedListAsync(new PageInput() { PageIndex = pageIndex, PageSize = pageSize }, nameof(VacationCommand.StartDate));
|
||||
|
||||
}
|
||||
|
||||
[NonDynamicMethod]
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using AutoMapper.EquivalencyExpression;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts.Pay;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
@@ -84,7 +83,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
CreateMap<Doctor, SelectionReviewerDTO>()
|
||||
.ForMember(d => d.DoctorUserName, u => u.MapFrom(t => t.User.UserName));
|
||||
CreateMap<Doctor, DoctorDTO>().IncludeMembers(t => t.Hospital).Include<Doctor, SelectionReviewerDTO>()
|
||||
.ForMember(d => d.AccountUserName, u => u.MapFrom(s => s.EnrollList.Where(t=>t.DoctorUserId!=null).Select(c=>c.DoctorUser.UserName).FirstOrDefault()))
|
||||
.ForMember(d => d.AccountUserName, u => u.MapFrom(s => s.EnrollList.Where(t => t.DoctorUserId != null).Select(c => c.DoctorUser.UserName).FirstOrDefault()))
|
||||
.ForMember(d => d.Department, u => u.MapFrom(s => s.Department.Value))
|
||||
.ForMember(d => d.DepartmentCN, u => u.MapFrom(s => s.Department.ValueCN))
|
||||
.ForMember(d => d.Position, u => u.MapFrom(s => s.Position.Value))
|
||||
@@ -118,7 +117,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
CreateMap<Doctor, DoctorBasicInfoDTO>()
|
||||
.ForMember(o => o.DoctorDicViewDtos, t => t.MapFrom(u => u.DoctorDicRelationList.Where(t => t.KeyName == StaticData.Title).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder)));
|
||||
CreateMap<Dictionary, DicView>()
|
||||
.ForMember(t=>t.ParentCode,u=>u.MapFrom(c=>c.Parent.Code));
|
||||
.ForMember(t => t.ParentCode, u => u.MapFrom(c => c.Parent.Code));
|
||||
//CreateMap<DoctorDictionary, DicView>();
|
||||
|
||||
CreateMap<Doctor, SpecialtyDTO>()
|
||||
@@ -155,8 +154,8 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
// 生成时间 2022-01-05 09:17:10
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
@@ -18,9 +14,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public DateTime CreateTime { get; set; }
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
public string FileType { get; set; } = string.Empty;
|
||||
public string FileType { get; set; } = string.Empty;
|
||||
|
||||
public List<NeedConfirmedUserTypeView> NeedConfirmedUserTypeList { get; set; }=new List<NeedConfirmedUserTypeView>();
|
||||
public List<NeedConfirmedUserTypeView> NeedConfirmedUserTypeList { get; set; } = new List<NeedConfirmedUserTypeView>();
|
||||
}
|
||||
|
||||
public class UnionDocumentView : SystemDocumentAddOrEdit
|
||||
@@ -31,11 +27,11 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public bool IsSystemDoc { get; set; }
|
||||
|
||||
public string FileType { get; set; } = string.Empty;
|
||||
public string FileType { get; set; } = string.Empty;
|
||||
|
||||
}
|
||||
|
||||
public class TrialSignDocView:UnionDocumentWithConfirmInfoView
|
||||
public class TrialSignDocView : UnionDocumentWithConfirmInfoView
|
||||
{
|
||||
public string TrialCode { get; set; }
|
||||
public string ResearchProgramNo { get; set; }
|
||||
@@ -45,9 +41,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
public class UnionDocumentWithConfirmInfoView: UnionDocumentView
|
||||
public class UnionDocumentWithConfirmInfoView : UnionDocumentView
|
||||
{
|
||||
|
||||
|
||||
|
||||
public DateTime? ConfirmTime { get; set; }
|
||||
|
||||
@@ -60,7 +56,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public string RealName { get; set; } = string.Empty;
|
||||
|
||||
|
||||
public Guid UserTypeId { get; set; }
|
||||
public Guid UserTypeId { get; set; }
|
||||
public string UserTypeShortName { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
@@ -73,7 +69,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public string RealName { get; set; } = string.Empty;
|
||||
}
|
||||
|
||||
public class DocumentUnionWithUserStatView: UnionDocumentView
|
||||
public class DocumentUnionWithUserStatView : UnionDocumentView
|
||||
{
|
||||
public int? DocumentUserCount { get; set; }
|
||||
public int? DocumentConfirmedUserCount { get; set; }
|
||||
@@ -97,7 +93,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -131,7 +127,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public Guid? FileTypeId { get; set; }
|
||||
|
||||
public string TrialCode { get; set;} = string.Empty;
|
||||
public string TrialCode { get; set; } = string.Empty;
|
||||
|
||||
|
||||
public string Name { get; set; } = string.Empty;
|
||||
@@ -140,7 +136,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
}
|
||||
|
||||
public class TrialUserDocUnionQuery: PageInput
|
||||
public class TrialUserDocUnionQuery : PageInput
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
@@ -156,7 +152,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public class UserConfirmCommand
|
||||
{
|
||||
|
||||
|
||||
[NotDefault]
|
||||
public Guid DocumentId { get; set; }
|
||||
|
||||
@@ -168,14 +164,14 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public class DocumentTrialUnionQuery : TrialUserDocUnionQuery
|
||||
{
|
||||
|
||||
|
||||
public Guid? UserTypeId { get; set; }
|
||||
public Guid? UserId { get; set; }
|
||||
|
||||
public bool? IsConfirmed { get; set; }
|
||||
public bool? IsConfirmed { get; set; }
|
||||
|
||||
public bool? IsDeleted { get; set; }
|
||||
}
|
||||
public bool? IsDeleted { get; set; }
|
||||
}
|
||||
|
||||
///<summary> SystemDocumentAddOrEdit 列表查询参数模型</summary>
|
||||
public class SystemDocumentAddOrEdit
|
||||
@@ -194,7 +190,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public class AddOrEditSystemDocument : SystemDocumentAddOrEdit
|
||||
{
|
||||
|
||||
public List<Guid> NeedConfirmedUserTypeIdList { get; set; }=new List<Guid>();
|
||||
public List<Guid> NeedConfirmedUserTypeIdList { get; set; } = new List<Guid>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
// 生成时间 2022-01-05 09:17:10
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
/// <summary> TrialDocumentUserConfirmView 列表视图模型 </summary>
|
||||
@@ -28,7 +26,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class NeedConfirmedUserTypeView
|
||||
@@ -39,7 +37,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
@@ -14,7 +13,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
public string FullFilePath { get; set; } = String.Empty;
|
||||
|
||||
public bool IsSomeUserSigned{get;set;}
|
||||
public bool IsSomeUserSigned { get; set; }
|
||||
|
||||
public DateTime CreateTime { get; set; }
|
||||
public Guid CreateUserId { get; set; }
|
||||
@@ -33,8 +32,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
///<summary>TrialDocumentQuery 列表查询参数模型</summary>
|
||||
public class TrialDocumentQuery : PageInput
|
||||
{
|
||||
public bool? IsDeleted { get; set; }
|
||||
public Guid? FileTypeId { get; set; }
|
||||
public bool? IsDeleted { get; set; }
|
||||
public Guid? FileTypeId { get; set; }
|
||||
|
||||
public Guid? UserTypeId { get; set; }
|
||||
|
||||
@@ -63,7 +62,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
}
|
||||
|
||||
public class AddOrEditTrialDocument: TrialDocumentAddOrEdit
|
||||
public class AddOrEditTrialDocument : TrialDocumentAddOrEdit
|
||||
{
|
||||
|
||||
public List<Guid> NeedConfirmedUserTypeIdList { get; set; } = new List<Guid>();
|
||||
@@ -71,7 +70,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,11 +3,8 @@
|
||||
// 生成时间 2022-10-20 11:52:31
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace IRaCIS.Core.Application.ViewModel
|
||||
{
|
||||
|
||||
@@ -1,24 +1,7 @@
|
||||
using DocumentFormat.OpenXml.EMMA;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using MailKit;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.VisualBasic;
|
||||
using MimeKit;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.Mail;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static IRaCIS.Core.Domain.Share.StaticData;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -31,7 +14,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
Task SendTrialQCQuestionEmailAsync(Guid trialId);
|
||||
Task SendTrialImageQuestionAsync(Guid trialId);
|
||||
|
||||
Task<(TrialEmailNoticeConfig?, SMTPEmailConfig?)> BuildEmailConfig(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc, Guid? siteId = null, Guid? trialReadingCriterionId = null);
|
||||
Task<(TrialEmailNoticeConfig?, SMTPEmailConfig?)> BuildEmailConfig(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc, Guid? siteId = null, Guid? trialReadingCriterionId = null);
|
||||
}
|
||||
|
||||
public class EmailSendService(
|
||||
@@ -42,9 +25,9 @@ namespace IRaCIS.Core.Application.Service
|
||||
IRepository<TrialSiteUser> _trialSiteUserRepository,
|
||||
IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : BaseService, IEmailSendService
|
||||
{
|
||||
|
||||
|
||||
public static string EmailNamePlaceholder => StaticData. EmailSend.EmailNamePlaceholder;
|
||||
|
||||
public static string EmailNamePlaceholder => StaticData.EmailSend.EmailNamePlaceholder;
|
||||
|
||||
|
||||
|
||||
@@ -87,30 +70,30 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
if (isEnrollment == true)
|
||||
{
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode);
|
||||
|
||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||
EmailNamePlaceholder, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, resultStr);
|
||||
|
||||
|
||||
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||
|
||||
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId);
|
||||
}
|
||||
else
|
||||
{
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName);
|
||||
|
||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||
EmailNamePlaceholder, taskInfo.ResearchProgramNo, taskInfo.SubjectCode, taskInfo.VisitName, resultStr);
|
||||
|
||||
|
||||
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||
|
||||
return (topicStr, htmlBodyStr, isEn_us, null);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId);
|
||||
@@ -127,7 +110,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
public async Task SendTrialImageQCTaskEmailAsync(Guid trialId)
|
||||
{
|
||||
var isEn_us = false;
|
||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
||||
|
||||
//找到 该项目的IQC 用户Id
|
||||
var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||
@@ -158,12 +141,12 @@ namespace IRaCIS.Core.Application.Service
|
||||
if (sendStat != null && (sendStat.ToBeClaimedCount > 0 || sendStat.ToBeReviewedCount > 0))
|
||||
{
|
||||
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo);
|
||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||
user.FullName, DateTime.Now, sendStat.ToBeClaimedCount, sendStat.ToBeReviewedCount, _SystemEmailSendConfig.CurrentValue.SiteUrl);
|
||||
|
||||
|
||||
return (topicStr, htmlBodyStr, false, userId);
|
||||
};
|
||||
|
||||
@@ -180,7 +163,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
public async Task SendTrialQCQuestionEmailAsync(Guid trialId)
|
||||
{
|
||||
var isEn_us = false;
|
||||
var trialInfo =await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync();
|
||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync();
|
||||
|
||||
//找到 该项目的IQC 用户Id
|
||||
var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||
@@ -210,15 +193,15 @@ namespace IRaCIS.Core.Application.Service
|
||||
if (sendStat != null && (sendStat.ToBeDealedCount > 0 || sendStat.ReUploadTobeDealedCount > 0))
|
||||
{
|
||||
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo);
|
||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||
|
||||
user.FullName, DateTime.Now, sendStat.ToBeDealedCount - sendStat.ReUploadTobeDealedCount, sendStat.ReUploadTobeDealedCount, _SystemEmailSendConfig.CurrentValue.SiteUrl);
|
||||
|
||||
|
||||
return (topicStr, htmlBodyStr, false, userId);
|
||||
|
||||
|
||||
return (topicStr, htmlBodyStr, false, userId);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(trialId, EmailBusinessScenario.QCQuestion, topicAndHtmlFunc);
|
||||
@@ -235,7 +218,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
var isEn_us = false;
|
||||
|
||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
||||
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
|
||||
|
||||
//找到 该项目的CRC 用户Id
|
||||
var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { t.UserId, t.User.FullName }).ToListAsync();
|
||||
@@ -262,13 +245,13 @@ namespace IRaCIS.Core.Application.Service
|
||||
if (sendStat != null && (sendStat.ToBeDealedCount > 0))
|
||||
{
|
||||
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc = trialEmailConfig =>
|
||||
{
|
||||
var topicStr = string.Format(isEn_us ? trialEmailConfig.EmailTopic : trialEmailConfig.EmailTopicCN, trialInfo.ResearchProgramNo);
|
||||
var htmlBodyStr = string.Format(isEn_us ? trialEmailConfig.EmailHtmlContent : trialEmailConfig.EmailHtmlContentCN,
|
||||
user.FullName, DateTime.Now, sendStat.ToBeDealedCount, _SystemEmailSendConfig.CurrentValue.SiteUrl);
|
||||
|
||||
return (topicStr, htmlBodyStr, isEn_us, userId);
|
||||
|
||||
return (topicStr, htmlBodyStr, isEn_us, userId);
|
||||
};
|
||||
|
||||
await SendTrialEmailAsync(trialId, EmailBusinessScenario.ImageQuestion, topicAndHtmlFunc);
|
||||
@@ -279,34 +262,34 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
|
||||
|
||||
public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc, Guid? trialSiteId = null, Guid? trialReadingCriterionId = null, Func<TrialEmailNoticeConfig, SMTPEmailConfig, SMTPEmailConfig> emailAttachFunc=null)
|
||||
public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc, Guid? trialSiteId = null, Guid? trialReadingCriterionId = null, Func<TrialEmailNoticeConfig, SMTPEmailConfig, SMTPEmailConfig> emailAttachFunc = null)
|
||||
{
|
||||
var (trialEmailConfig, sendEmailConfig) = await BuildEmailConfig(trialId, businessScenario, topicAndHtmlFunc, trialSiteId, trialReadingCriterionId);
|
||||
var (trialEmailConfig, sendEmailConfig) = await BuildEmailConfig(trialId, businessScenario, topicAndHtmlFunc, trialSiteId, trialReadingCriterionId);
|
||||
|
||||
if (sendEmailConfig != null)
|
||||
{
|
||||
|
||||
|
||||
await SendEmailHelper.SendEmailAsync(sendEmailConfig);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<(TrialEmailNoticeConfig?, SMTPEmailConfig?)> BuildEmailConfig(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc, Guid? trialSiteId = null, Guid? trialReadingCriterionId = null)
|
||||
public async Task<(TrialEmailNoticeConfig?, SMTPEmailConfig?)> BuildEmailConfig(Guid trialId, EmailBusinessScenario businessScenario, Func<TrialEmailNoticeConfig, (string topicStr, string htmlBodyStr, bool isEn_us, Guid? onlyToUserId)> topicAndHtmlFunc, Guid? trialSiteId = null, Guid? trialReadingCriterionId = null)
|
||||
{
|
||||
//找到配置
|
||||
var trialEmailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.BusinessScenarioEnum == businessScenario, ignoreQueryFilters: true)
|
||||
.Include(t => t.TrialEmailNoticeUserList).Include(t => t.TrialEmailBlackUserList).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false || trialEmailConfig.IsEnable==false)
|
||||
if (trialEmailConfig == null || trialEmailConfig.IsAutoSend == false || trialEmailConfig.IsEnable == false)
|
||||
{
|
||||
return (null,null);
|
||||
return (null, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
var sendEmailConfig = new SMTPEmailConfig();
|
||||
|
||||
var (topicStr, htmlBodyStr, isEn_us, onlyToUserId) = topicAndHtmlFunc(trialEmailConfig);
|
||||
var (topicStr, htmlBodyStr, isEn_us, onlyToUserId) = topicAndHtmlFunc(trialEmailConfig);
|
||||
|
||||
|
||||
sendEmailConfig.TopicDescription = topicStr;
|
||||
@@ -422,7 +405,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
// });
|
||||
//}
|
||||
|
||||
return (trialEmailConfig,sendEmailConfig) ;
|
||||
return (trialEmailConfig, sendEmailConfig);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
// 生成时间 2022-01-05 09:17:00
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
/// <summary>
|
||||
@@ -30,5 +29,5 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,11 +4,6 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
public interface ITrialDocumentService
|
||||
|
||||
+14
-15
@@ -5,32 +5,31 @@
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Domain.Share.Common;
|
||||
|
||||
namespace IRaCIS.Core.Application.Interfaces
|
||||
{
|
||||
/// <summary>
|
||||
/// ITrialEmailNoticeConfigService
|
||||
/// </summary>
|
||||
public interface ITrialEmailNoticeConfigService
|
||||
{
|
||||
/// <summary>
|
||||
/// ITrialEmailNoticeConfigService
|
||||
/// </summary>
|
||||
public interface ITrialEmailNoticeConfigService
|
||||
{
|
||||
|
||||
|
||||
Task<List<TrialEmailNoticeConfigView>> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery);
|
||||
Task<List<TrialEmailNoticeConfigView>> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery);
|
||||
|
||||
Task<IResponseOutput> AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig);
|
||||
Task<IResponseOutput> AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig);
|
||||
|
||||
Task<IResponseOutput> DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId);
|
||||
Task<IResponseOutput> DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId);
|
||||
|
||||
Task<string> BaseBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isMedicalReviewAndSuggestApplyReReading = null, EmailStoreSendMode emailStoreMode = EmailStoreSendMode.StoreLocalSend, string sendFileRelativePath="");
|
||||
Task<string> BaseBusinessScenarioSendEmailAsync(Guid visitTaskId, bool? isMedicalReviewAndSuggestApplyReReading = null, EmailStoreSendMode emailStoreMode = EmailStoreSendMode.StoreLocalSend, string sendFileRelativePath = "");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class EmailStoreSendDto
|
||||
{
|
||||
public EmailStoreSendMode EmailStoreSendMode { get; set; } = EmailStoreSendMode.StoreLocalSend;
|
||||
public class EmailStoreSendDto
|
||||
{
|
||||
public EmailStoreSendMode EmailStoreSendMode { get; set; } = EmailStoreSendMode.StoreLocalSend;
|
||||
|
||||
public string SendFileRelativePath { get; set; }
|
||||
public string SendFileRelativePath { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,9 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using User = IRaCIS.Core.Domain.Models.User;
|
||||
using DocumentFormat.OpenXml.Office2010.Word;
|
||||
|
||||
namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
@@ -21,7 +20,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
IRepository<SystemDocConfirmedUser> _systemDocConfirmedUserRepository) : BaseService, ISystemDocumentService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -49,9 +48,9 @@ namespace IRaCIS.Core.Application.Services
|
||||
var entity = _mapper.Map<SystemDocument>(addOrEditSystemDocument);
|
||||
|
||||
|
||||
if (await _systemDocumentRepository.AnyAsync(t => t.FileTypeId == addOrEditSystemDocument.FileTypeId && t.Name == addOrEditSystemDocument.Name,true))
|
||||
if (await _systemDocumentRepository.AnyAsync(t => t.FileTypeId == addOrEditSystemDocument.FileTypeId && t.Name == addOrEditSystemDocument.Name, true))
|
||||
{
|
||||
//---系统中已存在同类型的同名文件。
|
||||
//---系统中已存在同类型的同名文件。
|
||||
return ResponseOutput.NotOk(_localizer["SystemD_DuplicateFile"]);
|
||||
}
|
||||
|
||||
@@ -67,10 +66,10 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
if (await _systemDocumentRepository.AnyAsync(t => t.FileTypeId == addOrEditSystemDocument.FileTypeId && t.Name == addOrEditSystemDocument.Name && t.Id != addOrEditSystemDocument.Id, true))
|
||||
{
|
||||
//---系统中已存在同类型的同名文件。
|
||||
//---系统中已存在同类型的同名文件。
|
||||
return ResponseOutput.NotOk(_localizer["SystemD_DuplicateFile"]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
_mapper.Map(addOrEditSystemDocument, document);
|
||||
|
||||
@@ -132,7 +131,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
return ResponseOutput.NotOk(_localizer["SystemD_CannotDeleteSignedFile"]);
|
||||
}
|
||||
|
||||
var success = await _systemDocumentRepository.DeleteFromQueryAsync(t => t.Id == systemDocumentId,true,true);
|
||||
var success = await _systemDocumentRepository.DeleteFromQueryAsync(t => t.Id == systemDocumentId, true, true);
|
||||
|
||||
return ResponseOutput.Result(true);
|
||||
}
|
||||
@@ -163,10 +162,10 @@ namespace IRaCIS.Core.Application.Services
|
||||
SignViewMinimumMinutes = sysDoc.SignViewMinimumMinutes,
|
||||
Name = sysDoc.Name,
|
||||
Path = sysDoc.Path,
|
||||
FileType = _userInfo.IsEn_Us? sysDoc.FileType.Value: sysDoc.FileType.ValueCN,
|
||||
FileType = _userInfo.IsEn_Us ? sysDoc.FileType.Value : sysDoc.FileType.ValueCN,
|
||||
UpdateTime = sysDoc.UpdateTime,
|
||||
|
||||
FullFilePath = sysDoc.Path ,
|
||||
FullFilePath = sysDoc.Path,
|
||||
|
||||
ConfirmUserId = confirm.ConfirmUserId,
|
||||
ConfirmTime = confirm.ConfirmTime,
|
||||
@@ -176,9 +175,9 @@ namespace IRaCIS.Core.Application.Services
|
||||
UserTypeShortName = user.UserTypeRole.UserTypeShortName
|
||||
};
|
||||
|
||||
return await query.WhereIf(inQuery.IsSigned==true,t=>t.ConfirmTime!=null)
|
||||
return await query.WhereIf(inQuery.IsSigned == true, t => t.ConfirmTime != null)
|
||||
.WhereIf(inQuery.IsSigned == false, t => t.ConfirmTime == null)
|
||||
.ToPagedListAsync(inQuery);
|
||||
.ToPagedListAsync(inQuery);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,14 +4,10 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using IRaCIS.Core.Application.Auth;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using System.Linq;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
@@ -34,7 +30,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Setting 界面的 项目所有文档列表
|
||||
@@ -221,10 +217,10 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
var trialId = inQuery.TrialId;
|
||||
|
||||
var trialInfo = await ( _trialRepository.Where(t => t.Id == inQuery.TrialId, ignoreQueryFilters: true).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync());
|
||||
var trialInfo = await (_trialRepository.Where(t => t.Id == inQuery.TrialId, ignoreQueryFilters: true).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync());
|
||||
|
||||
//系统文档查询
|
||||
var systemDocumentQueryable = from needConfirmedUserType in _systemDocNeedConfirmedUserTypeRepository.Where(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId,ignoreQueryFilters:true)
|
||||
var systemDocumentQueryable = from needConfirmedUserType in _systemDocNeedConfirmedUserTypeRepository.Where(t => t.NeedConfirmUserTypeId == _userInfo.UserTypeId, ignoreQueryFilters: true)
|
||||
.WhereIf(trialInfo.TrialFinishedTime != null, u => u.SystemDocument.CreateTime < trialInfo.TrialFinishedTime)
|
||||
.WhereIf(!_userInfo.IsAdmin, t => t.SystemDocument.IsDeleted == false || (t.SystemDocument.IsDeleted == true && t.SystemDocument.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id)))
|
||||
|
||||
@@ -355,7 +351,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
/// <param name="inQuery"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput< PageOutput<UnionDocumentWithConfirmInfoView>>> GetDocumentConfirmList(DocumentTrialUnionQuery inQuery)
|
||||
public async Task<IResponseOutput<PageOutput<UnionDocumentWithConfirmInfoView>>> GetDocumentConfirmList(DocumentTrialUnionQuery inQuery)
|
||||
{
|
||||
|
||||
|
||||
@@ -392,7 +388,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
#endregion
|
||||
|
||||
var trialInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId,ignoreQueryFilters:true).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync());
|
||||
var trialInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId, ignoreQueryFilters: true).Select(t => new { t.TrialFinishedTime, t.TrialStatusStr }).FirstNotNullAsync());
|
||||
|
||||
var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId)
|
||||
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
@@ -464,7 +460,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
FullFilePath = needConfirmEdUserType.SystemDocument.Path
|
||||
};
|
||||
|
||||
var unionQuery = trialDocQuery.Union(systemDocQuery).IgnoreQueryFilters().Where(t=>!(t.IsDeleted == true && t.ConfirmUserId == null))
|
||||
var unionQuery = trialDocQuery.Union(systemDocQuery).IgnoreQueryFilters().Where(t => !(t.IsDeleted == true && t.ConfirmUserId == null))
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.Name), t => t.Name.Contains(inQuery.Name))
|
||||
.WhereIf(inQuery.FileTypeId != null, t => t.FileTypeId == inQuery.FileTypeId)
|
||||
.WhereIf(inQuery.IsConfirmed == true, t => t.ConfirmTime != null)
|
||||
@@ -485,7 +481,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
.CountAsync();
|
||||
|
||||
|
||||
return ResponseOutput.Ok (result, new { NeedSignCount = needSignTrialDocCount + needSignSystemDocCount, NeedSignTrialDocCount = needSignTrialDocCount, NeedSignSystemDocCount = needSignSystemDocCount, TrialStatusStr = trialInfo.TrialStatusStr });
|
||||
return ResponseOutput.Ok(result, new { NeedSignCount = needSignTrialDocCount + needSignSystemDocCount, NeedSignTrialDocCount = needSignTrialDocCount, NeedSignSystemDocCount = needSignSystemDocCount, TrialStatusStr = trialInfo.TrialStatusStr });
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,30 +4,20 @@
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||
//--------------------------------------------------------------------
|
||||
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Application.Helper;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using MiniSoftware;
|
||||
using IRaCIS.Core.Application.Service.Reading.Dto;
|
||||
using IRaCIS.Core.Domain.Share.Common;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Spire.Doc;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using SharpCompress.Common;
|
||||
using DocumentFormat.OpenXml.Bibliography;
|
||||
using System.Linq.Dynamic.Core;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Spire.Doc;
|
||||
using System.Linq.Dynamic.Core;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -55,7 +45,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
IEmailSendService _emailSendService) : BaseService, ITrialEmailNoticeConfigService
|
||||
{
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取项目邮箱
|
||||
@@ -361,7 +351,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
//有序
|
||||
|
||||
if (taskInfo.IsReadingTaskViewInOrder==ReadingOrder.InOrder)
|
||||
if (taskInfo.IsReadingTaskViewInOrder == ReadingOrder.InOrder)
|
||||
{
|
||||
|
||||
|
||||
|
||||
@@ -3,9 +3,6 @@ using AutoMapper.EquivalencyExpression;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Globalization;
|
||||
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
@@ -18,22 +15,22 @@ namespace IRaCIS.Core.Application.Service
|
||||
var isEn_Us = false;
|
||||
|
||||
CreateMap<SystemDocument, SystemDocumentView>()
|
||||
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value: s.FileType.ValueCN))
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value : s.FileType.ValueCN))
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||
|
||||
CreateMap<TrialDocument, TrialDocumentView>()
|
||||
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value : s.FileType.ValueCN ))
|
||||
.ForMember(d => d.IsSomeUserSigned, u => u.MapFrom(s => s.TrialDocConfirmedUserList.Any(t=>t.ConfirmTime!=null)))
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path ));
|
||||
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value : s.FileType.ValueCN))
|
||||
.ForMember(d => d.IsSomeUserSigned, u => u.MapFrom(s => s.TrialDocConfirmedUserList.Any(t => t.ConfirmTime != null)))
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||
|
||||
|
||||
CreateMap<SystemDocument, UnionDocumentView>()
|
||||
.ForMember(d => d.IsSystemDoc, u => u.MapFrom(s => true))
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path ));
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||
|
||||
CreateMap<TrialDocument, UnionDocumentView>()
|
||||
.ForMember(d => d.IsSystemDoc, u => u.MapFrom(s => false))
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path ));
|
||||
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||
|
||||
CreateMap<TrialDocNeedConfirmedUserType, NeedConfirmedUserTypeView>().ForMember(d => d.UserTypeShortName, t => t.MapFrom(c => c.UserTypeRole.UserTypeShortName));
|
||||
CreateMap<SystemDocNeedConfirmedUserType, NeedConfirmedUserTypeView>().ForMember(d => d.UserTypeShortName, t => t.MapFrom(c => c.UserTypeRole.UserTypeShortName));
|
||||
@@ -50,13 +47,13 @@ namespace IRaCIS.Core.Application.Service
|
||||
//CreateMap<SystemDocConfirmedUser, SystemDocumentUserConfirmView>()
|
||||
// .ForMember(d => d.UserName, c => c.MapFrom(t => t.User.UserName))
|
||||
// .ForMember(d => d.RealName, c => c.MapFrom(t => t.User.LastName + " / " + t.User.FirstName));
|
||||
|
||||
|
||||
|
||||
CreateMap<TrialUser, TrialDocumentUserConfirmView>();
|
||||
|
||||
CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
CreateMap<AddOrEditTrialDocument, TrialDocument>()
|
||||
@@ -75,7 +72,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
|
||||
|
||||
CreateMap<TrialEmailNoticeConfig, TrialEmailNoticeConfigView>()
|
||||
|
||||
|
||||
.ForMember(d => d.TrialCriterionName, c => c.MapFrom(t => t.TrialReadingCriterion.CriterionName))
|
||||
.ForMember(d => d.TrialEmailNoticeUserList, c => c.MapFrom(t => t.TrialEmailNoticeUserList));
|
||||
|
||||
@@ -86,7 +83,7 @@ namespace IRaCIS.Core.Application.Service
|
||||
.ForMember(d => d.Email, c => c.MapFrom(t => t.User.EMail))
|
||||
.ForMember(d => d.RealName, c => c.MapFrom(t => t.User.FullName))
|
||||
.ForMember(d => d.UserName, c => c.MapFrom(t => t.User.UserName));
|
||||
|
||||
|
||||
|
||||
CreateMap<TrialEmailNoticeUser, EmailUserInfoDto>();
|
||||
|
||||
|
||||
@@ -1,15 +1,10 @@
|
||||
using AutoMapper;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts.Pay;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Linq.Expressions;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
public class CalculateService(
|
||||
IRepository<Payment> _paymentRepository,
|
||||
@@ -26,12 +21,12 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<Enroll> _enrollRepository)
|
||||
: BaseService, ICalculateService
|
||||
{
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取某个月下的某些医生最终确认的工作量,用于计算月度费用
|
||||
/// </summary>
|
||||
private async Task< List<CalculatePaymentDTO>> GetFinalConfirmedWorkloadAndPayPriceList(CalculateDoctorAndMonthDTO calculateFeeParam)
|
||||
private async Task<List<CalculatePaymentDTO>> GetFinalConfirmedWorkloadAndPayPriceList(CalculateDoctorAndMonthDTO calculateFeeParam)
|
||||
{
|
||||
Expression<Func<Workload, bool>> workloadLambda = x => true;
|
||||
|
||||
@@ -109,13 +104,13 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
if (i == 0 && volumeRewardPriceList[i].Min != 0)
|
||||
{
|
||||
//---Volume reward data error.
|
||||
//---Volume reward data error.
|
||||
return ResponseOutput.NotOk(_localizer["Cal_VolDataErr"]);
|
||||
}
|
||||
if (i > 0)
|
||||
{
|
||||
if (volumeRewardPriceList[i - 1].Max + 1 != volumeRewardPriceList[i].Min)
|
||||
//---Volume reward data error.
|
||||
//---Volume reward data error.
|
||||
return ResponseOutput.NotOk(_localizer["Cal_VolDataErr"]);
|
||||
}
|
||||
}
|
||||
@@ -133,25 +128,25 @@ namespace IRaCIS.Application.Services
|
||||
var allDoctorIds = allDoctorList.Select(x => x.DoctorId).Distinct().ToList();
|
||||
var listTrialId = allDoctorList.Select(x => x.TrialId).Distinct().ToList();
|
||||
|
||||
var trialDoctorlist= await (from enroll in _enrollRepository.Where(x=> listTrialId.Contains(x.TrialId)|| allDoctorIds.Contains(x.DoctorId))
|
||||
join price in _trialPaymentRepository.Where() on enroll.TrialId equals price.TrialId
|
||||
select new DoctorPrice()
|
||||
{
|
||||
IsNewTrial = price.IsNewTrial,
|
||||
AdjustmentMultiple = enroll.AdjustmentMultiple,
|
||||
TrialId=enroll.TrialId,
|
||||
DoctorId = enroll.DoctorId,
|
||||
Training=enroll.Training,
|
||||
Adjudication=enroll.Adjudication,
|
||||
Adjudication24H=enroll.Adjudication24H,
|
||||
Adjudication48H= enroll.Adjudication48H,
|
||||
Downtime=enroll.Downtime,
|
||||
Global=enroll.Global,
|
||||
RefresherTraining=enroll.RefresherTraining,
|
||||
Timepoint= enroll.Timepoint,
|
||||
Timepoint24H=enroll.Timepoint24H,
|
||||
Timepoint48H=enroll.Timepoint48H,
|
||||
}).ToListAsync();
|
||||
var trialDoctorlist = await (from enroll in _enrollRepository.Where(x => listTrialId.Contains(x.TrialId) || allDoctorIds.Contains(x.DoctorId))
|
||||
join price in _trialPaymentRepository.Where() on enroll.TrialId equals price.TrialId
|
||||
select new DoctorPrice()
|
||||
{
|
||||
IsNewTrial = price.IsNewTrial,
|
||||
AdjustmentMultiple = enroll.AdjustmentMultiple,
|
||||
TrialId = enroll.TrialId,
|
||||
DoctorId = enroll.DoctorId,
|
||||
Training = enroll.Training,
|
||||
Adjudication = enroll.Adjudication,
|
||||
Adjudication24H = enroll.Adjudication24H,
|
||||
Adjudication48H = enroll.Adjudication48H,
|
||||
Downtime = enroll.Downtime,
|
||||
Global = enroll.Global,
|
||||
RefresherTraining = enroll.RefresherTraining,
|
||||
Timepoint = enroll.Timepoint,
|
||||
Timepoint24H = enroll.Timepoint24H,
|
||||
Timepoint48H = enroll.Timepoint48H,
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
foreach (var doctor in param.NeedCalculateReviewers)
|
||||
@@ -179,16 +174,16 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
if (doctordata != null)
|
||||
{
|
||||
item.Training = doctordata.Training??0;
|
||||
item.Adjudication = doctordata.Adjudication??0;
|
||||
item.AdjudicationIn24H = doctordata.Adjudication24H??0;
|
||||
item.AdjudicationIn48H = doctordata.Adjudication48H??0;
|
||||
item.Downtime = doctordata.Downtime??0;
|
||||
item.Global = doctordata.Global??0;
|
||||
item.RefresherTraining = doctordata.RefresherTraining??0;
|
||||
item.Timepoint = doctordata.Timepoint??0;
|
||||
item.TimepointIn24H = doctordata.Timepoint24H??0;
|
||||
item.TimepointIn48H = doctordata.Timepoint48H??0;
|
||||
item.Training = doctordata.Training ?? 0;
|
||||
item.Adjudication = doctordata.Adjudication ?? 0;
|
||||
item.AdjudicationIn24H = doctordata.Adjudication24H ?? 0;
|
||||
item.AdjudicationIn48H = doctordata.Adjudication48H ?? 0;
|
||||
item.Downtime = doctordata.Downtime ?? 0;
|
||||
item.Global = doctordata.Global ?? 0;
|
||||
item.RefresherTraining = doctordata.RefresherTraining ?? 0;
|
||||
item.Timepoint = doctordata.Timepoint ?? 0;
|
||||
item.TimepointIn24H = doctordata.Timepoint24H ?? 0;
|
||||
item.TimepointIn48H = doctordata.Timepoint48H ?? 0;
|
||||
item.PersonalAdditional = 0;
|
||||
}
|
||||
++codeOrder;
|
||||
@@ -275,7 +270,7 @@ namespace IRaCIS.Application.Services
|
||||
PaymentType = "Timepoint Regular",
|
||||
Count = item.Timepoint,
|
||||
BasePrice = item.TimepointPrice,
|
||||
PersonalAdditional = doctordata!=null?0: item.PersonalAdditional,
|
||||
PersonalAdditional = doctordata != null ? 0 : item.PersonalAdditional,
|
||||
TrialAdditional = doctordata != null ? 0 : item.TimepointPrice * (item.AdjustmentMultiple - 1) + (item.TrialAdditional == null ? 0 : (decimal)item.TrialAdditional),
|
||||
PaymentId = Guid.Empty,
|
||||
DoctorId = item.DoctorId,
|
||||
@@ -540,7 +535,7 @@ namespace IRaCIS.Application.Services
|
||||
// detail.PersonalAdditional = 0;
|
||||
// detail.TrialAdditional = 0;
|
||||
//}
|
||||
|
||||
|
||||
detail.PaymentId = result.Data;
|
||||
}
|
||||
await AddOrUpdateMonthlyPaymentDetail(paymentDetailList, result.Data);
|
||||
@@ -570,13 +565,13 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
foreach (var reviewer in needUpdatePayment)
|
||||
{
|
||||
await _paymentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
|
||||
!u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment()
|
||||
{
|
||||
AdjustmentUSD = reviewer.AdjustUSD,
|
||||
AdjustmentCNY = reviewer.AdjustCNY
|
||||
await _paymentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
|
||||
!u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment()
|
||||
{
|
||||
AdjustmentUSD = reviewer.AdjustUSD,
|
||||
AdjustmentCNY = reviewer.AdjustCNY
|
||||
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -604,8 +599,8 @@ namespace IRaCIS.Application.Services
|
||||
//payment.BankTransferCNY = bankTransferCNY;
|
||||
payment.YearMonthDate = DateTime.Parse(payment.YearMonth);
|
||||
|
||||
payment =await _paymentRepository.AddAsync(payment);
|
||||
success =await _paymentRepository.SaveChangesAsync();
|
||||
payment = await _paymentRepository.AddAsync(payment);
|
||||
success = await _paymentRepository.SaveChangesAsync();
|
||||
return ResponseOutput.Result(success, payment.Id);
|
||||
}
|
||||
else
|
||||
@@ -613,7 +608,7 @@ namespace IRaCIS.Application.Services
|
||||
// 如果是 当月计算的工作量费用 和 调整费用都为0,则删除该行记录
|
||||
if (addOrUpdateModel.PaymentUSD == 0 && paymentModel.AdjustmentUSD == 0)
|
||||
{
|
||||
success =await _paymentRepository.BatchDeleteNoTrackingAsync(u => u.Id == paymentModel.Id);
|
||||
success = await _paymentRepository.BatchDeleteNoTrackingAsync(u => u.Id == paymentModel.Id);
|
||||
//_paymentDetailRepository.Delete(u=>u.PaymentId==paymentModel.Id);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using System;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
public class AwardPriceDTO: AwardPriceCalculateDTO
|
||||
public class AwardPriceDTO : AwardPriceCalculateDTO
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class CalculateNeededDTO
|
||||
{
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class ExchangeRateCommand
|
||||
{
|
||||
public Guid? Id { get; set; }
|
||||
public string YearMonth { get; set; }=String.Empty;
|
||||
public string YearMonth { get; set; } = String.Empty;
|
||||
public decimal Rate { get; set; }
|
||||
|
||||
public DateTime UpdateTime { get; set; }
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Contracts.Pay
|
||||
namespace IRaCIS.Application.Contracts.Pay
|
||||
{
|
||||
public class PaymentAdjustmentCommand
|
||||
{
|
||||
public Guid? Id { get; set; }
|
||||
public Guid? Id { get; set; }
|
||||
public Guid ReviewerId { get; set; }
|
||||
public DateTime YearMonth { get; set; }
|
||||
public DateTime YearMonth { get; set; }
|
||||
public decimal AdjustPaymentUSD { get; set; }
|
||||
public decimal AdjustPaymentCNY { get; set; }
|
||||
public string Note { get; set; } = string.Empty;
|
||||
@@ -17,15 +14,15 @@ namespace IRaCIS.Application.Contracts.Pay
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid ReviewerId { get; set; }
|
||||
public string YearMonth { get; set; }=String.Empty;
|
||||
public DateTime YearMonthDate { get; set; }
|
||||
public string YearMonth { get; set; } = String.Empty;
|
||||
public DateTime YearMonthDate { get; set; }
|
||||
public bool IsLock { get; set; }
|
||||
public decimal AdjustPaymentUSD { get; set; }
|
||||
public decimal AdjustPaymentCNY { get; set; }
|
||||
public string Note { get; set; } = String.Empty;
|
||||
}
|
||||
|
||||
public class PaymentAdjustmentDetailDTO: PaymentAdjustmentDTO
|
||||
public class PaymentAdjustmentDetailDTO : PaymentAdjustmentDTO
|
||||
{
|
||||
public string ReviewerCode { get; set; } = String.Empty;
|
||||
public string FirstName { get; set; } = String.Empty;
|
||||
@@ -34,11 +31,11 @@ namespace IRaCIS.Application.Contracts.Pay
|
||||
public string ChineseName { get; set; } = String.Empty;
|
||||
}
|
||||
|
||||
public class PaymentAdjustmentQueryDTO:PageInput
|
||||
public class PaymentAdjustmentQueryDTO : PageInput
|
||||
{
|
||||
public string TrialCode { get; set; } = string.Empty;
|
||||
public string Reviewer { get; set; } = string.Empty;
|
||||
public DateTime BeginMonth { get; set; }
|
||||
public DateTime BeginMonth { get; set; }
|
||||
public DateTime EndMonth { get; set; }
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Contracts.Pay
|
||||
namespace IRaCIS.Application.Contracts.Pay
|
||||
{
|
||||
public class PaymentDetailDTO
|
||||
{
|
||||
@@ -71,7 +69,7 @@ namespace IRaCIS.Application.Contracts.Pay
|
||||
|
||||
public class LockPaymentDTO
|
||||
{
|
||||
public List<Guid> ReviewerIdList { get; set; }=new List<Guid>();
|
||||
public List<Guid> ReviewerIdList { get; set; } = new List<Guid>();
|
||||
public DateTime Month { get; set; }
|
||||
|
||||
public bool IsLock { get; set; } = true;
|
||||
@@ -92,7 +90,7 @@ namespace IRaCIS.Application.Contracts.Pay
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class ReviewerPaymentUSD
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
using System;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class PaymentDTO
|
||||
{
|
||||
public PageOutput<PaymentModel> CostList { get; set; }=new PageOutput<PaymentModel>();
|
||||
public PageOutput<PaymentModel> CostList { get; set; } = new PageOutput<PaymentModel>();
|
||||
public decimal ExchangeRate { get; set; }
|
||||
}
|
||||
public class PaymentModel
|
||||
@@ -100,7 +96,8 @@ namespace IRaCIS.Application.Contracts
|
||||
public decimal GrossProfit => RevenusUSD - PaymentUSD;
|
||||
public decimal GrossProfitMargin
|
||||
{
|
||||
get {
|
||||
get
|
||||
{
|
||||
if (RevenusUSD == 0)
|
||||
return 0;
|
||||
else
|
||||
@@ -145,10 +142,11 @@ namespace IRaCIS.Application.Contracts
|
||||
public decimal PaymentUSD { get; set; }
|
||||
public decimal RevenusUSD { get; set; }
|
||||
public decimal GrossProfit => RevenusUSD - PaymentUSD;
|
||||
|
||||
|
||||
public decimal GrossProfitMargin
|
||||
{
|
||||
get {
|
||||
get
|
||||
{
|
||||
if (RevenusUSD == 0)
|
||||
return 0;
|
||||
else
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class RankPriceDTO
|
||||
{
|
||||
@@ -42,7 +39,7 @@ namespace IRaCIS.Application.Contracts
|
||||
public decimal Downtime { get; set; }
|
||||
public decimal RefresherTraining { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
public class RankPriceQueryDTO : PageInput
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class ReviewerPayInfoQueryDTO
|
||||
{
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
|
||||
public class DtoDoctorList
|
||||
@@ -24,14 +21,14 @@ namespace IRaCIS.Application.Contracts
|
||||
public DateTime? CreateTime { get; set; }
|
||||
public string SowName { get; set; } = String.Empty;
|
||||
public string SowPath { get; set; } = String.Empty;
|
||||
public string SowFullPath => SowPath;
|
||||
public string SowFullPath => SowPath;
|
||||
public decimal AdjustmentMultiple { get; set; } = 1;
|
||||
|
||||
public string DoctorsNames{ get; set; }=String.Empty;
|
||||
public string DoctorsNames { get; set; } = String.Empty;
|
||||
|
||||
public string ReviewMode { get; set; } = String.Empty;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class TrialPaymentPriceCommand
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
using System;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Contracts
|
||||
namespace IRaCIS.Application.Contracts
|
||||
{
|
||||
public class TrialRevenuesPriceDTO
|
||||
{
|
||||
|
||||
|
||||
public Guid TrialId { get; set; }
|
||||
public decimal Timepoint { get; set; }
|
||||
public decimal TimepointIn24H { get; set; }
|
||||
@@ -14,7 +11,7 @@ namespace IRaCIS.Application.Contracts
|
||||
public decimal AdjudicationIn24H { get; set; }
|
||||
public decimal AdjudicationIn48H { get; set; }
|
||||
public decimal RefresherTraining { get; set; }
|
||||
|
||||
|
||||
public decimal Global { get; set; }
|
||||
public decimal Training { get; set; }
|
||||
public decimal Downtime { get; set; }
|
||||
@@ -25,9 +22,9 @@ namespace IRaCIS.Application.Contracts
|
||||
public Guid Id { get; set; }
|
||||
public string TrialCode { get; set; } = String.Empty;
|
||||
public string Indication { get; set; } = string.Empty;
|
||||
public int Expedited { get; set; }
|
||||
public int Expedited { get; set; }
|
||||
public string ReviewMode { get; set; } = String.Empty;
|
||||
public string Cro { get; set; } = String.Empty;
|
||||
public string Cro { get; set; } = String.Empty;
|
||||
}
|
||||
public class TrialRevenuesPriceQueryDTO : PageInput
|
||||
{
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
public class RevenusVerifyQueryDTO
|
||||
{
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Infra.EFCore;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
|
||||
[ApiExplorerSettings(GroupName = "Financial")]
|
||||
@@ -16,7 +12,7 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<Payment> _paymentRepository)
|
||||
: BaseService, IExchangeRateService
|
||||
{
|
||||
|
||||
|
||||
|
||||
[NonDynamicMethod]
|
||||
public async Task<IResponseOutput> AddOrUpdateExchangeRate(ExchangeRateCommand model)
|
||||
@@ -26,7 +22,7 @@ namespace IRaCIS.Application.Services
|
||||
var existItem = await _exchangeRateRepository.FirstOrDefaultAsync(u => u.YearMonth == model.YearMonth);
|
||||
if (existItem != null)
|
||||
{
|
||||
//---The exchange rate of the same month already existed.
|
||||
//---The exchange rate of the same month already existed.
|
||||
return ResponseOutput.NotOk(_localizer["ExR_SameMthExist"]);
|
||||
}
|
||||
var rate = _mapper.Map<ExchangeRate>(model);
|
||||
@@ -57,7 +53,7 @@ namespace IRaCIS.Application.Services
|
||||
/// 根据记录Id,删除汇率记录
|
||||
/// </summary>
|
||||
/// <param name="id">汇率记录Id</param>
|
||||
|
||||
|
||||
[HttpDelete("{id:guid}")]
|
||||
public async Task<IResponseOutput> DeleteExchangeRate(Guid id)
|
||||
{
|
||||
@@ -72,7 +68,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
var success = await _exchangeRateRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
|
||||
|
||||
return ResponseOutput.Ok(success);
|
||||
return ResponseOutput.Ok(success);
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +95,7 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
|
||||
var yearMonth = inQuery.SearchMonth?.ToString("yyyy-MM");
|
||||
|
||||
|
||||
var exchangeRateQueryable = _exchangeRateRepository.AsQueryable()
|
||||
.WhereIf(inQuery.SearchMonth != null, o => o.YearMonth == yearMonth)
|
||||
.ProjectTo<ExchangeRateCommand>(_mapper.ConfigurationProvider);
|
||||
|
||||
@@ -1,15 +1,14 @@
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Application.Contracts.Pay;
|
||||
using IRaCIS.Application.Interfaces;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using System.Linq.Expressions;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
using System.Linq.Dynamic.Core;
|
||||
|
||||
namespace IRaCIS.Application.Services
|
||||
namespace IRaCIS.Core.Application.Service
|
||||
{
|
||||
[ ApiExplorerSettings(GroupName = "Financial")]
|
||||
[ApiExplorerSettings(GroupName = "Financial")]
|
||||
public class FinancialService(
|
||||
IRepository<Payment> _paymentRepository,
|
||||
IRepository<ReviewerPayInformation> _doctorPayInfoRepository,
|
||||
@@ -26,11 +25,11 @@ namespace IRaCIS.Application.Services
|
||||
IRepository<Workload> _doctorWorkloadRepository)
|
||||
: BaseService, IPaymentService
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Financials /MonthlyPayment 列表查询接口
|
||||
/// </summary>
|
||||
[NonDynamicMethod]
|
||||
[NonDynamicMethod]
|
||||
public async Task<PageOutput<PaymentModel>> GetMonthlyPaymentList(MonthlyPaymentQueryDTO inQuery)
|
||||
{
|
||||
//var year = queryParam.StatisticsDate.Year;
|
||||
@@ -174,57 +173,57 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
|
||||
detailList = await (from pay in _paymentDetailRepository.Where(t => t.PaymentId == paymentId)
|
||||
join enroll in _enrollRepository.Where() on new { pay.DoctorId, pay.TrialId } equals new { enroll.DoctorId, enroll.TrialId }
|
||||
join price in _trialPaymentPriceRepository.Where() on pay.TrialId equals price.TrialId
|
||||
orderby pay.ShowCodeOrder
|
||||
orderby pay.ShowTypeOrder
|
||||
select new PaymentDetailDTO()
|
||||
{
|
||||
Id=pay.Id,
|
||||
ShowCodeOrder = pay.ShowCodeOrder,
|
||||
ShowTypeOrder = pay.ShowTypeOrder,
|
||||
PaymentUSD = pay.PaymentUSD,
|
||||
BasePrice = pay.BasePrice,
|
||||
PersonalAdditional = pay.PersonalAdditional,
|
||||
TrialAdditional = pay.TrialAdditional,
|
||||
TrialCode = pay.TrialCode,
|
||||
PaymentCNY = pay.PaymentCNY,
|
||||
DoctorId = pay.DoctorId,
|
||||
ExchangeRate = pay.ExchangeRate,
|
||||
IsNewTrial = price.IsNewTrial,
|
||||
NewPersonalAdditional= enroll.AdjustmentMultiple,
|
||||
join enroll in _enrollRepository.Where() on new { pay.DoctorId, pay.TrialId } equals new { enroll.DoctorId, enroll.TrialId }
|
||||
join price in _trialPaymentPriceRepository.Where() on pay.TrialId equals price.TrialId
|
||||
orderby pay.ShowCodeOrder
|
||||
orderby pay.ShowTypeOrder
|
||||
select new PaymentDetailDTO()
|
||||
{
|
||||
Id = pay.Id,
|
||||
ShowCodeOrder = pay.ShowCodeOrder,
|
||||
ShowTypeOrder = pay.ShowTypeOrder,
|
||||
PaymentUSD = pay.PaymentUSD,
|
||||
BasePrice = pay.BasePrice,
|
||||
PersonalAdditional = pay.PersonalAdditional,
|
||||
TrialAdditional = pay.TrialAdditional,
|
||||
TrialCode = pay.TrialCode,
|
||||
PaymentCNY = pay.PaymentCNY,
|
||||
DoctorId = pay.DoctorId,
|
||||
ExchangeRate = pay.ExchangeRate,
|
||||
IsNewTrial = price.IsNewTrial,
|
||||
NewPersonalAdditional = enroll.AdjustmentMultiple,
|
||||
|
||||
}).ToListAsync();
|
||||
}).ToListAsync();
|
||||
|
||||
}
|
||||
//费用调整
|
||||
//_payAdjustmentRepository.Where(t => t.YearMonth == yearMonthStr && t.ReviewerId == reviewerId)
|
||||
var adjList =
|
||||
await (from costAdjustment in _payAdjustmentRepository.Where(t => t.YearMonth == yearMonthStr&& t.ReviewerId == paymentId)
|
||||
join enroll in _enrollRepository.Where() on new { costAdjustment.ReviewerId, costAdjustment.TrialId } equals new { ReviewerId= enroll.DoctorId, enroll.TrialId }
|
||||
join price in _trialPaymentPriceRepository.Where() on costAdjustment.TrialId equals price.TrialId
|
||||
await (from costAdjustment in _payAdjustmentRepository.Where(t => t.YearMonth == yearMonthStr && t.ReviewerId == paymentId)
|
||||
join enroll in _enrollRepository.Where() on new { costAdjustment.ReviewerId, costAdjustment.TrialId } equals new { ReviewerId = enroll.DoctorId, enroll.TrialId }
|
||||
join price in _trialPaymentPriceRepository.Where() on costAdjustment.TrialId equals price.TrialId
|
||||
|
||||
|
||||
select new PaymentDetailDTO()
|
||||
{
|
||||
Id=costAdjustment.Id,
|
||||
TrialCode = "Adjustment",
|
||||
PaymentCNY = costAdjustment.AdjustmentCNY,
|
||||
PaymentUSD = costAdjustment.AdjustmentUSD,
|
||||
DoctorId = costAdjustment.ReviewerId,
|
||||
ExchangeRate = costAdjustment.ExchangeRate,
|
||||
AdjustmentView = new AdjustmentDTO()
|
||||
{
|
||||
AdjustPaymentUSD = costAdjustment.AdjustmentUSD,
|
||||
AdjustPaymentCNY = costAdjustment.AdjustmentCNY,
|
||||
Note = costAdjustment.Note
|
||||
},
|
||||
IsNewTrial = price.IsNewTrial,
|
||||
NewPersonalAdditional = enroll.AdjustmentMultiple,
|
||||
select new PaymentDetailDTO()
|
||||
{
|
||||
Id = costAdjustment.Id,
|
||||
TrialCode = "Adjustment",
|
||||
PaymentCNY = costAdjustment.AdjustmentCNY,
|
||||
PaymentUSD = costAdjustment.AdjustmentUSD,
|
||||
DoctorId = costAdjustment.ReviewerId,
|
||||
ExchangeRate = costAdjustment.ExchangeRate,
|
||||
AdjustmentView = new AdjustmentDTO()
|
||||
{
|
||||
AdjustPaymentUSD = costAdjustment.AdjustmentUSD,
|
||||
AdjustPaymentCNY = costAdjustment.AdjustmentCNY,
|
||||
Note = costAdjustment.Note
|
||||
},
|
||||
IsNewTrial = price.IsNewTrial,
|
||||
NewPersonalAdditional = enroll.AdjustmentMultiple,
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
}).ToListAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
detailList.AddRange(adjList);
|
||||
@@ -239,7 +238,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
returnModel.DetailList = detailList;
|
||||
|
||||
|
||||
|
||||
|
||||
var doctorId = returnModel.DetailList.FirstOrDefault()?.DoctorId;
|
||||
var query = from doctor in _doctorRepository.AsQueryable()
|
||||
@@ -258,7 +257,7 @@ namespace IRaCIS.Application.Services
|
||||
YearMonth = yearMonthStr
|
||||
};
|
||||
|
||||
returnModel.DoctorInfo =(await query.FirstOrDefaultAsync()).IfNullThrowException();
|
||||
returnModel.DoctorInfo = (await query.FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
return returnModel;
|
||||
}
|
||||
@@ -272,7 +271,7 @@ namespace IRaCIS.Application.Services
|
||||
List<PayDetailDTO> result = new List<PayDetailDTO>();
|
||||
foreach (var t in manyReviewers)
|
||||
{
|
||||
result.Add(await GetMonthlyPaymentDetailList(t.PaymentId, t.ReviewerId, t.YearMonth));
|
||||
result.Add(await GetMonthlyPaymentDetailList(t.PaymentId, t.ReviewerId, t.YearMonth));
|
||||
}
|
||||
|
||||
|
||||
@@ -374,7 +373,7 @@ namespace IRaCIS.Application.Services
|
||||
ChineseName = doctor.ChineseName,
|
||||
FirstName = doctor.FirstName,
|
||||
LastName = doctor.LastName,
|
||||
FullName= doctor.FullName,
|
||||
FullName = doctor.FullName,
|
||||
ReviewerCode = doctor.ReviewerCode,
|
||||
PaymentUSD = monthlyPay.PaymentUSD,
|
||||
PaymentCNY = monthlyPay.PaymentCNY,
|
||||
@@ -543,7 +542,7 @@ namespace IRaCIS.Application.Services
|
||||
}
|
||||
|
||||
List<RevenuesDTO> incomeList = new List<RevenuesDTO>();
|
||||
IQueryable<RevenuesDTO>? query=null ;
|
||||
IQueryable<RevenuesDTO>? query = null;
|
||||
var propName = string.Empty;
|
||||
var count = 0;
|
||||
|
||||
@@ -1212,7 +1211,7 @@ namespace IRaCIS.Application.Services
|
||||
|
||||
result.ForEach(t =>
|
||||
{
|
||||
t.TaxCNY =GetTax2(t.PaymentCNY);
|
||||
t.TaxCNY = GetTax2(t.PaymentCNY);
|
||||
|
||||
t.ActuallyPaidCNY = t.PaymentCNY - t.TaxCNY;
|
||||
t.BankTransferCNY = t.PaymentCNY - t.TaxCNY;
|
||||
@@ -1244,8 +1243,8 @@ namespace IRaCIS.Application.Services
|
||||
{
|
||||
IsLock = true
|
||||
});
|
||||
await _doctorWorkloadRepository.BatchUpdateNoTrackingAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth,
|
||||
t => new Workload { IsLock = true });
|
||||
await _doctorWorkloadRepository.BatchUpdateNoTrackingAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth,
|
||||
t => new Workload { IsLock = true });
|
||||
|
||||
return ResponseOutput.Result(paymentLockSuccess || adjustmentLockSuccess);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using IRaCIS.Application.Contracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using IRaCIS.Application.Contracts;
|
||||
using System;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using IRaCIS.Application.Contracts.Pay;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using IRaCIS.Application.Contracts.Pay;
|
||||
|
||||
namespace IRaCIS.Application.Interfaces
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user