From 4ab56202f04d677772fafb9bb7a1266643328f72 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 16 Jun 2023 14:30:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TrialSiteUser/PersonalWorkstation.cs | 28 +++++++----- IRaCIS.Core.Domain/SQLFile/20230613.sql | 44 ++++++++++--------- 2 files changed, 39 insertions(+), 33 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index ac2fc4adc..c400c092f 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -5,6 +5,7 @@ using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure.Extention; using MathNet.Numerics; using Microsoft.AspNetCore.Mvc; +using System.Linq; using System.Linq.Dynamic.Core; namespace IRaCIS.Core.Application @@ -634,7 +635,7 @@ namespace IRaCIS.Core.Application ExperimentName = t.ExperimentName, TrialCode = t.TrialCode, 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) .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 .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(); return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount }); @@ -968,7 +969,7 @@ namespace IRaCIS.Core.Application #region 项目维度 统计每个人的待办 [HttpPost] - public async Task>> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery, + public async Task> >> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery, [FromServices] IRepository _trialUserRepository) { @@ -1010,15 +1011,15 @@ namespace IRaCIS.Core.Application // CRC 质疑待回复 --区分人 QC_CRC_ToBeDealedCount = (t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? - 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, + 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, //IQC 质疑待处理 --区分人 QC_IQC_ToBeDealedCount = (t.User.UserTypeEnum == UserTypeEnum.IQC) ? 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 = (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 质疑待处理 Check_PM_ToBeReplyedCount = @@ -1045,10 +1046,10 @@ namespace IRaCIS.Core.Application Check_CRC_ToBeDealedCount = (t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? 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 = (t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ? t.Trial.VisitTaskList @@ -1075,7 +1076,7 @@ namespace IRaCIS.Core.Application Medical_IR_ToBeDealedCount = (t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ? 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, @@ -1091,7 +1092,10 @@ namespace IRaCIS.Core.Application 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); } diff --git a/IRaCIS.Core.Domain/SQLFile/20230613.sql b/IRaCIS.Core.Domain/SQLFile/20230613.sql index 00a3a7b10..217ac6339 100644 --- a/IRaCIS.Core.Domain/SQLFile/20230613.sql +++ b/IRaCIS.Core.Domain/SQLFile/20230613.sql @@ -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 -INNER JOIN sys.default_constraints d ON t.object_id = d.parent_object_id -INNER JOIN sys.columns c ON d.parent_column_id = c.column_id AND c.object_id = t.object_id +INNER JOIN sys.columns c ON 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 AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar') +WHERE c.max_length < 100 AND c.max_length > 0 --带维护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, -'ALTER TABLE [' + t.name + '] DROP CONSTRAINT [' + d.name + ']' AS drop_constraint_sql, -CASE WHEN c.is_nullable = 1 THEN - 'ALTER TABLE [' + OBJECT_NAME(c.object_id) + '] ALTER COLUMN ' + QUOTENAME(c.name) + - CASE WHEN c.max_length < 100 THEN ' NVARCHAR(100)' ELSE ' NVARCHAR('+ CONCAT('', c.max_length)+')' END + ' NULL' - ELSE - 'ALTER TABLE [' + OBJECT_NAME(c.object_id) + '] ALTER COLUMN ' + QUOTENAME(c.name) + - CASE WHEN c.max_length < 100 THEN ' NVARCHAR(100)' ELSE ' NVARCHAR('+ CONCAT('', c.max_length)+')' END + ' NOT NULL' - END AS AlterColumnSQL, - - 'ALTER TABLE ' + QUOTENAME(t.name) + ' ADD CONSTRAINT ' +'DF_'+t.name+ '_'+c.name + - ' DEFAULT ' + d.definition + ' FOR ' + QUOTENAME(c.name) AS add_constraint_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, + 'ALTER TABLE ' + QUOTENAME(t.name) + ' DROP CONSTRAINT [' + d.name + ']' AS drop_constraint_sql, + 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 + 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 + 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 + END AS AlterColumnSQL, + '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 -INNER JOIN sys.default_constraints d ON t.object_id = d.parent_object_id -INNER JOIN sys.columns c ON d.parent_column_id = c.column_id AND c.object_id = t.object_id +INNER JOIN sys.columns c ON 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 AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar') - ---不是nvarchar 或者是nvarchar 但是长度小于100 -and (ty.name!='nvarchar' or (ty.name='nvarchar' and c.max_length<100)) \ No newline at end of file +and (ty.name != 'nvarchar' or (ty.name = 'nvarchar' and (c.max_length = -1 or (c.max_length < 100 and c.max_length > 0)))) \ No newline at end of file