From 6697dcb9451a34bbfd979b2a1ca983ae982d98bb Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 13 Aug 2026 09:37:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E8=B0=83=E7=A0=94=E8=B7=AF=E5=BE=84=EF=BC=8CSPM=E9=A9=B3?= =?UTF-8?q?=E5=9B=9E=E9=80=BB=E8=BE=91,=20=E9=82=AE=E4=BB=B6=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E5=AF=B9=E5=BA=94=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consumer/SiteSurverEmailConsumer.cs | 63 +++++++++++++------ .../SiteSurvey/TrialSiteSurveyService.cs | 57 +++++++++-------- 2 files changed, 77 insertions(+), 43 deletions(-) diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs index eaa991375..83d8e0eed 100644 --- a/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs +++ b/IRaCIS.Core.Application/MassTransit/Consumer/SiteSurverEmailConsumer.cs @@ -269,9 +269,45 @@ public class SiteSurverRejectedEventConsumer( if (context.Message.IsHaveSPMOrCPM) { - //PM 驳回到SPM - if (siteSurveyInfo.State == TrialSiteSurveyEnum.CRCSubmitted) + ////PM 驳回到SPM + //if (siteSurveyInfo.State == TrialSiteSurveyEnum.CRCSubmitted) + //{ + + // var sPMOrCPMList = _trialUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialUser.IsDeleted == false) + // .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) + // .Select(t => new { t.UserRole.IdentityUser.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum, t.UserRole.IdentityUser.UserWorkLanguage }).ToList(); + + // var lan_SPMOrCPMList = sPMOrCPMList.Where(t => t.UserWorkLanguage == workLanguage); + + // foreach (var user in lan_SPMOrCPMList) + // { + // messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail)); + // } + + // toUserName = string.Join('、', lan_SPMOrCPMList.Select(t => t.FullName)); + + //} + ////SPM 驳回到CRC + //else if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) + //{ + // //使用中心国家语言 一致才发送 + // if ((siteInfo.Country == StaticData.SiteCountry.US && isEn_US) || (siteInfo.Country == StaticData.SiteCountry.CN && isEn_US == false)) + // { + // messageToSend.To.Add(new MailboxAddress(toUserName, siteSurveyInfo.Email)); + + // } + + //} + + // PM 驳回到CRC + if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) { + //使用中心国家语言 一致才发送 + if ((siteInfo.Country == StaticData.SiteCountry.US && isEn_US) || (siteInfo.Country == StaticData.SiteCountry.CN && isEn_US == false)) + { + messageToSend.To.Add(new MailboxAddress(toUserName, siteSurveyInfo.Email)); + + } var sPMOrCPMList = _trialUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialUser.IsDeleted == false) .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) @@ -281,24 +317,10 @@ public class SiteSurverRejectedEventConsumer( foreach (var user in lan_SPMOrCPMList) { - messageToSend.To.Add(new MailboxAddress(user.FullName, user.EMail)); - } - - toUserName = string.Join('、', lan_SPMOrCPMList.Select(t => t.FullName)); - - } - //SPM 驳回到CRC - else if (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit) - { - //使用中心国家语言 一致才发送 - if ((siteInfo.Country == StaticData.SiteCountry.US && isEn_US) || (siteInfo.Country == StaticData.SiteCountry.CN && isEn_US == false)) - { - messageToSend.To.Add(new MailboxAddress(toUserName, siteSurveyInfo.Email)); - + messageToSend.Cc.Add(new MailboxAddress(user.FullName, user.EMail)); } } - } else { @@ -312,6 +334,11 @@ public class SiteSurverRejectedEventConsumer( } } + Uri uri = new Uri(_systemEmailConfig.SiteUrl); + + // 获取 Scheme + Host(不包含路径) + string baseUrl = uri.GetLeftPart(UriPartial.Authority); + //发件地址 messageToSend.From.Add(new MailboxAddress(_systemEmailConfig.FromName, _systemEmailConfig.FromEmail)); @@ -330,7 +357,7 @@ public class SiteSurverRejectedEventConsumer( siteInfo.TrialSiteCode, //中心编号 siteInfo.TrialSiteAliasName,//中心名称 siteSurveyInfo.LatestBackReason, //驳回原因 - _systemEmailConfig.SiteUrl, //链接 + $"{baseUrl}/researchLogin?trialId={trialId}", //链接 (siteSurveyInfo.State == TrialSiteSurveyEnum.ToSubmit ? "inline - block" : "none") ); diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 0bdb9d158..1680baf23 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -496,40 +496,47 @@ namespace IRaCIS.Core.Application.Contracts } else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) { - var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey); + // var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey); - var hasSPMOrCPM = await _trialRepository.Where(t => t.Id == trialSiteSubmitBackCommand.TrialId).AnyAsync(t => t.TrialIdentityUserList.SelectMany(t => t.TrialUserRoleList).Any(t => - t.UserRole.IdentityUser.Status == UserStateEnum.Enable - && t.UserRole.IsUserRoleDisabled == false - && (t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM)) - ); + // var hasSPMOrCPM = await _trialRepository.Where(t => t.Id == trialSiteSubmitBackCommand.TrialId).AnyAsync(t => t.TrialIdentityUserList.SelectMany(t => t.TrialUserRoleList).Any(t => + //t.UserRole.IdentityUser.Status == UserStateEnum.Enable + //&& t.UserRole.IsUserRoleDisabled == false + //&& (t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM)) + //); - var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM; + // var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM; - if (isSPMjoin) - { - survey.State = TrialSiteSurveyEnum.CRCSubmitted; + // if (isSPMjoin) + // { + // survey.State = TrialSiteSurveyEnum.CRCSubmitted; - survey.ReviewerUserId = null; - survey.ReviewerTime = null; - } - else - { - survey.State = TrialSiteSurveyEnum.ToSubmit; + // survey.ReviewerUserId = null; + // survey.ReviewerTime = null; + // } + // else + // { + // survey.State = TrialSiteSurveyEnum.ToSubmit; - survey.PreliminaryUserId = null; - survey.ReviewerUserId = null; - survey.PreliminaryTime = null; - survey.ReviewerTime = null; + // survey.PreliminaryUserId = null; + // survey.ReviewerUserId = null; + // survey.PreliminaryTime = null; + // survey.ReviewerTime = null; - } + // } + + survey.State = TrialSiteSurveyEnum.ToSubmit; + + survey.PreliminaryUserId = null; + survey.ReviewerUserId = null; + survey.PreliminaryTime = null; + survey.ReviewerTime = null; + - } var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = _userInfo.FullName, UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Reject, Reason = survey.LatestBackReason, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name =$"{_userInfo.FullName} ({_userInfo.UserName})" , UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Reject, Reason = survey.LatestBackReason, Json = info.ToJsonStr() }); await _trialSiteSurveyRepository.SaveChangesAsync(); @@ -923,7 +930,7 @@ namespace IRaCIS.Core.Application.Contracts var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = _userInfo.FullName, UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})", UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); } else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) @@ -941,7 +948,7 @@ namespace IRaCIS.Core.Application.Contracts //审批调研表日志 var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = _userInfo.FullName, UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})", UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Approved, Json = info.ToJsonStr() }); } From 2021c1f4a95491ea198ee30855b578fac36e5f9c Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 13 Aug 2026 10:30:52 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E8=B0=83=E7=A0=94=E5=AF=BC=E8=A1=A8?= =?UTF-8?q?=E5=88=9D=E6=AD=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/IRaCIS.Core.API.xml | 7 ++ .../IRaCIS.Core.Application.xml | 84 ++++++++++++++++++- .../Common/Export/ExcelExportService.cs | 27 +++--- .../SiteSurvey/TrialSiteSurveyService.cs | 5 +- 4 files changed, 108 insertions(+), 15 deletions(-) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 2566f292e..89b498ac5 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -213,6 +213,13 @@ + + + 提交阅片裁判表单 + + + + 配置 基础逻辑信息并确认 diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index b2144df91..1c926f1a1 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -10532,6 +10532,21 @@ 默认SegmentName + + + 仲裁模式 + + + + + 裁判规则 + + + + + 仲裁对象 + + 返回对象 @@ -12338,6 +12353,21 @@ 仲裁规则 + + + 仲裁模式 + + + + + 裁判规则 + + + + + 裁判任务生成 + + 需要 @@ -14368,6 +14398,11 @@ + + + 编辑裁判规则配置 + + 新增修改项目问题标准(项目) @@ -14469,11 +14504,22 @@ 阅片问题.标准 - + 阅片问题.标准 + + + 获取项目阅片标准各访视的裁判规则配置。 + 未配置规则的访视问题也会返回,供前端直接进行配置。 + + + + + 编辑项目阅片标准各访视的裁判规则配置。 + + 设置项目问题导出 @@ -14843,7 +14889,7 @@ - + IR影像阅片 @@ -15280,6 +15326,30 @@ + + + 获取单访视裁判答案 + + + + + + + 获取裁判表单 + + + + + 编辑裁判表单 + + + + + 提交裁判表单 + + + + 获取裁判阅片任务信息 @@ -15313,6 +15383,16 @@ + + + 应用访视裁判规则 以及剔除排除的问题 + + + + + 应用访视裁判规则 以及剔除排除的问题 + + 发送微信通知 diff --git a/IRaCIS.Core.Application/Service/Common/Export/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/Export/ExcelExportService.cs index f33aeb28a..6ec1759e7 100644 --- a/IRaCIS.Core.Application/Service/Common/Export/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/Export/ExcelExportService.cs @@ -162,17 +162,20 @@ namespace IRaCIS.Core.Application.Service.Common var fields = new List<(string FieldName, int excelIndex)>() { - ("Parameters", 5), - ("ManufacturerType", 6), - ("ScannerType", 7), - ("MagneticFieldStrengthType", 8), - ("BodyCoilChannelCount", 9), - ("HasDedicatedPdfFatQuantificationSequence", 10), - ("PdfFatQuantificationSequenceType", 11), - ("OtherSequenceSpecification", 11), - ("HasT2R2Correction", 12), - ("CanFullyExportPdfParameterMapsAndRawDicom", 13), - ("Note", 14), + ("AverageEngravingCycle", 7), + ("IsConfirmImagingTechnologist", 8), + ("EfficacyEvaluatorType", 9), + ("IsFollowStudyParameters", 10), + ("NotFollowReson", 10), + + + ("IsRoutineMRIPDEE", 11), + ("MRIPDFFScanTime", 12), + ("MRIPDFFLeadTime", 13), + ("MRIPDFFOther", 14), + ("AssignFixedTechnologists", 15), + ("ISStrictManualBurnFlag", 16), + ("NotStrictManualBurnFlagReason",16) }; @@ -191,7 +194,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.TrialSiteSurvey_Info_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SiteSurveyEquipmentDto)); + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSiteSurvey_Info_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(SiteSurveyEquipmentDto), removeExcelIndexList: columnsToDelete); } diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 1680baf23..dc879d512 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -563,6 +563,9 @@ namespace IRaCIS.Core.Application.Contracts survey.IsDeleted = true; + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})" , OptType = SiteSurveyOptTyp.Over }); + + await _trialSiteSurveyRepository.SaveChangesAsync(); return ResponseOutput.Ok(); @@ -695,7 +698,7 @@ namespace IRaCIS.Core.Application.Contracts } //更新调研表日志 - 老的调研表 - //currentLatest.SiteSurveyLogList.Add(new SiteSurveyLog() { Name = userInfo.ReplaceUserEmailOrPhone, OptType = SiteSurveyOptTyp.Over }); + currentLatest.SiteSurveyLogList.Add(new SiteSurveyLog() { Name = userInfo.ReplaceUserEmailOrPhone, OptType = SiteSurveyOptTyp.Over }); var copy = currentLatest.Clone(); From fc8f5224805d9e7cbb86f33dc2a82b60102b470f Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 13 Aug 2026 10:49:36 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E6=8B=B7=E8=B4=9D=E6=97=A5=E5=BF=97bug?= =?UTF-8?q?=E3=80=81=E9=82=AE=E7=AE=B1bug=E3=80=81=E5=BA=9F=E9=99=A4?= =?UTF-8?q?=E6=8B=B7=E8=B4=9D=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/IRaCIS.Core.API.xml | 7 -- .../IRaCIS.Core.Application.xml | 84 +------------------ .../SiteSurvey/TrialSiteSurveyService.cs | 14 ++-- 3 files changed, 11 insertions(+), 94 deletions(-) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index 89b498ac5..2566f292e 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -213,13 +213,6 @@ - - - 提交阅片裁判表单 - - - - 配置 基础逻辑信息并确认 diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 1c926f1a1..b2144df91 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -10532,21 +10532,6 @@ 默认SegmentName - - - 仲裁模式 - - - - - 裁判规则 - - - - - 仲裁对象 - - 返回对象 @@ -12353,21 +12338,6 @@ 仲裁规则 - - - 仲裁模式 - - - - - 裁判规则 - - - - - 裁判任务生成 - - 需要 @@ -14398,11 +14368,6 @@ - - - 编辑裁判规则配置 - - 新增修改项目问题标准(项目) @@ -14504,22 +14469,11 @@ 阅片问题.标准 - + 阅片问题.标准 - - - 获取项目阅片标准各访视的裁判规则配置。 - 未配置规则的访视问题也会返回,供前端直接进行配置。 - - - - - 编辑项目阅片标准各访视的裁判规则配置。 - - 设置项目问题导出 @@ -14889,7 +14843,7 @@ - + IR影像阅片 @@ -15326,30 +15280,6 @@ - - - 获取单访视裁判答案 - - - - - - - 获取裁判表单 - - - - - 编辑裁判表单 - - - - - 提交裁判表单 - - - - 获取裁判阅片任务信息 @@ -15383,16 +15313,6 @@ - - - 应用访视裁判规则 以及剔除排除的问题 - - - - - 应用访视裁判规则 以及剔除排除的问题 - - 发送微信通知 diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index dc879d512..b66405778 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -3,6 +3,7 @@ // 生成时间 2021-12-23 13:20:59 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- +using DocumentFormat.OpenXml.Office2013.Excel; using DocumentFormat.OpenXml.Spreadsheet; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Auth; @@ -536,7 +537,7 @@ namespace IRaCIS.Core.Application.Contracts } var info = await GetSiteSurveyInfo(trialSiteSurveyId, trialId); - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name =$"{_userInfo.FullName} ({_userInfo.UserName})" , UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Reject, Reason = survey.LatestBackReason, Json = info.ToJsonStr() }); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})", UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Reject, Reason = survey.LatestBackReason, Json = info.ToJsonStr() }); await _trialSiteSurveyRepository.SaveChangesAsync(); @@ -563,7 +564,8 @@ namespace IRaCIS.Core.Application.Contracts survey.IsDeleted = true; - await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})" , OptType = SiteSurveyOptTyp.Over }); + var info = await GetSiteSurveyInfo(trialSiteSurveyId, survey.TrialId); + await _siteSurveyLogRepository.AddAsync(new SiteSurveyLog() { TrialSiteSurveyId = trialSiteSurveyId, Name = $"{_userInfo.FullName} ({_userInfo.UserName})", UserType = (UserTypeEnum)_userInfo.UserTypeEnumInt, OptType = SiteSurveyOptTyp.Over, Json = info.ToJsonStr() }); await _trialSiteSurveyRepository.SaveChangesAsync(); @@ -698,7 +700,8 @@ namespace IRaCIS.Core.Application.Contracts } //更新调研表日志 - 老的调研表 - currentLatest.SiteSurveyLogList.Add(new SiteSurveyLog() { Name = userInfo.ReplaceUserEmailOrPhone, OptType = SiteSurveyOptTyp.Over }); + var info1 = await GetSiteSurveyInfo(currentLatest.Id, currentLatest.TrialId); + currentLatest.SiteSurveyLogList.Add(new SiteSurveyLog() { Name = userInfo.ReplaceUserEmailOrPhone, OptType = SiteSurveyOptTyp.Over, Json = info1.ToJsonStr() }); var copy = currentLatest.Clone(); @@ -719,7 +722,8 @@ namespace IRaCIS.Core.Application.Contracts //更新调研表日志 var info = await GetSiteSurveyInfo(currentLatest.Id, currentLatest.TrialId); - copy.SiteSurveyLogList.Add(new SiteSurveyLog() { Name = userInfo.ReplaceUserEmailOrPhone, OptType = SiteSurveyOptTyp.Update, OriginTrialSiteSurveyId = currentLatest.Id, Json = info.ToJsonStr() }); + copy.SiteSurveyLogList.ForEach(t => { t.Id = Guid.Empty; }); + copy.SiteSurveyLogList.Add(new SiteSurveyLog() { Name = userInfo.EmailOrPhone, OptType = SiteSurveyOptTyp.Update, OriginTrialSiteSurveyId = currentLatest.Id, Json = info.ToJsonStr() }); } @@ -1468,7 +1472,7 @@ namespace IRaCIS.Core.Application.Contracts { return _siteSurveyLogRepository.Where(t => t.TrialSiteSurveyId == inQuery.TrialSiteSurveyId) .WhereIf(inQuery.Id != null, t => t.Id == inQuery.Id) - .ProjectTo(_mapper.ConfigurationProvider).OrderBy(t=>t.CreateTime).ToList(); + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(t => t.CreateTime).ToList(); } /// From f3f24e43e31e4e43a9c86f14cc8839a3645cb316 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 13 Aug 2026 11:10:15 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=B0=83=E7=A0=94?= =?UTF-8?q?=E8=A1=A8=20=E6=B8=85=E9=99=A4=20=E5=88=9D=E5=AE=A1=20=E5=A4=8D?= =?UTF-8?q?=E5=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/SiteSurvey/TrialSiteSurveyService.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index b66405778..fd935ace9 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -5,6 +5,7 @@ //-------------------------------------------------------------------- using DocumentFormat.OpenXml.Office2013.Excel; using DocumentFormat.OpenXml.Spreadsheet; +using DocumentFormat.OpenXml.Vml; using IRaCIS.Application.Contracts; using IRaCIS.Core.Application.Auth; using IRaCIS.Core.Application.Helper; @@ -714,6 +715,11 @@ namespace IRaCIS.Core.Application.Contracts copy.Id = Guid.Empty; copy.CreateTime = DateTime.Now; + copy.PreliminaryUserId = null; + copy.ReviewerUserId = null; + copy.PreliminaryTime = null; + copy.ReviewerTime = null; + if (userInfo.ReplaceUserEmailOrPhone != userInfo.EmailOrPhone) { copy.UserName = String.Empty;