修改返回列表信息

Uat_Study
hang 2023-06-16 14:30:21 +08:00
parent 9baa6e3c85
commit 4ab56202f0
2 changed files with 39 additions and 33 deletions

View File

@ -5,6 +5,7 @@ using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.Infrastructure.Extention;
using MathNet.Numerics; using MathNet.Numerics;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Linq;
using System.Linq.Dynamic.Core; using System.Linq.Dynamic.Core;
namespace IRaCIS.Core.Application namespace IRaCIS.Core.Application
@ -634,7 +635,7 @@ namespace IRaCIS.Core.Application
ExperimentName = t.ExperimentName, ExperimentName = t.ExperimentName,
TrialCode = t.TrialCode, TrialCode = t.TrialCode,
UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
.Where(u => u.CreateUserId==_userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.SubjectVisit.IsUrgent).Count(), .Where(u => u.CreateUserId == _userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator && u.SubjectVisit.IsUrgent).Count(),
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
.Where(u => u.CreateUserId == _userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(), .Where(u => u.CreateUserId == _userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(),
@ -841,7 +842,7 @@ namespace IRaCIS.Core.Application
var toBeDealedCount = _taskMedicalReviewRepository var toBeDealedCount = _taskMedicalReviewRepository
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id)) .Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
.Where(t => t.IsClosedDialog == false && t.VisitTask.DoctorUserId==_userInfo.Id) .Where(t => t.IsClosedDialog == false && t.VisitTask.DoctorUserId == _userInfo.Id)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count(); .Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count();
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount }); return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
@ -968,7 +969,7 @@ namespace IRaCIS.Core.Application
#region 项目维度 统计每个人的待办 #region 项目维度 统计每个人的待办
[HttpPost] [HttpPost]
public async Task<IResponseOutput<List<TrialUserToBeDoneDto>>> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery, public async Task<IResponseOutput<Dictionary<UserTypeEnum, List<TrialUserToBeDoneDto>> >> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery,
[FromServices] IRepository<TrialUser> _trialUserRepository) [FromServices] IRepository<TrialUser> _trialUserRepository)
{ {
@ -1010,15 +1011,15 @@ namespace IRaCIS.Core.Application
// CRC 质疑待回复 --区分人 // CRC 质疑待回复 --区分人
QC_CRC_ToBeDealedCount = QC_CRC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? (t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c=>c.TrialSite.CRCUserList.Any(u=>u.UserId==t.UserId)) t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.SelectMany(c => c.QCChallengeList).Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC ).Count() : 0, .SelectMany(c => c.QCChallengeList).Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count() : 0,
//IQC 质疑待处理 --区分人 //IQC 质疑待处理 --区分人
QC_IQC_ToBeDealedCount = QC_IQC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ? (t.User.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.SelectMany(c => c.QCChallengeList) t.Trial.SubjectVisitList.SelectMany(c => c.QCChallengeList)
.Where(u => u.CreateUserId==t.UserId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0, .Where(u => u.CreateUserId == t.UserId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0,
@ -1029,10 +1030,10 @@ namespace IRaCIS.Core.Application
//PM 核查待处理 //PM 核查待处理
Check_PM_ToBeDealedCount = Check_PM_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ? (t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.SubjectVisitList .Where(u => u.CheckState == CheckStateEnum.ToCheck).Count() : 0, t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.ToCheck).Count() : 0,
//PM 质疑待处理 //PM 质疑待处理
Check_PM_ToBeReplyedCount = Check_PM_ToBeReplyedCount =
@ -1045,10 +1046,10 @@ namespace IRaCIS.Core.Application
Check_CRC_ToBeDealedCount = Check_CRC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? (t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId)) t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply ).Count() : 0, .Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() : 0,
//IR 未读 --区分人 //IR 未读 --区分人
Reading_IR_UnReadCount = Reading_IR_UnReadCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ? (t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.VisitTaskList t.Trial.VisitTaskList
@ -1075,7 +1076,7 @@ namespace IRaCIS.Core.Application
Medical_IR_ToBeDealedCount = Medical_IR_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ? (t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.TaskMedicalReviewList t.Trial.TaskMedicalReviewList
.Where(c => c.IsClosedDialog == false && c.VisitTask.DoctorUserId==t.UserId) .Where(c => c.IsClosedDialog == false && c.VisitTask.DoctorUserId == t.UserId)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count() : 0, .Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count() : 0,
@ -1091,7 +1092,10 @@ namespace IRaCIS.Core.Application
var list = await query.ToListAsync(); var list = await query.ToListAsync();
return ResponseOutput.Ok(list);
var result= list.GroupBy(t => t.UserType).ToDictionary(g => g.Key, g => g.ToList());
return ResponseOutput.Ok(result);
} }

View File

@ -9,33 +9,35 @@ delete VisitTaskReReading where TrialId is NULL
-- --
SELECT t.name AS table_name, c.name AS column_name, d.name AS constraint_name , ty.Name as typeName, c.max_length as length SELECT t.name AS table_name,
c.name AS column_name,
d.name AS constraint_name,
ty.Name as typeName,
c.max_length as length
FROM sys.tables t FROM sys.tables t
INNER JOIN sys.default_constraints d ON t.object_id = d.parent_object_id INNER JOIN sys.columns c ON c.object_id = t.object_id
INNER JOIN sys.columns c ON d.parent_column_id = c.column_id AND c.object_id = t.object_id LEFT JOIN sys.default_constraints d ON d.parent_object_id = c.object_id AND d.parent_column_id = c.column_id
INNER JOIN sys.types ty on ty.system_type_id = c.system_type_id INNER JOIN sys.types ty on ty.system_type_id = c.system_type_id
AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar') AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar')
WHERE c.max_length < 100 AND c.max_length > 0
--sql --sql
SELECT t.name AS table_name, c.name AS column_name, d.name AS constraint_name , ty.Name as typeName, c.max_length as length, SELECT t.name AS table_name,
'ALTER TABLE [' + t.name + '] DROP CONSTRAINT [' + d.name + ']' AS drop_constraint_sql, c.name AS column_name,
CASE WHEN c.is_nullable = 1 THEN d.name AS constraint_name,
'ALTER TABLE [' + OBJECT_NAME(c.object_id) + '] ALTER COLUMN ' + QUOTENAME(c.name) + ty.Name as typeName,
CASE WHEN c.max_length < 100 THEN ' NVARCHAR(100)' ELSE ' NVARCHAR('+ CONCAT('', c.max_length)+')' END + ' NULL' c.max_length as length,
ELSE 'ALTER TABLE ' + QUOTENAME(t.name) + ' DROP CONSTRAINT [' + d.name + ']' AS drop_constraint_sql,
'ALTER TABLE [' + OBJECT_NAME(c.object_id) + '] ALTER COLUMN ' + QUOTENAME(c.name) + CASE WHEN c.max_length = -1 THEN 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(MAX)' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END
CASE WHEN c.max_length < 100 THEN ' NVARCHAR(100)' ELSE ' NVARCHAR('+ CONCAT('', c.max_length)+')' END + ' NOT NULL' WHEN c.max_length > 0 AND c.max_length < 100 THEN 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(' + CAST(100 AS VARCHAR(10)) + ')' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END
END AS AlterColumnSQL, WHEN c.max_length = 8000 THEN 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(' + CAST(4000 AS VARCHAR(10)) + ')' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END
ELSE 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' ' + ty.name + '(' + CAST(c.max_length AS VARCHAR(10)) + ')' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END
'ALTER TABLE ' + QUOTENAME(t.name) + ' ADD CONSTRAINT ' +'DF_'+t.name+ '_'+c.name + END AS AlterColumnSQL,
' DEFAULT ' + d.definition + ' FOR ' + QUOTENAME(c.name) AS add_constraint_sql 'ALTER TABLE ' + QUOTENAME(t.name) + ' ADD CONSTRAINT ' +'DF_'+t.name+ '_'+ c.name + ' DEFAULT ' + d.definition + ' FOR ' + QUOTENAME(c.name) AS add_constraint_sql
FROM sys.tables t FROM sys.tables t
INNER JOIN sys.default_constraints d ON t.object_id = d.parent_object_id INNER JOIN sys.columns c ON c.object_id = t.object_id
INNER JOIN sys.columns c ON d.parent_column_id = c.column_id AND c.object_id = t.object_id LEFT JOIN sys.default_constraints d ON d.parent_object_id = c.object_id AND d.parent_column_id = c.column_id
INNER JOIN sys.types ty on ty.system_type_id = c.system_type_id INNER JOIN sys.types ty on ty.system_type_id = c.system_type_id
AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar') AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar')
and (ty.name != 'nvarchar' or (ty.name = 'nvarchar' and (c.max_length = -1 or (c.max_length < 100 and c.max_length > 0))))
--nvarchar nvarchar 100
and (ty.name!='nvarchar' or (ty.name='nvarchar' and c.max_length<100))