Compare commits
73 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e66ea43d7 | |||
| 68d69181a9 | |||
| b879b3f2c7 | |||
| 4fd77ce70d | |||
| 8213c6d10f | |||
| b79b4567b4 | |||
| 8c5b759a92 | |||
| ab1e33a799 | |||
| 824b65d5ee | |||
| c68004b804 | |||
| d5cd8dc338 | |||
| 1fef5509d1 | |||
| 06d12ce709 | |||
| ad7ac80444 | |||
| 29d0ebdb7c | |||
| 9bcaa07c1a | |||
| bf5f56f5f2 | |||
| c1c2b59641 | |||
| 33820c2acb | |||
| 9814f63246 | |||
| 5e6c018199 | |||
| b24751287c | |||
| 759cc6c1be | |||
| 1a929ce2ca | |||
| 1e4571a814 | |||
| 848670d128 | |||
| 6d9b5fdb2d | |||
| ab00d64725 | |||
| 5e36054ee9 | |||
| 2b11042f35 | |||
| e9e5075c1c | |||
| 9149dd6cf6 | |||
| 24bfb4920c | |||
| 553ad4760c | |||
| 5acd56689b | |||
| 5f0643d4d4 | |||
| 17e4ed38be | |||
| c49f16b055 | |||
| aa42d64cac | |||
| 8f0ef86ab9 | |||
| c17b2f6bac | |||
| be498f2329 | |||
| fea3d8d415 | |||
| bffc8626c7 | |||
| 1efe1228ac | |||
| f900b811c7 | |||
| a5f7e03f6c | |||
| 7aba4adc14 | |||
| 12c8c641ea | |||
| 977adf3153 | |||
| 409b76df26 | |||
| 2d9ebe7094 | |||
| 71e797cf7d | |||
| f781027388 | |||
| 56e316e6a1 | |||
| edef3e1990 | |||
| d6d0965467 | |||
| 62f888710c | |||
| 58e8c2392f | |||
| 0e1310324d | |||
| efcda61104 | |||
| 97133a5554 | |||
| 577ed42f97 | |||
| 8f704c4617 | |||
| a03d7f55c7 | |||
| 2bbc101f95 | |||
| 2b11e9165f | |||
| b25dec68cb | |||
| 2f57238f66 | |||
| 8239061a84 | |||
| a43ebc016a | |||
| dd6419dc44 | |||
| 54a9cfbb8e |
@@ -14,9 +14,9 @@
|
|||||||
<PackageReference Include="AWSSDK.SecurityToken" Version="3.7.400.36" />
|
<PackageReference Include="AWSSDK.SecurityToken" Version="3.7.400.36" />
|
||||||
<PackageReference Include="DistributedLock.Core" Version="1.0.7" />
|
<PackageReference Include="DistributedLock.Core" Version="1.0.7" />
|
||||||
<PackageReference Include="DistributedLock.SqlServer" Version="1.0.5" />
|
<PackageReference Include="DistributedLock.SqlServer" Version="1.0.5" />
|
||||||
<PackageReference Include="fo-dicom" Version="5.1.3" />
|
<PackageReference Include="fo-dicom" Version="5.2.1" />
|
||||||
<PackageReference Include="fo-dicom.Codecs" Version="5.15.1" />
|
<PackageReference Include="fo-dicom.Codecs" Version="5.16.0" />
|
||||||
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.1.3" />
|
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.2.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
||||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||||
<PackageReference Include="Minio" Version="6.0.3" />
|
<PackageReference Include="Minio" Version="6.0.3" />
|
||||||
|
|||||||
@@ -69,6 +69,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.14" />
|
||||||
|
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
@@ -79,8 +80,6 @@
|
|||||||
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
|
<PackageReference Include="Hangfire.Dashboard.BasicAuthorization" Version="1.0.2" />
|
||||||
<PackageReference Include="Hangfire.InMemory" Version="1.0.0" />
|
<PackageReference Include="Hangfire.InMemory" Version="1.0.0" />
|
||||||
<PackageReference Include="Hangfire.SqlServer" Version="1.8.14" />
|
<PackageReference Include="Hangfire.SqlServer" Version="1.8.14" />
|
||||||
<PackageReference Include="Invio.Extensions.Authentication.JwtBearer" Version="2.0.1" />
|
|
||||||
<PackageReference Include="LogDashboard" Version="1.4.8" />
|
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.10" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="8.0.3" />
|
<PackageReference Include="Serilog.AspNetCore" Version="8.0.3" />
|
||||||
<PackageReference Include="Serilog.Formatting.Compact" Version="3.0.0" />
|
<PackageReference Include="Serilog.Formatting.Compact" Version="3.0.0" />
|
||||||
@@ -114,6 +113,12 @@
|
|||||||
</Content>
|
</Content>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="Resources\GeoLite2-City.mmdb">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
<VisualStudio>
|
<VisualStudio>
|
||||||
<UserProperties properties_4launchsettings_1json__JsonSchema="" />
|
<UserProperties properties_4launchsettings_1json__JsonSchema="" />
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ using IRaCIS.Core.Application.Service;
|
|||||||
using IRaCIS.Core.Application.Service.BusinessFilter;
|
using IRaCIS.Core.Application.Service.BusinessFilter;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
using IRaCIS.Core.Infrastructure.Extention;
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
using LogDashboard;
|
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
using MassTransit.NewIdProviders;
|
using MassTransit.NewIdProviders;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
@@ -39,7 +38,7 @@ var enviromentName = config["ASPNETCORE_ENVIRONMENT"];
|
|||||||
|
|
||||||
var openSwaggerStr = config["ASPNETCORE_OpenSwagger"];
|
var openSwaggerStr = config["ASPNETCORE_OpenSwagger"];
|
||||||
|
|
||||||
var isOpenSwagger= openSwaggerStr == null&& openSwaggerStr?.ToLower()=="true";
|
var isOpenSwagger= openSwaggerStr == null|| openSwaggerStr?.ToLower()=="true";
|
||||||
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(enviromentName))
|
if (string.IsNullOrWhiteSpace(enviromentName))
|
||||||
@@ -136,7 +135,7 @@ builder.Services.AddFusionCache();
|
|||||||
builder.Services.AddhangfireSetup(_configuration);
|
builder.Services.AddhangfireSetup(_configuration);
|
||||||
|
|
||||||
//Serilog 日志可视化 LogDashboard日志
|
//Serilog 日志可视化 LogDashboard日志
|
||||||
builder.Services.AddLogDashboardSetup();
|
//builder.Services.AddLogDashboardSetup();
|
||||||
|
|
||||||
//Dicom影像渲染图片 跨平台
|
//Dicom影像渲染图片 跨平台
|
||||||
builder.Services.AddDicomSetup();
|
builder.Services.AddDicomSetup();
|
||||||
@@ -221,7 +220,7 @@ app.UseResponseCompression();
|
|||||||
app.UseStaticFiles();
|
app.UseStaticFiles();
|
||||||
|
|
||||||
//LogDashboard
|
//LogDashboard
|
||||||
app.UseLogDashboard("/LogDashboard");
|
//app.UseLogDashboard("/LogDashboard");
|
||||||
|
|
||||||
//hangfire
|
//hangfire
|
||||||
app.UseHangfireConfig(env);
|
app.UseHangfireConfig(env);
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 73 MiB |
@@ -1,15 +1,15 @@
|
|||||||
using LogDashboard;
|
//using LogDashboard;
|
||||||
using LogDashboard.Authorization;
|
//using LogDashboard.Authorization;
|
||||||
|
|
||||||
namespace IRaCIS.Core.API.Filter
|
//namespace IRaCIS.Core.API.Filter
|
||||||
{
|
//{
|
||||||
|
|
||||||
public class LogDashBoardAuthFilter : ILogDashboardAuthorizationFilter
|
// public class LogDashBoardAuthFilter : ILogDashboardAuthorizationFilter
|
||||||
{
|
// {
|
||||||
//在此可以利用 本系统的UerTypeEnum 判断
|
// //在此可以利用 本系统的UerTypeEnum 判断
|
||||||
public bool Authorization(LogDashboardContext context)
|
// public bool Authorization(LogDashboardContext context)
|
||||||
{
|
// {
|
||||||
return context.HttpContext.User.Identity.IsAuthenticated;
|
// return context.HttpContext.User.Identity.IsAuthenticated;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
@@ -1,25 +1,25 @@
|
|||||||
|
|
||||||
using LogDashboard;
|
//using LogDashboard;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
//using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace IRaCIS.Core.API
|
//namespace IRaCIS.Core.API
|
||||||
{
|
//{
|
||||||
public static class LogDashboardSetup
|
// public static class LogDashboardSetup
|
||||||
{
|
// {
|
||||||
public static void AddLogDashboardSetup(this IServiceCollection services)
|
// public static void AddLogDashboardSetup(this IServiceCollection services)
|
||||||
{
|
// {
|
||||||
//IIS 配置虚拟路径部署,会出现IIS静态文件404
|
// //IIS 配置虚拟路径部署,会出现IIS静态文件404
|
||||||
services.AddLogDashboard(opt =>
|
// services.AddLogDashboard(opt =>
|
||||||
{
|
// {
|
||||||
//opt.PathMatch = "/api/LogDashboard";
|
// //opt.PathMatch = "/api/LogDashboard";
|
||||||
opt.PathMatch = "/LogDashboard";
|
// opt.PathMatch = "/LogDashboard";
|
||||||
|
|
||||||
//opt.AddAuthorizationFilter(new LogDashboardBasicAuthFilter("admin", "zhizhun2018"));
|
// //opt.AddAuthorizationFilter(new LogDashboardBasicAuthFilter("admin", "zhizhun2018"));
|
||||||
|
|
||||||
//opt.AddAuthorizationFilter(new LogDashBoardAuthFilter());
|
// //opt.AddAuthorizationFilter(new LogDashBoardAuthFilter());
|
||||||
|
|
||||||
});
|
// });
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -16,30 +16,30 @@ namespace IRaCIS.Core.API;
|
|||||||
|
|
||||||
public enum SwaggerVersion
|
public enum SwaggerVersion
|
||||||
{
|
{
|
||||||
[Description("文件记录")]
|
[Description("文件记录(FileRecord)")]
|
||||||
FileRecord = -1,
|
FileRecord = -1,
|
||||||
|
|
||||||
[Description("医生模块")]
|
[Description("医生模块(Reviewer)")]
|
||||||
Reviewer = 1,
|
Reviewer = 1,
|
||||||
[Description("项目模块")]
|
[Description("项目模块(Trial)")]
|
||||||
Trial = 2,
|
Trial = 2,
|
||||||
[Description("入组模块")]
|
[Description("入组模块(Enroll)")]
|
||||||
Enroll = 3,
|
Enroll = 3,
|
||||||
[Description("工作量模块")]
|
[Description("工作量模块(Workload)")]
|
||||||
Workload = 4,
|
Workload = 4,
|
||||||
[Description("通用信息获取")]
|
[Description("通用信息获取(Common)")]
|
||||||
Common = 5,
|
Common = 5,
|
||||||
[Description("机构信息模块")]
|
[Description("机构信息模块(Institution)")]
|
||||||
Institution = 6,
|
Institution = 6,
|
||||||
[Description("统计模块")]
|
[Description("统计模块(DashboardStatistics)")]
|
||||||
DashboardStatistics = 7,
|
DashboardStatistics = 7,
|
||||||
[Description("财务模块")]
|
[Description("财务模块(Financial)")]
|
||||||
Financial = 8,
|
Financial = 8,
|
||||||
[Description("管理模块")]
|
[Description("管理模块(Management)")]
|
||||||
Management =9,
|
Management =9,
|
||||||
[Description("影像模块")]
|
[Description("影像模块(Image)")]
|
||||||
Image =10,
|
Image =10,
|
||||||
[Description("读片模块")]
|
[Description("读片模块(Reading)")]
|
||||||
Reading =11
|
Reading =11
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"RemoteNew": "Server=47.117.164.182,1434;Database=Event_IRC;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
"RemoteNew": "Server=101.132.253.119,1435;Database=irc_Prpd_bak;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||||
"Hangfire": "Server=47.117.164.182,1434;Database=Event_IRC_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
"Hangfire": "Server=101.132.253.119,1435;Database=irc_Hangfire_bak;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
"ObjectStoreService": {
|
"ObjectStoreService": {
|
||||||
"ObjectStoreUse": "AliyunOSS",
|
"ObjectStoreUse": "AliyunOSS",
|
||||||
|
|||||||
@@ -0,0 +1,42 @@
|
|||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using MaxMind.GeoIP2;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Application.Helper
|
||||||
|
{
|
||||||
|
public static class IPCityHelper
|
||||||
|
{
|
||||||
|
|
||||||
|
public static string GetCityResponse(string ip)
|
||||||
|
{
|
||||||
|
var path = Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources, "GeoLite2-City.mmdb");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var reader = new DatabaseReader(path))
|
||||||
|
{
|
||||||
|
|
||||||
|
var city = reader.City(ip);
|
||||||
|
|
||||||
|
//Console.WriteLine(city.Country.IsoCode); // 'US' 'CN'
|
||||||
|
//Console.WriteLine(city.Country.Name); // 'United States' 'China'
|
||||||
|
////Console.WriteLine(city.Country.Names["zh-CN"]); // '美国'
|
||||||
|
//Console.WriteLine(city.MostSpecificSubdivision.Name); // 'Minnesota' 'Hubei'
|
||||||
|
//Console.WriteLine(city.City.Name); // 'Minneapolis' 'WUHan'
|
||||||
|
|
||||||
|
return $"{city.Country.Name} | {city.MostSpecificSubdivision.Name} | {city.City.Name}";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
return $"UN | UN | {ip}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -15,14 +15,20 @@ public static class ImageHelper
|
|||||||
|
|
||||||
fileStorePath = fileStorePath ?? filePath + ".preview.jpeg";
|
fileStorePath = fileStorePath ?? filePath + ".preview.jpeg";
|
||||||
|
|
||||||
using (var image = SixLabors.ImageSharp.Image.Load(filePath))
|
// 读取 DICOM 文件
|
||||||
{
|
var dicomImage = new DicomImage(filePath);
|
||||||
|
|
||||||
|
// 渲染 DICOM 图像到 ImageSharp 格式
|
||||||
|
using (var image = dicomImage.RenderImage().AsSharpImage())
|
||||||
|
{
|
||||||
|
// 生成缩略图(调整大小)
|
||||||
image.Mutate(x => x.Resize(500, 500));
|
image.Mutate(x => x.Resize(500, 500));
|
||||||
|
|
||||||
image.Save(fileStorePath);
|
// 保存缩略图为 JPEG
|
||||||
|
image.Save(fileStorePath, new JpegEncoder());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -37,31 +37,32 @@
|
|||||||
<PackageReference Include="AWSSDK.SecurityToken" Version="3.7.400.36" />
|
<PackageReference Include="AWSSDK.SecurityToken" Version="3.7.400.36" />
|
||||||
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
|
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" />
|
||||||
<PackageReference Include="AWSSDK.S3" Version="3.7.405" />
|
<PackageReference Include="AWSSDK.S3" Version="3.7.405" />
|
||||||
<PackageReference Include="DocX" Version="3.0.1" />
|
<PackageReference Include="DocX" Version="4.0.25105.5786" />
|
||||||
<PackageReference Include="FreeSpire.Doc" Version="12.2.0" />
|
<PackageReference Include="FreeSpire.Doc" Version="12.2.0" />
|
||||||
<PackageReference Include="Hangfire.Core" Version="1.8.14" />
|
<PackageReference Include="Hangfire.Core" Version="1.8.14" />
|
||||||
<PackageReference Include="ExcelDataReader" Version="3.7.0" />
|
<PackageReference Include="ExcelDataReader" Version="3.7.0" />
|
||||||
<PackageReference Include="ExcelDataReader.DataSet" Version="3.7.0" />
|
<PackageReference Include="ExcelDataReader.DataSet" Version="3.7.0" />
|
||||||
<PackageReference Include="DistributedLock.Redis" Version="1.0.3" />
|
<PackageReference Include="DistributedLock.Redis" Version="1.0.3" />
|
||||||
<PackageReference Include="DistributedLock.SqlServer" Version="1.0.5" />
|
<PackageReference Include="DistributedLock.SqlServer" Version="1.0.5" />
|
||||||
<PackageReference Include="fo-dicom" Version="5.1.3" />
|
<PackageReference Include="fo-dicom" Version="5.2.1" />
|
||||||
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.1.3" />
|
<PackageReference Include="fo-dicom.Imaging.ImageSharp" Version="5.2.1" />
|
||||||
<PackageReference Include="fo-dicom.Codecs" Version="5.15.1" />
|
<PackageReference Include="fo-dicom.Codecs" Version="5.16.0" />
|
||||||
<PackageReference Include="IP2Region.Net" Version="2.0.2" />
|
<PackageReference Include="IP2Region.Net" Version="2.0.2" />
|
||||||
<PackageReference Include="MailKit" Version="4.7.1.1" />
|
<PackageReference Include="MailKit" Version="4.7.1.1" />
|
||||||
<PackageReference Include="Masa.Contrib.Service.MinimalAPIs" Version="1.0.0" />
|
<PackageReference Include="Masa.Contrib.Service.MinimalAPIs" Version="1.0.0" />
|
||||||
|
<PackageReference Include="MaxMind.GeoIP2" Version="5.2.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.10" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.10" />
|
||||||
<PackageReference Include="MimeKit" Version="4.7.1" />
|
<PackageReference Include="MimeKit" Version="4.7.1" />
|
||||||
<PackageReference Include="MiniExcel" Version="1.34.2" />
|
<PackageReference Include="MiniExcel" Version="1.34.2" />
|
||||||
<PackageReference Include="Minio" Version="6.0.3" />
|
<PackageReference Include="Minio" Version="6.0.3" />
|
||||||
<PackageReference Include="MiniWord" Version="0.8.0" />
|
<PackageReference Include="MiniWord" Version="0.9.2" />
|
||||||
<PackageReference Include="My.Extensions.Localization.Json" Version="3.3.0">
|
<PackageReference Include="My.Extensions.Localization.Json" Version="3.3.0">
|
||||||
<TreatAsUsed>true</TreatAsUsed>
|
<TreatAsUsed>true</TreatAsUsed>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="NPOI" Version="2.7.1" />
|
<PackageReference Include="NPOI" Version="2.7.1" />
|
||||||
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.2" />
|
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.2" />
|
||||||
<PackageReference Include="RestSharp" Version="112.1.0" />
|
<PackageReference Include="RestSharp" Version="112.1.0" />
|
||||||
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.5" />
|
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" />
|
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="8.0.2" />
|
||||||
<PackageReference Include="ZiggyCreatures.FusionCache" Version="1.4.0" />
|
<PackageReference Include="ZiggyCreatures.FusionCache" Version="1.4.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1383,6 +1383,99 @@
|
|||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.Service.AuditDocumentService">
|
||||||
|
<summary>
|
||||||
|
稽查文档
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.AuditDocument},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
||||||
|
<summary>
|
||||||
|
稽查文档
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditDocumentList(IRaCIS.Core.Application.ViewModel.AuditDocumentQuery)">
|
||||||
|
<summary>
|
||||||
|
获取稽查文档
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.UpdateAuditDocument(IRaCIS.Core.Application.ViewModel.AuditDocumentUpdateDto)">
|
||||||
|
<summary>
|
||||||
|
修改稽查文档
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.AddAuditDocument(System.Collections.Generic.List{IRaCIS.Core.Application.ViewModel.AuditDocumentAddOrEdit})">
|
||||||
|
<summary>
|
||||||
|
新增稽查文档
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.AddOrUpdateAuditDocument(IRaCIS.Core.Application.ViewModel.AuditDocumentAddOrEdit)">
|
||||||
|
<summary>
|
||||||
|
通用方法
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetBreadcrumbData(IRaCIS.Core.Application.ViewModel.GetBreadcrumbDataInDto)">
|
||||||
|
<summary>
|
||||||
|
获取面包屑导航
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetAuditDocumentData(IRaCIS.Core.Application.ViewModel.GetAuditDocumentDataInDto)">
|
||||||
|
<summary>
|
||||||
|
获取文件树形结构 (传Id 根节点就是自己)
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.DeleteAuditDocument(IRaCIS.Core.Application.ViewModel.DeleteAuditDocumentInDto)">
|
||||||
|
<summary>
|
||||||
|
删除稽查文档
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.MovieFileOrFolder(IRaCIS.Core.Application.ViewModel.MovieFileOrFolderInDto)">
|
||||||
|
<summary>
|
||||||
|
移动文件或者文件夹 到其他文件夹
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.CopyFileOrFolder(IRaCIS.Core.Application.ViewModel.MovieFileOrFolderInDto)">
|
||||||
|
<summary>
|
||||||
|
复制文件或者文件夹
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.GetHistoricalVersion(IRaCIS.Core.Application.ViewModel.GetHistoricalVersionInDto)">
|
||||||
|
<summary>
|
||||||
|
获取历史版本
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetCurrentVersion(IRaCIS.Core.Application.ViewModel.SetCurrentVersionInDto)">
|
||||||
|
<summary>
|
||||||
|
把历史版本设置为当前版本
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.AuditDocumentService.SetIsAuthorization(IRaCIS.Core.Application.ViewModel.SetIsAuthorizationInDto)">
|
||||||
|
<summary>
|
||||||
|
设置是否授权
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Service.SysFileTypeService">
|
<member name="T:IRaCIS.Core.Application.Service.SysFileTypeService">
|
||||||
<summary>
|
<summary>
|
||||||
系统文件类型
|
系统文件类型
|
||||||
@@ -2552,6 +2645,13 @@
|
|||||||
<returns></returns>
|
<returns></returns>
|
||||||
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.UserService.SetIsIgnoreUncommonly(IRaCIS.Core.Application.ViewModel.SetIsIgnoreUncommonlyInDto)">
|
||||||
|
<summary>
|
||||||
|
设置是否忽略异地登录
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.UserService.GetUserLoginRoleList(IRaCIS.Application.Contracts.IRCLoginDto,IRaCIS.Core.Application.Auth.ITokenService,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
|
<member name="M:IRaCIS.Core.Application.Service.UserService.GetUserLoginRoleList(IRaCIS.Application.Contracts.IRCLoginDto,IRaCIS.Core.Application.Auth.ITokenService,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
|
||||||
<summary>
|
<summary>
|
||||||
账号验证,获取账号角色信息 获取临时token
|
账号验证,获取账号角色信息 获取临时token
|
||||||
@@ -4453,6 +4553,291 @@
|
|||||||
<param name="digitPlaces"></param>
|
<param name="digitPlaces"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
|
||||||
|
<summary>
|
||||||
|
获取阅片的计算数据
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="F:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.sODData">
|
||||||
|
<summary>
|
||||||
|
获取Sod的值
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetDeleteLesionStatrIndex(IRaCIS.Core.Application.Service.Reading.Dto.DeleteReadingRowAnswerInDto)">
|
||||||
|
<summary>
|
||||||
|
删除病灶获取起始病灶序号(RECIST1Point1 固定是1)
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetReadingReportEvaluation(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingReportEvaluationInDto)">
|
||||||
|
<summary>
|
||||||
|
获取阅片报告
|
||||||
|
</summary>
|
||||||
|
<param name="indto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.TestCalculate(System.Guid,IRaCIS.Core.Domain.Share.QuestionType)">
|
||||||
|
<summary>
|
||||||
|
测试计算
|
||||||
|
</summary>
|
||||||
|
<param name="visitTaskId"></param>
|
||||||
|
<param name="type"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.CalculateTask(IRaCIS.Core.Application.Service.Reading.Dto.CalculateTaskInDto)">
|
||||||
|
<summary>
|
||||||
|
计算任务
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetReportVerify(IRaCIS.Core.Application.Service.Reading.Dto.GetReportVerifyInDto)">
|
||||||
|
<summary>
|
||||||
|
获取报告验证的信息(这里每个标准可能不一样 返回用object)
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.ReadingCalculate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto,System.Collections.Generic.List{IRaCIS.Core.Domain.Share.QuestionType})">
|
||||||
|
<summary>
|
||||||
|
自动计算
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<param name="calculateType"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetReportTumor(System.Guid)">
|
||||||
|
<summary>
|
||||||
|
获取报告整体整体评估
|
||||||
|
</summary>
|
||||||
|
<param name="visitTaskId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetReportIsExistDisease(System.Guid)">
|
||||||
|
<summary>
|
||||||
|
获取报告是否存在疾病
|
||||||
|
</summary>
|
||||||
|
<param name="visitTaskId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.VerifyVisitTaskQuestions(IRaCIS.Core.Application.Service.Reading.Dto.VerifyVisitTaskQuestionsInDto)">
|
||||||
|
<summary>
|
||||||
|
验证访视提交
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.AddTaskLesionAnswerFromLastTask(IRaCIS.Core.Application.ViewModel.AddTaskLesionAnswerFromLastTaskInDto)">
|
||||||
|
<summary>
|
||||||
|
将上一次的访视病灶添加到这一次
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetSODData(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取SOD
|
||||||
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
靶病灶径线之和(SOD)
|
||||||
|
非淋巴结的长径 和淋巴结的短径
|
||||||
|
</remarks>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetSumOfDiameter(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
非淋巴结靶病灶长径之和
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetSODChange(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
与基线SOD相比变化量(mm)
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetSODPercent(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
与基线访视相比SOD变化百分比
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetLowestIncrease(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
与整个访视期间SOD最低点相比增加的值(mm)
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<remarks>
|
||||||
|
要更新之前的
|
||||||
|
</remarks>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetLowPercent(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
与整个访视期间SOD最低点相比增加的百分比
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<remarks>
|
||||||
|
要更新之前的
|
||||||
|
</remarks>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetLowVisit(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
整个访视期间SOD最低点访视名称
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<remarks>
|
||||||
|
要更新之前的
|
||||||
|
</remarks>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetIsLymphTarget(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
是否存在非淋巴结靶病灶
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetIsAddFive(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
是否存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetIsAddFiveRowIndexs(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取存在淋巴结靶病灶且该病灶比上一访视短径增加5MM以上的病灶
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetNETarget(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
被评估为NE的单个靶病灶
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetTumor(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
整体肿瘤评估
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.TestOncology">
|
||||||
|
<summary>
|
||||||
|
测试肿瘤学评估
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.CalculationGetImgOncology(System.String,System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
计算整体肿瘤评估 【测试】
|
||||||
|
</summary>
|
||||||
|
<param name="targetLesion">靶病灶</param>
|
||||||
|
<param name="noTargetLesion"> 非靶病灶</param>
|
||||||
|
<param name="newLesions">新病灶</param>
|
||||||
|
<remarks>
|
||||||
|
靶病灶 非靶病灶 存在新病灶 整体肿瘤评估
|
||||||
|
1. CR CR 否 CR
|
||||||
|
2. CR ND 否 CR
|
||||||
|
3. ND CR 否 CR
|
||||||
|
4. CR NN/NE 否/疑似/NE PR
|
||||||
|
5. CR CR/ND 疑似/NE PR
|
||||||
|
6. PR CR/ND/NN/NE 否/疑似/NE PR
|
||||||
|
7. ND CR 疑似/NE PR
|
||||||
|
8. SD CR/ND/NN/NE 否/疑似/NE SD
|
||||||
|
9. ND NN 否/疑似/NE NN
|
||||||
|
10.NE CR/ND/NN/NE 否/疑似/NE NE
|
||||||
|
11.ND NE 否/疑似/NE NE
|
||||||
|
12.ND ND NE NE
|
||||||
|
13.ND ND 否/疑似 ND
|
||||||
|
14.PD CR/NN/PD/ND/NE 是/否/疑似/NE PD
|
||||||
|
15.CR/PR/SD/PD/ND/NE PD 是/否/疑似/NE PD
|
||||||
|
16.CR/PR/SD/PD/ND/NE CR/NN/PD/ND/NE 是 PD
|
||||||
|
</remarks>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetIsExistDisease(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
是否存在疾病
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.ChangeAllLowestIncrease(IRaCIS.Core.Application.Service.Reading.Dto.ChangeAllTaskDto)">
|
||||||
|
<summary>
|
||||||
|
修改与整个访视期间SOD最低点相比增加的值(mm)
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.ChangeAllLowVisitName(IRaCIS.Core.Application.Service.Reading.Dto.ChangeAllTaskDto)">
|
||||||
|
<summary>
|
||||||
|
修改最低方式点名称
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.ChangeAllVisitTaskAnswer(System.Collections.Generic.List{System.Guid},System.Guid,System.String)">
|
||||||
|
<summary>
|
||||||
|
修改所有访视任务的答案
|
||||||
|
</summary>
|
||||||
|
<param name="visitTaskGuids"></param>
|
||||||
|
<param name="questionId"></param>
|
||||||
|
<param name="answer"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetBaseLineSOD(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取基线SOD
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetLowSODVisit(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取最低方式
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetVisitTaskAnswerList(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取访视任务信息
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetLastVisitTaskId(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取上一个访视任务Id
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)" -->
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetNoTargetLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取非靶病灶评估
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRECISTHCCCalculate.GetNewLesionEvaluate(IRaCIS.Core.Application.Service.Reading.Dto.ReadingCalculateDto)">
|
||||||
|
<summary>
|
||||||
|
获取新病灶评估
|
||||||
|
</summary>
|
||||||
|
<param name="inDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRIPDFFCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingCalculate.MRIPDFFCalculateService.GetReadingCalculationData(IRaCIS.Core.Application.Service.Reading.Dto.GetReadingCalculationDataInDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取阅片的计算数据
|
获取阅片的计算数据
|
||||||
@@ -12064,7 +12449,7 @@
|
|||||||
阅片问题.标准
|
阅片问题.标准
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.ReadingQuestionService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataSystemSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemCriterionDictionaryCode},IRaCIS.Core.Application.Contracts.IReadingImageTaskService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingSystemCriterionDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingCriterionPage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TumorAssessment_RECIST1Point1},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.PreviousPDF},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
<member name="M:IRaCIS.Core.Application.Service.ReadingQuestionService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataSystemSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CriterionNidusSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemCriterionDictionaryCode},IRaCIS.Core.Application.Contracts.IReadingImageTaskService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingSystemCriterionDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingCriterionPage},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TumorAssessment_RECIST1Point1},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.OrganInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionSystem},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.PreviousPDF},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
|
||||||
<summary>
|
<summary>
|
||||||
阅片问题.标准
|
阅片问题.标准
|
||||||
</summary>
|
</summary>
|
||||||
@@ -13523,6 +13908,22 @@
|
|||||||
<param name="_readingConsistentClinicalDataRepository"></param>
|
<param name="_readingConsistentClinicalDataRepository"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.TestService.IQCBackToUpload(System.Guid[],IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialQCQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalData})">
|
||||||
|
<summary>
|
||||||
|
IQC 回退到影像上传
|
||||||
|
</summary>
|
||||||
|
<param name="subjectVisitIdList"></param>
|
||||||
|
<param name="_subjectVisitRepository"></param>
|
||||||
|
<param name="_trialQCQuestionAnswerRepository"></param>
|
||||||
|
<param name="_readingClinicalDataReposiotry"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.TestService.BackImageResize(System.Guid,System.Guid)">
|
||||||
|
<summary>
|
||||||
|
后端处理某个中心缩略图有问题 先下载,生成缩略图上传,然后更新数据库
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.TestService.DealTialFileSie(IRaCIS.Core.Application.Helper.IOSSService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalDataPDF})">
|
<member name="M:IRaCIS.Core.Application.Service.TestService.DealTialFileSie(IRaCIS.Core.Application.Helper.IOSSService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalDataPDF})">
|
||||||
<summary>
|
<summary>
|
||||||
非dicom 临床数据
|
非dicom 临床数据
|
||||||
@@ -16956,6 +17357,23 @@
|
|||||||
<param name="qaDialogCommand"></param>
|
<param name="qaDialogCommand"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.RequestImageBack(System.Guid)">
|
||||||
|
<summary>
|
||||||
|
CRC IQC 申请影像回退
|
||||||
|
</summary>
|
||||||
|
<param name="subjectVisitId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.AuditImageBack(System.Guid,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
PM 审核CRC IQC 申请影像回退
|
||||||
|
</summary>
|
||||||
|
<param name="subjectVisitId"></param>
|
||||||
|
<param name="isAgree"></param>
|
||||||
|
<returns></returns>
|
||||||
|
<exception cref="T:IRaCIS.Core.Infrastructure.BusinessValidationFailedException"></exception>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.AddCheckChallengeReply(IRaCIS.Core.Application.Contracts.DTO.CheckChallengeDialogCommand)">
|
<member name="M:IRaCIS.Core.Application.Image.QA.QCOperationService.AddCheckChallengeReply(IRaCIS.Core.Application.Contracts.DTO.CheckChallengeDialogCommand)">
|
||||||
<summary>
|
<summary>
|
||||||
一致性核查 质疑的添加/回复
|
一致性核查 质疑的添加/回复
|
||||||
|
|||||||
@@ -2552,6 +2552,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
|
|||||||
|
|
||||||
//回退后,回退状态恢复
|
//回退后,回退状态恢复
|
||||||
sv.RequestBackState = RequestBackStateEnum.NotRequest;
|
sv.RequestBackState = RequestBackStateEnum.NotRequest;
|
||||||
|
sv.ImageBackState = ImageBackStateEnum.None;
|
||||||
sv.IsCheckBack = false;
|
sv.IsCheckBack = false;
|
||||||
sv.CheckBackTime = null;
|
sv.CheckBackTime = null;
|
||||||
sv.CheckState = CheckStateEnum.None;
|
sv.CheckState = CheckStateEnum.None;
|
||||||
|
|||||||
@@ -96,6 +96,8 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||||||
|
|
||||||
public int State { get; set; }
|
public int State { get; set; }
|
||||||
|
|
||||||
|
public Guid? PublishLogId { get; set; }
|
||||||
|
|
||||||
public List<BatchAddInternationalizationDto> AddList { get; set; }
|
public List<BatchAddInternationalizationDto> AddList { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
mapItem.InternationalizationType = batchAdd.InternationalizationType;
|
mapItem.InternationalizationType = batchAdd.InternationalizationType;
|
||||||
mapItem.State = batchAdd.State;
|
mapItem.State = batchAdd.State;
|
||||||
|
mapItem.PublishLogId = batchAdd.PublishLogId;
|
||||||
|
|
||||||
var verifyExp1 = new EntityVerifyExp<Internationalization>()
|
var verifyExp1 = new EntityVerifyExp<Internationalization>()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,533 @@
|
|||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// 此代码由liquid模板自动生成 byzhouhang 20240909
|
||||||
|
// 生成时间 2025-03-27 06:13:33Z
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using IRaCIS.Core.Application.Interfaces;
|
||||||
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
|
using IRaCIS.Core.Infrastructure.Extention;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
|
using AutoMapper.Execution;
|
||||||
|
using System.Linq;
|
||||||
|
using IRaCIS.Core.Infrastructure;
|
||||||
|
using DocumentFormat.OpenXml.Office2010.Excel;
|
||||||
|
using MassTransit;
|
||||||
|
using NPOI.POIFS.Properties;
|
||||||
|
using Org.BouncyCastle.Crypto;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
namespace IRaCIS.Core.Application.Service;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 稽查文档
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[ApiExplorerSettings(GroupName = "FileRecord")]
|
||||||
|
public class AuditDocumentService(IRepository<AuditDocument> _auditDocumentRepository,
|
||||||
|
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer): BaseService
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取稽查文档
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inQuery"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<PageOutput<AuditDocumentView>> GetAuditDocumentList(AuditDocumentQuery inQuery)
|
||||||
|
{
|
||||||
|
var auditDocumentQueryable = _auditDocumentRepository
|
||||||
|
.ProjectTo<AuditDocumentView>(_mapper.ConfigurationProvider);
|
||||||
|
var pageList = await auditDocumentQueryable.ToPagedListAsync(inQuery);
|
||||||
|
|
||||||
|
return pageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 修改稽查文档
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> UpdateAuditDocument(AuditDocumentUpdateDto inDto)
|
||||||
|
{
|
||||||
|
AuditDocumentAddOrEdit addOrEdit = _mapper.Map<AuditDocumentAddOrEdit>(inDto);
|
||||||
|
addOrEdit.IsUpdate = true;
|
||||||
|
|
||||||
|
var result= await AddOrUpdateAuditDocument(addOrEdit);
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(result.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 新增稽查文档
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> AddAuditDocument(List<AuditDocumentAddOrEdit> inDto)
|
||||||
|
{
|
||||||
|
List<Guid> resultData = new List<Guid>();
|
||||||
|
inDto.ForEach(x => x.IsUpdate = false);
|
||||||
|
await addData(inDto);
|
||||||
|
|
||||||
|
async Task addData(List<AuditDocumentAddOrEdit> data)
|
||||||
|
{
|
||||||
|
foreach(var item in data)
|
||||||
|
{
|
||||||
|
var result= await AddOrUpdateAuditDocument(item);
|
||||||
|
|
||||||
|
resultData.Add(result.Id);
|
||||||
|
item.Children.ForEach(x => {
|
||||||
|
x.ParentId = result.Id;
|
||||||
|
x.IsUpdate = false;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if (item.Children.Count() > 0)
|
||||||
|
{
|
||||||
|
await addData(item.Children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(resultData);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 通用方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
private async Task<AuditDocument> AddOrUpdateAuditDocument(AuditDocumentAddOrEdit inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
var alikeData = await _auditDocumentRepository.Where(x =>x.Id!=inDto.Id&& x.ParentId == inDto.ParentId&&x.Name==inDto.Name&&x.AuditDocumentTypeEnum==inDto.AuditDocumentTypeEnum).FirstOrDefaultAsync();
|
||||||
|
if (alikeData != null)
|
||||||
|
{
|
||||||
|
if (inDto.AuditDocumentTypeEnum == AuditDocumentType.Folder)
|
||||||
|
{
|
||||||
|
if (inDto.IsUpdate)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException(_localizer["AuditDocument_CanNotAddFolder"]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return alikeData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var entityData = await _auditDocumentRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
var historicalVersionIds = await _auditDocumentRepository.Where(x => x.MainFileId == alikeData.Id).OrderBy(x => x.Version).Select(x => x.Id).ToListAsync();
|
||||||
|
historicalVersionIds.Add(alikeData.Id);
|
||||||
|
int num = 1;
|
||||||
|
|
||||||
|
foreach (var item in historicalVersionIds)
|
||||||
|
{
|
||||||
|
await _auditDocumentRepository.UpdatePartialFromQueryAsync(item, x => new AuditDocument()
|
||||||
|
{
|
||||||
|
MainFileId = entityData.Id,
|
||||||
|
ParentId = null,
|
||||||
|
Version = num,
|
||||||
|
AuditDocumentTypeEnum = AuditDocumentType.HistoricalVersion
|
||||||
|
},true);
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return entityData;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var entity = await _auditDocumentRepository.InsertOrUpdateAsync(inDto, true);
|
||||||
|
return entity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取面包屑导航
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<List<AuditDocumentUpdateDto>> GetBreadcrumbData(GetBreadcrumbDataInDto inDto)
|
||||||
|
{
|
||||||
|
List<AuditDocumentUpdateDto> result=new List<AuditDocumentUpdateDto>();
|
||||||
|
|
||||||
|
await findParent(result, inDto.Id);
|
||||||
|
async Task findParent(List<AuditDocumentUpdateDto> datas, Guid id)
|
||||||
|
{
|
||||||
|
var data= await _auditDocumentRepository.Where(x => x.Id == id).ProjectTo<AuditDocumentUpdateDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||||
|
datas.Add(data);
|
||||||
|
if (data.ParentId != null)
|
||||||
|
{
|
||||||
|
await findParent(datas, data.ParentId.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
result.Reverse();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取文件树形结构 (传Id 根节点就是自己)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<PageOutput<AuditDocumentData>> GetAuditDocumentData(GetAuditDocumentDataInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
var defalutSortArray = new string[] { nameof(AuditDocumentData.AuditDocumentTypeEnum), nameof(AuditDocumentData.Name) };
|
||||||
|
|
||||||
|
// 新取出来排序 然后再找子项
|
||||||
|
var data= (await _auditDocumentRepository
|
||||||
|
.Where(x=>x.AuditDocumentTypeEnum!=AuditDocumentType.HistoricalVersion)
|
||||||
|
.WhereIf(inDto.IsAuthorization!=null,x=>x.IsAuthorization==inDto.IsAuthorization)
|
||||||
|
.ProjectTo<AuditDocumentData>(_mapper.ConfigurationProvider).ToPagedListAsync(new PageInput() {
|
||||||
|
PageIndex=1,
|
||||||
|
PageSize=999999,
|
||||||
|
}, defalutSortArray) ).CurrentPageData.ToList();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (inDto.Name.IsNotNullOrEmpty())
|
||||||
|
{
|
||||||
|
List<Guid> findIds = new List<Guid>();
|
||||||
|
var findData = data.Where(x => x.Name.Contains(inDto.Name)).Select(x => x.Id.Value).ToList();
|
||||||
|
GetParentId(findIds, findData, data);
|
||||||
|
findIds.AddRange(findData);
|
||||||
|
|
||||||
|
data = data.Where(x => findIds.Distinct().Contains(x.Id.Value)).ToList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var query = data
|
||||||
|
.WhereIf(inDto.SelfId != null, x => inDto.SelfId == x.Id)
|
||||||
|
.WhereIf(inDto.Id != null, x => inDto.Id == x.ParentId)
|
||||||
|
.WhereIf(inDto.Id == null&& inDto.SelfId == null, x => x.ParentId == null);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PageOutput<AuditDocumentData> result = new PageOutput<AuditDocumentData>()
|
||||||
|
{
|
||||||
|
PageIndex = inDto.PageIndex,
|
||||||
|
PageSize = inDto.PageSize,
|
||||||
|
TotalCount = query.Count(),
|
||||||
|
};
|
||||||
|
var root = query
|
||||||
|
.Skip(inDto.PageSize * (inDto.PageIndex - 1)).Take(inDto.PageSize).ToList();
|
||||||
|
|
||||||
|
foreach (var item in root)
|
||||||
|
{
|
||||||
|
GetChildren(item, data);
|
||||||
|
|
||||||
|
}
|
||||||
|
result.CurrentPageData = root;
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetParentId(List<Guid> parentIds, List<Guid> ids, List<AuditDocumentData> dataList)
|
||||||
|
{
|
||||||
|
var parentid = dataList.Where(x => ids.Contains(x.Id.Value) && x.ParentId != null).Select(x => x.ParentId.Value).ToList();
|
||||||
|
|
||||||
|
if (parentid.Count() > 0)
|
||||||
|
{
|
||||||
|
parentIds.AddRange(parentid);
|
||||||
|
|
||||||
|
GetParentId(parentIds, parentid, dataList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void GetChildren(AuditDocumentData item, List<AuditDocumentData> dataList)
|
||||||
|
{
|
||||||
|
item.Children = dataList.Where(x => x.ParentId == item.Id).ToList();
|
||||||
|
foreach (var x in item.Children)
|
||||||
|
{
|
||||||
|
GetChildren(x, dataList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除稽查文档
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> DeleteAuditDocument(DeleteAuditDocumentInDto inDto)
|
||||||
|
{
|
||||||
|
var data = await _auditDocumentRepository.Select(x => new DeleteAudit (){
|
||||||
|
Id=x.Id,
|
||||||
|
ParentId= x.ParentId,
|
||||||
|
MainFileId= x.MainFileId
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
List<Guid> DeleteId= inDto.Ids;
|
||||||
|
|
||||||
|
finId(inDto.Ids, data);
|
||||||
|
|
||||||
|
void finId(List<Guid> deletids, List<DeleteAudit> deletes)
|
||||||
|
{
|
||||||
|
DeleteId.AddRange(deletids);
|
||||||
|
|
||||||
|
var temp = deletes.Where(x =>(x.ParentId!=null&& deletids.Contains(x.ParentId.Value))||(x.MainFileId!=null&& deletids.Contains(x.MainFileId.Value))).Select(x => x.Id).ToList();
|
||||||
|
if (temp.Count() > 0)
|
||||||
|
{
|
||||||
|
finId(temp, deletes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DeleteId = DeleteId.Distinct().ToList();
|
||||||
|
var mainFileId=await _auditDocumentRepository.Where(x => DeleteId.Contains(x.Id)&&x.MainFileId!=null).Select(x => x.MainFileId).Distinct().ToListAsync();
|
||||||
|
var success = await _auditDocumentRepository.DeleteFromQueryAsync(t => DeleteId.Distinct().Contains(t.Id), true);
|
||||||
|
|
||||||
|
foreach (var item in mainFileId)
|
||||||
|
{
|
||||||
|
var historicalVersionList = await _auditDocumentRepository.Where(x => x.MainFileId == item).OrderBy(x=>x.Version).ToListAsync();
|
||||||
|
|
||||||
|
var num = 1;
|
||||||
|
foreach (var historical in historicalVersionList)
|
||||||
|
{
|
||||||
|
await _auditDocumentRepository.UpdatePartialFromQueryAsync(historical.Id, x => new AuditDocument()
|
||||||
|
{
|
||||||
|
Version = num,
|
||||||
|
}, true);
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 移动文件或者文件夹 到其他文件夹
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> MovieFileOrFolder(MovieFileOrFolderInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
var data = await _auditDocumentRepository.Select(x => new DeleteAudit()
|
||||||
|
{
|
||||||
|
Id = x.Id,
|
||||||
|
ParentId = x.ParentId,
|
||||||
|
AuditDocumentTypeEnum = x.AuditDocumentTypeEnum,
|
||||||
|
MainFileId = x.MainFileId
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
foreach (var id in inDto.Ids)
|
||||||
|
{
|
||||||
|
var file = data.Where(x => x.Id == id).FirstOrDefault();
|
||||||
|
if (file.AuditDocumentTypeEnum == AuditDocumentType.Folder)
|
||||||
|
{
|
||||||
|
if (finChild(new List<Guid> { id }, inDto.ParentId, data))
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException(_localizer["AuditDocument_CanNotMove"]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool finChild(List<Guid> ids, Guid ChildId, List<DeleteAudit> data)
|
||||||
|
{
|
||||||
|
var child = data.Where(x => x.ParentId != null && ids.Contains(x.ParentId.Value)).ToList();
|
||||||
|
if (child.Count() == 0)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (child.Any(x => x.Id == ChildId))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var newids = child.Select(x => x.Id).ToList();
|
||||||
|
|
||||||
|
return finChild(newids, ChildId, data);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var id in inDto.Ids)
|
||||||
|
{
|
||||||
|
await _auditDocumentRepository.UpdatePartialFromQueryAsync(id, x => new AuditDocument()
|
||||||
|
{
|
||||||
|
ParentId = inDto.ParentId
|
||||||
|
});
|
||||||
|
|
||||||
|
await _auditDocumentRepository.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 复制文件或者文件夹
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> CopyFileOrFolder(MovieFileOrFolderInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach (var item in inDto.Ids)
|
||||||
|
{
|
||||||
|
var data = (await GetAuditDocumentData(new GetAuditDocumentDataInDto()
|
||||||
|
{
|
||||||
|
SelfId =item,
|
||||||
|
|
||||||
|
PageIndex=1,
|
||||||
|
PageSize= 1000
|
||||||
|
})).CurrentPageData;
|
||||||
|
|
||||||
|
List<AuditDocumentAddOrEdit> auditDocumentAddOrEdits = _mapper.Map<List<AuditDocumentAddOrEdit>>(data);
|
||||||
|
auditDocumentAddOrEdits.ForEach(x => x.IsUpdate = false);
|
||||||
|
await addData(auditDocumentAddOrEdits);
|
||||||
|
}
|
||||||
|
|
||||||
|
async Task addData(List<AuditDocumentAddOrEdit> data)
|
||||||
|
{
|
||||||
|
foreach (var item in data)
|
||||||
|
{
|
||||||
|
item.Id = null;
|
||||||
|
var result = await AddOrUpdateAuditDocument(item);
|
||||||
|
|
||||||
|
item.Children.ForEach(x => {
|
||||||
|
x.ParentId = result.Id;
|
||||||
|
x.IsUpdate = false;
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
if (item.Children.Count() > 0)
|
||||||
|
{
|
||||||
|
await addData(item.Children);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取历史版本
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<List<HistoricalVersionDto>> GetHistoricalVersion(GetHistoricalVersionInDto inDto)
|
||||||
|
{
|
||||||
|
|
||||||
|
List< HistoricalVersionDto > result=new List<HistoricalVersionDto>();
|
||||||
|
|
||||||
|
result = await _auditDocumentRepository.Where(x => x.MainFileId == inDto.Id).ProjectTo<HistoricalVersionDto>(_mapper.ConfigurationProvider).OrderByDescending(x => x.Version).ToListAsync();
|
||||||
|
var currentData = await _auditDocumentRepository.Where(x => x.Id == inDto.Id).ProjectTo<HistoricalVersionDto>(_mapper.ConfigurationProvider).FirstNotNullAsync();
|
||||||
|
currentData.IsCurrentVersion = true;
|
||||||
|
|
||||||
|
result.Insert(0, currentData);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 把历史版本设置为当前版本
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> SetCurrentVersion(SetCurrentVersionInDto inDto)
|
||||||
|
{
|
||||||
|
var file = await _auditDocumentRepository.Where(x => x.Id == inDto.Id).FirstNotNullAsync();
|
||||||
|
if (file.AuditDocumentTypeEnum != AuditDocumentType.HistoricalVersion)
|
||||||
|
{
|
||||||
|
throw new BusinessValidationFailedException(_localizer["AuditDocument_CanNotSetCurrentVersion"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
var mainFile = await _auditDocumentRepository.Where(x => x.Id == file.MainFileId).FirstNotNullAsync();
|
||||||
|
|
||||||
|
var historicalVersionIds= await _auditDocumentRepository.Where(x => x.MainFileId == mainFile.Id&&x.Id!=inDto.Id).OrderBy(x=>x.Version).Select(x=>x.Id).ToListAsync();
|
||||||
|
|
||||||
|
historicalVersionIds.Add(mainFile.Id);
|
||||||
|
await _auditDocumentRepository.UpdatePartialFromQueryAsync(inDto.Id, x => new AuditDocument() {
|
||||||
|
MainFileId=null,
|
||||||
|
ParentId= mainFile.ParentId,
|
||||||
|
AuditDocumentTypeEnum=AuditDocumentType.File,
|
||||||
|
});
|
||||||
|
|
||||||
|
int num = 1;
|
||||||
|
foreach (var item in historicalVersionIds)
|
||||||
|
{
|
||||||
|
await _auditDocumentRepository.UpdatePartialFromQueryAsync(item, x => new AuditDocument()
|
||||||
|
{
|
||||||
|
MainFileId = inDto.Id,
|
||||||
|
ParentId = null,
|
||||||
|
Version=num,
|
||||||
|
AuditDocumentTypeEnum= AuditDocumentType.HistoricalVersion
|
||||||
|
});
|
||||||
|
num++;
|
||||||
|
}
|
||||||
|
|
||||||
|
await _auditDocumentRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置是否授权
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> SetIsAuthorization(SetIsAuthorizationInDto inDto)
|
||||||
|
{
|
||||||
|
var data = await _auditDocumentRepository.Select(x => new DeleteAudit()
|
||||||
|
{
|
||||||
|
Id = x.Id,
|
||||||
|
ParentId = x.ParentId,
|
||||||
|
MainFileId = x.MainFileId
|
||||||
|
}).ToListAsync();
|
||||||
|
|
||||||
|
List<Guid> allid = new List<Guid>();
|
||||||
|
findChild(allid, inDto.Ids, data);
|
||||||
|
|
||||||
|
await _auditDocumentRepository.UpdatePartialFromQueryAsync(t => allid.Contains(t.Id), x => new AuditDocument() {
|
||||||
|
|
||||||
|
IsAuthorization = inDto.IsAuthorization
|
||||||
|
});
|
||||||
|
await _auditDocumentRepository.SaveChangesAsync();
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
void findChild(List<Guid> allId,List<Guid> current, List<DeleteAudit> data)
|
||||||
|
{
|
||||||
|
allId.AddRange(current);
|
||||||
|
|
||||||
|
var child = data.Where(x =>(x.ParentId!=null&& current.Contains(x.ParentId.Value))||(x.MainFileId!=null&¤t.Contains(x.MainFileId.Value))).Select(x => x.Id).ToList();
|
||||||
|
if (child.Count() > 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
findChild(allId, child, data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
// 此代码由liquid模板自动生成 byzhouhang 20240909
|
||||||
|
// 生成时间 2025-03-27 06:13:37Z
|
||||||
|
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
||||||
|
//--------------------------------------------------------------------
|
||||||
|
using System;
|
||||||
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
namespace IRaCIS.Core.Application.ViewModel;
|
||||||
|
|
||||||
|
public class DeleteAudit
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public AuditDocumentType AuditDocumentTypeEnum { get; set; }
|
||||||
|
public Guid? ParentId { get; set; }
|
||||||
|
|
||||||
|
public Guid? MainFileId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DeleteAuditDocumentInDto
|
||||||
|
{
|
||||||
|
public List<Guid> Ids { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetAuditDocumentDataInDto:PageInput
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
public Guid? SelfId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public bool? IsAuthorization { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetAuditDocumentDataOutDto
|
||||||
|
{
|
||||||
|
public List<AuditDocumentData> Data { get; set; } = new List<AuditDocumentData> { };
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AuditDocumentData : AuditDocumentUpdateDto
|
||||||
|
{
|
||||||
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
|
public int? Version { get; set; }
|
||||||
|
public List<AuditDocumentData> Children { get; set; }=new List<AuditDocumentData> (){ };
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AuditDocumentView : AuditDocumentAddOrEdit
|
||||||
|
{
|
||||||
|
|
||||||
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SetIsAuthorizationInDto
|
||||||
|
{
|
||||||
|
public List<Guid> Ids { get; set; }
|
||||||
|
|
||||||
|
public bool IsAuthorization { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SetCurrentVersionInDto
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetHistoricalVersionInDto
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetHistoricalVersionOutDto
|
||||||
|
{
|
||||||
|
public AuditDocumentData CurrentData { get; set; }
|
||||||
|
public List<AuditDocumentData> HistoricalVersionList { get; set; } = new List<AuditDocumentData> { };
|
||||||
|
}
|
||||||
|
|
||||||
|
public class MovieFileOrFolderInDto
|
||||||
|
{
|
||||||
|
public List<Guid> Ids { get; set; }
|
||||||
|
|
||||||
|
public Guid ParentId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HistoricalVersionDto: AuditDocumentUpdateDto
|
||||||
|
{
|
||||||
|
public bool IsCurrentVersion { get; set; } = false;
|
||||||
|
|
||||||
|
public int? Version { get; set; }
|
||||||
|
|
||||||
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
public DateTime UpdateTime { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AuditDocumentUpdateDto
|
||||||
|
{
|
||||||
|
public Guid? Id { get; set; }
|
||||||
|
|
||||||
|
public AuditDocumentType AuditDocumentTypeEnum { get; set; }
|
||||||
|
|
||||||
|
public string? FileFormat { get; set; }
|
||||||
|
|
||||||
|
public string? FilePath { get; set; }
|
||||||
|
|
||||||
|
public decimal? FileSize { get; set; }
|
||||||
|
|
||||||
|
public bool IsAuthorization { get; set; }
|
||||||
|
|
||||||
|
// public Guid? MainFileId { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public Guid? ParentId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GetBreadcrumbDataInDto
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AuditDocumentAddOrEdit: AuditDocumentUpdateDto
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public List<AuditDocumentAddOrEdit> Children { get; set; }=new List<AuditDocumentAddOrEdit>() { };
|
||||||
|
|
||||||
|
public bool IsUpdate { get; set; } = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AuditDocumentQuery:PageInput
|
||||||
|
{
|
||||||
|
public AuditDocumentType? AuditDocumentTypeEnum { get; set; }
|
||||||
|
|
||||||
|
public string? FileFormat { get; set; }
|
||||||
|
|
||||||
|
public string? FilePath { get; set; }
|
||||||
|
|
||||||
|
public decimal? FileSize { get; set; }
|
||||||
|
|
||||||
|
public bool? IsAuthorization { get; set; }
|
||||||
|
|
||||||
|
public Guid? MainFileId { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
public Guid? ParentId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -14,7 +14,14 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
var userId = Guid.Empty;
|
var userId = Guid.Empty;
|
||||||
var isEn_Us = false;
|
var isEn_Us = false;
|
||||||
|
CreateMap<AuditDocumentData, AuditDocumentAddOrEdit>();
|
||||||
|
//CreateMap<List<AuditDocumentData>, List<AuditDocumentAddOrEdit>>();
|
||||||
|
CreateMap<AuditDocument, AuditDocumentView>();
|
||||||
|
CreateMap<AuditDocument, AuditDocumentUpdateDto>();
|
||||||
|
CreateMap<AuditDocument, HistoricalVersionDto>();
|
||||||
|
CreateMap<AuditDocumentUpdateDto, AuditDocumentAddOrEdit>();
|
||||||
|
CreateMap<AuditDocument, AuditDocumentData>();
|
||||||
|
CreateMap<AuditDocument, AuditDocumentAddOrEdit>().ReverseMap();
|
||||||
CreateMap<SystemDocument, SystemDocumentView>()
|
CreateMap<SystemDocument, SystemDocumentView>()
|
||||||
.ForMember(d => d.FileType, u => u.MapFrom(s => isEn_Us ? s.FileType.Value : s.FileType.ValueCN))
|
.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.FullFilePath, u => u.MapFrom(s => s.Path));
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||||||
|
|
||||||
public bool IsLoginUncommonly { get; set; }
|
public bool IsLoginUncommonly { get; set; }
|
||||||
|
|
||||||
|
public bool IsIgnoreUncommonly { get; set; }
|
||||||
|
|
||||||
public string JsonObj { get; set; }
|
public string JsonObj { get; set; }
|
||||||
|
|
||||||
@@ -43,17 +44,27 @@ namespace IRaCIS.Core.Application.ViewModel
|
|||||||
public UserMFAType MFAType { get; set; } = UserMFAType.Login;
|
public UserMFAType MFAType { get; set; } = UserMFAType.Login;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class SetIsIgnoreUncommonlyInDto
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public bool IsIgnoreUncommonly { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
///<summary>UserLogQuery 列表查询参数模型</summary>
|
///<summary>UserLogQuery 列表查询参数模型</summary>
|
||||||
public class UserLogQuery : PageInput
|
public class UserLogQuery : PageInput
|
||||||
{
|
{
|
||||||
public Guid? TrialId { get; set; }
|
public Guid? TrialId { get; set; }
|
||||||
|
|
||||||
public UserOptType? OptType { get; set; }
|
public List<UserOptType>? OptTypeList { get; set; }
|
||||||
|
|
||||||
|
public List<UserOptType> OptTypeList { get; set; } = new List<UserOptType>();
|
||||||
|
|
||||||
public string? IP { get; set; }
|
public string? IP { get; set; }
|
||||||
|
|
||||||
public string? LoginFaildName { get; set; }
|
public string? LoginFaildName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public string? LoginUserName { get; set; }
|
public string? LoginUserName { get; set; }
|
||||||
|
|
||||||
public DateTime? BeginDate { get; set; }
|
public DateTime? BeginDate { get; set; }
|
||||||
|
|||||||
@@ -835,7 +835,17 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 设置是否忽略异地登录
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> SetIsIgnoreUncommonly(SetIsIgnoreUncommonlyInDto inDto)
|
||||||
|
{
|
||||||
|
await _userLogRepository.UpdatePartialFromQueryAsync(inDto.Id, x => new UserLog() { IsIgnoreUncommonly = inDto.IsIgnoreUncommonly }, true);
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<PageOutput<UserLogView>> GetUserLogList(UserLogQuery inQuery)
|
public async Task<PageOutput<UserLogView>> GetUserLogList(UserLogQuery inQuery)
|
||||||
@@ -846,14 +856,16 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
var userLogQueryable =
|
var userLogQueryable =
|
||||||
_userLogRepository.AsQueryable().IgnoreQueryFilters()
|
_userLogRepository.AsQueryable().IgnoreQueryFilters()
|
||||||
|
.WhereIf(inQuery.OptTypeList.Count()>0, t => inQuery.OptTypeList.Contains(t.OptType))
|
||||||
.WhereIf(inQuery.IdentityUserId != null, t => t.ActionIdentityUserId == inQuery.IdentityUserId)
|
.WhereIf(inQuery.IdentityUserId != null, t => t.ActionIdentityUserId == inQuery.IdentityUserId)
|
||||||
.WhereIf(inQuery.TargetIdentityUserId != null, t => t.TargetIdentityUserId == inQuery.TargetIdentityUserId)
|
.WhereIf(inQuery.TargetIdentityUserId != null, t => t.TargetIdentityUserId == inQuery.TargetIdentityUserId)
|
||||||
.WhereIf(inQuery.TrialId != null, t => t.ActionIdentityUser.UserTrialList.Any(c => c.TrialId == inQuery.TrialId) || t.TargetIdentityUser.UserTrialList.Any(c => c.TrialId == inQuery.TrialId))
|
.WhereIf(inQuery.TrialId != null, t => t.ActionIdentityUser.UserTrialList.Any(c => c.TrialId == inQuery.TrialId) || t.TargetIdentityUser.UserTrialList.Any(c => c.TrialId == inQuery.TrialId))
|
||||||
.WhereIf(trialCreateTime != null, t => t.CreateTime >= trialCreateTime)
|
.WhereIf(trialCreateTime != null, t => t.CreateTime >= trialCreateTime)
|
||||||
.WhereIf(inQuery.OptType != null, t => t.OptType == inQuery.OptType)
|
.WhereIf(inQuery.OptTypeList != null && inQuery.OptTypeList.Count > 0, t => inQuery.OptTypeList.Contains(t.OptType))
|
||||||
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
|
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
|
||||||
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
|
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
|
||||||
.WhereIf(inQuery.IsLoginUncommonly != null, t => t.IsLoginUncommonly == inQuery.IsLoginUncommonly)
|
.WhereIf(inQuery.IsLoginUncommonly != null && inQuery.IsLoginUncommonly.Value, t => t.IsLoginUncommonly&&!t.IsIgnoreUncommonly)
|
||||||
|
.WhereIf(inQuery.IsLoginUncommonly != null && !inQuery.IsLoginUncommonly.Value, t => !t.IsLoginUncommonly || t.IsIgnoreUncommonly)
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.ActionUserName.Contains(inQuery.LoginUserName!))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.ActionUserName.Contains(inQuery.LoginUserName!))
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.ActionUserName.Contains(inQuery.LoginFaildName!))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.ActionUserName.Contains(inQuery.LoginFaildName!))
|
||||||
.WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP!))
|
.WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP!))
|
||||||
@@ -958,31 +970,35 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
//账号在系统存在
|
//账号在系统存在
|
||||||
if (isExistAccount || loginUser != null)
|
if (isExistAccount || loginUser != null)
|
||||||
{
|
{
|
||||||
var ipinfo = _searcher.Search(_userInfo.IP);
|
//var ipinfo = _searcher.Search(_userInfo.IP);
|
||||||
|
|
||||||
var iPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3));
|
//var iPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3));
|
||||||
|
|
||||||
string SplitAndConcatenate(string input)
|
//string SplitAndConcatenate(string input)
|
||||||
|
//{
|
||||||
|
// string[] parts = input.Split('|');
|
||||||
|
// return parts.Length >= 3 ? parts[0] + parts[1] : string.Join("", parts);
|
||||||
|
//}
|
||||||
|
|
||||||
|
var iPRegion = IPCityHelper.GetCityResponse(_userInfo.IP);
|
||||||
|
|
||||||
|
//设置本次登录的IP
|
||||||
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == existUserLoginInfo.Id, x => new IdentityUser()
|
||||||
{
|
{
|
||||||
string[] parts = input.Split('|');
|
LastLoginIP = iPRegion,
|
||||||
return parts.Length >= 3 ? parts[0] + parts[1] : string.Join("", parts);
|
LastLoginTime = DateTime.Now
|
||||||
}
|
|
||||||
|
});
|
||||||
|
|
||||||
if (existUserLoginInfo.LastLoginIP != string.Empty)
|
if (existUserLoginInfo.LastLoginIP != string.Empty)
|
||||||
{
|
{
|
||||||
// 与上一次区域不一致
|
// 与上一次区域不一致
|
||||||
if (SplitAndConcatenate(existUserLoginInfo.LastLoginIP) != SplitAndConcatenate(iPRegion))
|
//if (SplitAndConcatenate(existUserLoginInfo.LastLoginIP) != SplitAndConcatenate(iPRegion))
|
||||||
|
if (existUserLoginInfo.LastLoginIP != iPRegion)
|
||||||
{
|
{
|
||||||
|
|
||||||
isLoginUncommonly = true;
|
isLoginUncommonly = true;
|
||||||
|
|
||||||
//设置上次登录的IP
|
|
||||||
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == existUserLoginInfo.Id, x => new IdentityUser()
|
|
||||||
{
|
|
||||||
LastLoginIP = iPRegion,
|
|
||||||
LastLoginTime = DateTime.Now
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
if (loginUser != null)
|
if (loginUser != null)
|
||||||
{
|
{
|
||||||
@@ -1017,14 +1033,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//登录成功的,才会算异地登录
|
||||||
await _identityUserRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.IdentityUserId, x => new IdentityUser()
|
|
||||||
{
|
|
||||||
LastLoginTime = DateTime.Now,
|
|
||||||
LastLoginIP = _userInfo.IP,
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
if (loginUser.Status == 0)
|
if (loginUser.Status == 0)
|
||||||
{
|
{
|
||||||
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = loginUser.IdentityUserId, ActionUserName = loginUser.UserName, OptType = UserOptType.LoginLockedAccount, IsLoginUncommonly = isLoginUncommonly }, true);
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = loginUser.IdentityUserId, ActionUserName = loginUser.UserName, OptType = UserOptType.LoginLockedAccount, IsLoginUncommonly = isLoginUncommonly }, true);
|
||||||
|
|||||||
@@ -2108,6 +2108,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||||||
public DateTime? ReviewAuditTime { get; set; }
|
public DateTime? ReviewAuditTime { get; set; }
|
||||||
public DateTime? PreliminaryAuditTime { get; set; }
|
public DateTime? PreliminaryAuditTime { get; set; }
|
||||||
|
|
||||||
|
public ImageBackStateEnum ImageBackState { get; set; }
|
||||||
|
|
||||||
public DateTime? AuditTime => QCProcessEnum == TrialQCProcess.SingleAudit ? PreliminaryAuditTime : (QCProcessEnum == TrialQCProcess.DoubleAudit ? ReviewAuditTime : null);
|
public DateTime? AuditTime => QCProcessEnum == TrialQCProcess.SingleAudit ? PreliminaryAuditTime : (QCProcessEnum == TrialQCProcess.DoubleAudit ? ReviewAuditTime : null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using IRaCIS.Core.Application.Contracts.DTO;
|
|||||||
using IRaCIS.Core.Application.Filter;
|
using IRaCIS.Core.Application.Filter;
|
||||||
using IRaCIS.Core.Application.Helper;
|
using IRaCIS.Core.Application.Helper;
|
||||||
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
using IRaCIS.Core.Application.Service.Inspection.DTO;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using Medallion.Threading;
|
using Medallion.Threading;
|
||||||
@@ -38,6 +39,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||||||
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
|
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
|
||||||
IDistributedLockProvider _distributedLockProvider, IReadingClinicalDataService _readingClinicalDataService,
|
IDistributedLockProvider _distributedLockProvider, IReadingClinicalDataService _readingClinicalDataService,
|
||||||
IOSSService _oSSService,
|
IOSSService _oSSService,
|
||||||
|
IRepository<ReadingClinicalData> _readingClinicalDataReposiotry,
|
||||||
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IWebHostEnvironment _hostEnvironment) : BaseService, IQCOperationService
|
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer, IWebHostEnvironment _hostEnvironment) : BaseService, IQCOperationService
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -239,6 +241,137 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region CRC IQC 申请退回
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// CRC IQC 申请影像回退
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="subjectVisitId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
|
[HttpPut]
|
||||||
|
public async Task<IResponseOutput> RequestImageBack(Guid subjectVisitId)
|
||||||
|
{
|
||||||
|
if (!_subjectVisitRepository.Any(t => t.Id == subjectVisitId && t.CheckState < CheckStateEnum.CVPassed && t.SubmitState == SubmitStateEnum.Submitted))
|
||||||
|
{
|
||||||
|
//一致性核查通过前已提交的影像才允许进行回退
|
||||||
|
throw new BusinessValidationFailedException(_localizer["QCOperation_ShouldBeforeCheckPassed"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
|
||||||
|
{
|
||||||
|
await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { ImageBackState = ImageBackStateEnum.CRCRequestBack }, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC)
|
||||||
|
{
|
||||||
|
await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { ImageBackState = ImageBackStateEnum.IQCRequestBack }, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// PM 审核CRC IQC 申请影像回退
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="subjectVisitId"></param>
|
||||||
|
/// <param name="isAgree"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||||
|
[HttpPut]
|
||||||
|
public async Task<IResponseOutput> AuditImageBack(Guid subjectVisitId, bool isAgree)
|
||||||
|
{
|
||||||
|
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
|
||||||
|
|
||||||
|
if (sv.ImageBackState != ImageBackStateEnum.CRCRequestBack && sv.ImageBackState != ImageBackStateEnum.IQCRequestBack)
|
||||||
|
{
|
||||||
|
//当前访视状态不在影像申请回退状态,不允许审核通过
|
||||||
|
throw new BusinessValidationFailedException(_localizer["QCOperation_NotInRequestImageBackState"]);
|
||||||
|
}
|
||||||
|
if (isAgree)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (sv.SubmitState == SubmitStateEnum.Submitted && sv.CheckState < CheckStateEnum.CVPassed)
|
||||||
|
{
|
||||||
|
sv.ImageBackState = ImageBackStateEnum.PMAgreeBack;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//一致性核查通过前已提交的影像才允许进行回退
|
||||||
|
throw new BusinessValidationFailedException(_localizer["QCOperation_ShouldBeforeCheckPassed"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region 回退处理
|
||||||
|
//需要重新产生任务
|
||||||
|
sv.IsVisitTaskGenerated = false;
|
||||||
|
sv.IsPMBackOrReReading = true;
|
||||||
|
|
||||||
|
sv.AuditState = AuditStateEnum.None;
|
||||||
|
sv.SubmitState = SubmitStateEnum.ToSubmit;
|
||||||
|
sv.ReadingStatus = ReadingStatusEnum.ImageNotSubmit;
|
||||||
|
|
||||||
|
//回退后,回退状态恢复
|
||||||
|
sv.RequestBackState = RequestBackStateEnum.NotRequest;
|
||||||
|
sv.IsCheckBack = false;
|
||||||
|
sv.CheckBackTime = null;
|
||||||
|
sv.CheckState = CheckStateEnum.None;
|
||||||
|
sv.CheckChallengeState = CheckChanllengeTypeEnum.None;
|
||||||
|
|
||||||
|
sv.SVENDTC = null;
|
||||||
|
sv.SVSTDTC = null;
|
||||||
|
|
||||||
|
sv.PreliminaryAuditTime = null;
|
||||||
|
sv.SubmitTime = null;
|
||||||
|
sv.ReviewAuditTime = null;
|
||||||
|
sv.CurrentActionUserExpireTime = null;
|
||||||
|
|
||||||
|
|
||||||
|
sv.IsTake = false;
|
||||||
|
sv.CurrentActionUserId = null;
|
||||||
|
sv.PreliminaryAuditUserId = null;
|
||||||
|
sv.ReviewAuditUserId = null;
|
||||||
|
|
||||||
|
|
||||||
|
if (sv.IsBaseLine)
|
||||||
|
{
|
||||||
|
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && (t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit), c => new ReadingClinicalData() { IsSign = false, ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded });
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit, c => new ReadingClinicalData()
|
||||||
|
{
|
||||||
|
IsSign = false,
|
||||||
|
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded,
|
||||||
|
IsBlind = null,
|
||||||
|
IsComplete = null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
await _trialQCQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sv.ImageBackState = ImageBackStateEnum.PMNotAgreeBack;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
await _subjectVisitRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region 一致性核查
|
#region 一致性核查
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -731,7 +864,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||||
public async Task<IResponseOutput> SetNodicomStudyState(Guid subjectVisitId, Guid noneDicomStudyId, Guid? noneDicomStudyFileId, int state)
|
public async Task<IResponseOutput> SetNodicomStudyState(Guid subjectVisitId, Guid noneDicomStudyId, Guid? noneDicomStudyFileId, int state)
|
||||||
{
|
{
|
||||||
await VerifyIsCanQCAsync(null, subjectVisitId);
|
await VerifyIsCanQCAsync(null, subjectVisitId);
|
||||||
|
|
||||||
@@ -757,7 +890,7 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||||||
else if (state == 5)
|
else if (state == 5)
|
||||||
{
|
{
|
||||||
noneDicomStudy.IsDeleted = false;
|
noneDicomStudy.IsDeleted = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//设置检查下面的文件
|
//设置检查下面的文件
|
||||||
@@ -1697,8 +1830,8 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||||||
|
|
||||||
//删除 软删除的物理文件
|
//删除 软删除的物理文件
|
||||||
var instancePathList = await _dicomInstanceRepository.Where(t => (t.DicomSerie.IsDeleted || t.IsDeleted) && t.SubjectVisitId == subjectVisitId, false, true)
|
var instancePathList = await _dicomInstanceRepository.Where(t => (t.DicomSerie.IsDeleted || t.IsDeleted) && t.SubjectVisitId == subjectVisitId, false, true)
|
||||||
.Select(t => t.Path).ToListAsync();
|
.Select(t => t.Path).ToListAsync();
|
||||||
var noneDicomFileList = await _noneDicomStudyFileRepository.Where(t => (t.NoneDicomStudy.IsDeleted ||t.IsDeleted) && t.NoneDicomStudy.SubjectVisitId == subjectVisitId, false, true)
|
var noneDicomFileList = await _noneDicomStudyFileRepository.Where(t => (t.NoneDicomStudy.IsDeleted || t.IsDeleted) && t.NoneDicomStudy.SubjectVisitId == subjectVisitId, false, true)
|
||||||
.Select(t => t.Path).ToListAsync();
|
.Select(t => t.Path).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
@@ -1739,13 +1872,13 @@ namespace IRaCIS.Core.Application.Image.QA
|
|||||||
|
|
||||||
//删除影像
|
//删除影像
|
||||||
await _dicomStudyRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted && t.SubjectVisitId == subjectVisitId);
|
await _dicomStudyRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted && t.SubjectVisitId == subjectVisitId);
|
||||||
await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted && t.SubjectVisitId == subjectVisitId);
|
await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted && t.SubjectVisitId == subjectVisitId);
|
||||||
await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => (t.DicomSerie.IsDeleted || t.IsDeleted) && t.SubjectVisitId == subjectVisitId);
|
await _dicomInstanceRepository.BatchDeleteNoTrackingAsync(t => (t.DicomSerie.IsDeleted || t.IsDeleted) && t.SubjectVisitId == subjectVisitId);
|
||||||
await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => (t.NoneDicomStudy.IsDeleted || t.IsDeleted) && t.NoneDicomStudy.SubjectVisitId == subjectVisitId);
|
await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => (t.NoneDicomStudy.IsDeleted || t.IsDeleted) && t.NoneDicomStudy.SubjectVisitId == subjectVisitId);
|
||||||
await _noneDicomStudyRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted && t.SubjectVisitId == subjectVisitId);
|
await _noneDicomStudyRepository.BatchDeleteNoTrackingAsync(t => t.IsDeleted && t.SubjectVisitId == subjectVisitId);
|
||||||
await _oSSService.DeleteObjects(instancePathList.Select(t => t.TrimStart('/')).ToList());
|
await _oSSService.DeleteObjects(instancePathList.Select(t => t.TrimStart('/')).ToList());
|
||||||
await _oSSService.DeleteObjects(noneDicomFileList.Select(t => t.TrimStart('/')).ToList());
|
await _oSSService.DeleteObjects(noneDicomFileList.Select(t => t.TrimStart('/')).ToList());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -291,6 +291,23 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||||||
public List<string> SheetNames { get; set; }
|
public List<string> SheetNames { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class TestOncologyDto
|
||||||
|
{
|
||||||
|
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
public string TargetLesion { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string NonTargetLesions { get; set; }
|
||||||
|
|
||||||
|
public string NewLesion { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string OverallEfficacy { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 阅片计算Dto
|
/// 阅片计算Dto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository,
|
IRepository<ClinicalDataTrialSet> _clinicalDataTrialSetRepository,
|
||||||
IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository,
|
IRepository<ClinicalDataSystemSet> _clinicalDataSystemSetRepository,
|
||||||
IRepository<Dictionary> _dictionaryRepository,
|
IRepository<Dictionary> _dictionaryRepository,
|
||||||
|
IRepository<CriterionNidusSystem> _criterionNidusSystemRepository,
|
||||||
IRepository<SystemCriterionDictionaryCode> _systemCriterionDictionaryCodeRepository,
|
IRepository<SystemCriterionDictionaryCode> _systemCriterionDictionaryCodeRepository,
|
||||||
IReadingImageTaskService _iReadingImageTaskService,
|
IReadingImageTaskService _iReadingImageTaskService,
|
||||||
IRepository<ReadingSystemCriterionDictionary> _readingSystemCriterionDictionaryRepository,
|
IRepository<ReadingSystemCriterionDictionary> _readingSystemCriterionDictionaryRepository,
|
||||||
@@ -961,7 +962,12 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
{
|
{
|
||||||
question.RelevanceId = copyNewQuestionList.Where(y => x.RelevanceId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
question.RelevanceId = copyNewQuestionList.Where(y => x.RelevanceId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
||||||
}
|
}
|
||||||
needAddDatas.Add(question);
|
if (question.GroupId != null)
|
||||||
|
{
|
||||||
|
question.GroupId = copyNewQuestionList.Where(y => x.GroupId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
needAddDatas.Add(question);
|
||||||
};
|
};
|
||||||
|
|
||||||
await _readingQuestionSystemRepository.BatchDeleteNoTrackingAsync(x => x.ReadingQuestionCriterionSystemId == inDto.NewSystemCriterionId);
|
await _readingQuestionSystemRepository.BatchDeleteNoTrackingAsync(x => x.ReadingQuestionCriterionSystemId == inDto.NewSystemCriterionId);
|
||||||
@@ -970,14 +976,24 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
#region 表格问题
|
#region 表格问题
|
||||||
var newSystemTableQuestionList = await _readingTableQuestionSystemRepository.Where(x => x.SystemCriterionId == inDto.SourceSystemCriterionId)
|
var newSystemTableQuestionList = await _readingTableQuestionSystemRepository.Where(x => x.SystemCriterionId == inDto.SourceSystemCriterionId)
|
||||||
.ProjectTo<ReadingTableQuestionSystemData>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<ReadingTableQuestionSystemData>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var question in newSystemTableQuestionList)
|
||||||
|
{
|
||||||
|
question.SystemCriterionId = inDto.NewSystemCriterionId;
|
||||||
|
question.Id = NewId.NextGuid();
|
||||||
|
}
|
||||||
|
|
||||||
var copeNewSystemTableQuestionList = newSystemTableQuestionList.Clone();
|
var copeNewSystemTableQuestionList = newSystemTableQuestionList.Clone();
|
||||||
|
|
||||||
|
|
||||||
var needAddTableDatas = new List<ReadingTableQuestionSystemData>();
|
var needAddTableDatas = new List<ReadingTableQuestionSystemData>();
|
||||||
foreach (var x in newSystemTableQuestionList)
|
foreach (var x in newSystemTableQuestionList)
|
||||||
{
|
{
|
||||||
var tableQuestion = x.Clone();
|
var tableQuestion = x.Clone();
|
||||||
tableQuestion.SystemCriterionId = inDto.NewSystemCriterionId;
|
|
||||||
tableQuestion.Id = NewId.NextGuid();
|
tableQuestion.ReadingQuestionId = copyNewQuestionList.Where(y => x.ReadingQuestionId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
||||||
if (tableQuestion.ParentId != null)
|
if (tableQuestion.ParentId != null)
|
||||||
{
|
{
|
||||||
tableQuestion.ParentId = copeNewSystemTableQuestionList.Where(y => x.ParentId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
tableQuestion.ParentId = copeNewSystemTableQuestionList.Where(y => x.ParentId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
||||||
}
|
}
|
||||||
@@ -989,7 +1005,11 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
{
|
{
|
||||||
tableQuestion.DependParentId = copeNewSystemTableQuestionList.Where(y => x.DependParentId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
tableQuestion.DependParentId = copeNewSystemTableQuestionList.Where(y => x.DependParentId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
||||||
}
|
}
|
||||||
needAddTableDatas.Add(tableQuestion);
|
if (tableQuestion.ClassifyTableQuestionId != null)
|
||||||
|
{
|
||||||
|
tableQuestion.ClassifyTableQuestionId = copeNewSystemTableQuestionList.Where(y => x.ClassifyTableQuestionId == y.OriginalId).Select(y => y.Id).FirstOrDefault();
|
||||||
|
}
|
||||||
|
needAddTableDatas.Add(tableQuestion);
|
||||||
}
|
}
|
||||||
await _readingTableQuestionSystemRepository.BatchDeleteNoTrackingAsync(x => x.SystemCriterionId == inDto.NewSystemCriterionId);
|
await _readingTableQuestionSystemRepository.BatchDeleteNoTrackingAsync(x => x.SystemCriterionId == inDto.NewSystemCriterionId);
|
||||||
await _readingTableQuestionSystemRepository.AddRangeAsync(needAddTableDatas);
|
await _readingTableQuestionSystemRepository.AddRangeAsync(needAddTableDatas);
|
||||||
@@ -1035,7 +1055,17 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region criterionNidus
|
||||||
|
var criterionNidusSystems = await _criterionNidusSystemRepository.Where(x => x.CriterionId == inDto.SourceSystemCriterionId).ToListAsync();
|
||||||
|
|
||||||
|
criterionNidusSystems.ForEach(x =>
|
||||||
|
{
|
||||||
|
x.Id = NewId.NextGuid();
|
||||||
|
x.CriterionId = inDto.NewSystemCriterionId;
|
||||||
|
});
|
||||||
|
await _criterionNidusSystemRepository.BatchDeleteNoTrackingAsync(x => x.CriterionId == inDto.NewSystemCriterionId);
|
||||||
|
await _criterionNidusSystemRepository.AddRangeAsync(criterionNidusSystems);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||||||
{CriterionType.IVUS,typeof(IVUSCalculateService) },
|
{CriterionType.IVUS,typeof(IVUSCalculateService) },
|
||||||
{CriterionType.OCT,typeof(OCTCalculateService) },
|
{CriterionType.OCT,typeof(OCTCalculateService) },
|
||||||
{CriterionType.MRIPDFF,typeof(MRIPDFFCalculateService) },
|
{CriterionType.MRIPDFF,typeof(MRIPDFFCalculateService) },
|
||||||
|
{CriterionType.mRECISTHCC,typeof(MRECISTHCCCalculate) },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -13,6 +13,7 @@ using Microsoft.Extensions.Options;
|
|||||||
using NPOI.SS.Formula.Functions;
|
using NPOI.SS.Formula.Functions;
|
||||||
using Panda.DynamicWebApi.Attributes;
|
using Panda.DynamicWebApi.Attributes;
|
||||||
using ZiggyCreatures.Caching.Fusion;
|
using ZiggyCreatures.Caching.Fusion;
|
||||||
|
using static IRaCIS.Core.Domain.Share.StaticData;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
@@ -105,11 +106,43 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
//过滤废除的项目
|
//过滤废除的项目
|
||||||
public async Task<List<TrialSelectDTO>> GetTrialSelect()
|
public async Task<List<TrialSelectDTO>> GetTrialSelect()
|
||||||
{
|
{
|
||||||
|
// SuperAdmin Admin OP
|
||||||
|
List<int> sap = new List<int>() { (int)UserTypeEnum.SuperAdmin, (int)UserTypeEnum.Admin, (int)UserTypeEnum.OP };
|
||||||
|
|
||||||
|
// pm
|
||||||
|
List<int> pm = new List<int>() { (int)UserTypeEnum.ProjectManager };
|
||||||
|
|
||||||
|
// QA EA
|
||||||
|
List<int> qAEq= new List<int>() { (int)UserTypeEnum.QA, (int)UserTypeEnum.EA };
|
||||||
|
|
||||||
|
List<int> other = new List<int>() { };
|
||||||
|
|
||||||
|
other.AddRange(sap);
|
||||||
|
other.AddRange(pm);
|
||||||
|
other.AddRange(qAEq);
|
||||||
|
|
||||||
|
List<string> trialState = new List<string>() { StaticData.TrialState.TrialOngoing, StaticData.TrialState.TrialCompleted, StaticData.TrialState.TrialStopped };
|
||||||
return await _trialRepository.AsQueryable()
|
return await _trialRepository.AsQueryable()
|
||||||
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP,
|
|
||||||
t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId)) && t.IsDeleted == false)
|
//SuperAdmin Admin OP
|
||||||
.Where(t=>t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == _userInfo.UserTypeId))
|
.WhereIf(sap.Contains(_userInfo.UserTypeEnumInt),x=> trialState.Contains(x.TrialStatusStr))
|
||||||
&& (t.TrialStatusStr != StaticData.TrialState.TrialStopped || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager))
|
|
||||||
|
// pm
|
||||||
|
.WhereIf(pm.Contains(_userInfo.UserTypeEnumInt),t=> t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsDeleted == false
|
||||||
|
&& t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false))
|
||||||
|
&& t.IsDeleted == false)
|
||||||
|
|
||||||
|
|
||||||
|
// QA EA
|
||||||
|
.WhereIf(qAEq.Contains(_userInfo.UserTypeEnumInt), t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsDeleted == false
|
||||||
|
&& t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false))
|
||||||
|
&& t.IsDeleted == false && trialState.Contains(t.TrialStatusStr))
|
||||||
|
|
||||||
|
|
||||||
|
// other
|
||||||
|
.WhereIf(!other.Contains(_userInfo.UserTypeEnumInt), t => t.TrialIdentityUserList.Any(t => t.IdentityUserId == _userInfo.IdentityUserId && t.IsDeleted == false
|
||||||
|
&& t.TrialUserRoleList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false))
|
||||||
|
&& t.IsDeleted == false&& t.TrialStatusStr == StaticData.TrialState.TrialOngoing)
|
||||||
.ProjectTo<TrialSelectDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
.ProjectTo<TrialSelectDTO>(_mapper.ConfigurationProvider).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,8 +149,8 @@ namespace IRaCIS.Core.Application.Services
|
|||||||
public async Task<List<TrialSiteSelect>> GetTrialSiteSelectList(string? siteName)
|
public async Task<List<TrialSiteSelect>> GetTrialSiteSelectList(string? siteName)
|
||||||
{
|
{
|
||||||
var list = _siteRepository
|
var list = _siteRepository
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(siteName), t => t.SiteName.Contains(siteName) || t.SiteNameCN.Contains(siteName) || t.AliasName.Contains(siteName))
|
.WhereIf(!string.IsNullOrWhiteSpace(siteName), t => t.SiteName.Contains(siteName) || t.SiteNameCN.Contains(siteName) || t.AliasName.Contains(siteName))
|
||||||
.Select(t => new TrialSiteSelect() { SiteId = t.Id, SiteName = _userInfo.IsEn_Us ? t.SiteName : t.SiteNameCN, AliasName = t.AliasName })
|
.Select(t => new TrialSiteSelect() { SiteId = t.Id, SiteName = _userInfo.IsEn_Us ? t.SiteName : t.SiteNameCN, AliasName = t.AliasName }).ToList()
|
||||||
.OrderBy(x=>x.SiteName)
|
.OrderBy(x=>x.SiteName)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
TrialReadingCriterionList = intoGroup.Trial.TrialReadingCriterionList.Where(t => t.IsConfirm).Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, TrialReadingCriterionName = t.CriterionName, CriterionType = t.CriterionType, IsOncologyReading = t.IsOncologyReading, IsArbitrationReading = t.IsArbitrationReading, IsGlobalReading = t.IsGlobalReading, ReadingInfoSignTime = t.ReadingInfoSignTime, ReadingType = t.ReadingType }).ToList(),
|
TrialReadingCriterionList = intoGroup.Trial.TrialReadingCriterionList.Where(t => t.IsConfirm).Select(t => new TrialReadingCriterionDto() { TrialReadingCriterionId = t.Id, TrialReadingCriterionName = t.CriterionName, CriterionType = t.CriterionType, IsOncologyReading = t.IsOncologyReading, IsArbitrationReading = t.IsArbitrationReading, IsGlobalReading = t.IsGlobalReading, ReadingInfoSignTime = t.ReadingInfoSignTime, ReadingType = t.ReadingType }).ToList(),
|
||||||
|
|
||||||
DoctorCriterionStatusList = intoGroup.EnrollReadingCriteriaList.Select(t => new DoctorCriterionStatus()
|
DoctorCriterionStatusList = intoGroup.EnrollReadingCriteriaList.Where(t=>t.TrialReadingCriterion.IsConfirm).Select(t => new DoctorCriterionStatus()
|
||||||
{
|
{
|
||||||
EnrollId = t.Id,
|
EnrollId = t.Id,
|
||||||
Id = t.Id,
|
Id = t.Id,
|
||||||
@@ -228,9 +228,9 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
CriterionReadingCategoryList = intoGroup.EnrollReadingCategoryList.Select(t => new TrialCriterionReadingCategory() { EnrollId = t.EnrollId, ReadingCategory = t.ReadingCategory, TrialReadingCriterionId = t.TrialReadingCriterionId }).ToList(),
|
CriterionReadingCategoryList = intoGroup.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterion.IsConfirm).Select(t => new TrialCriterionReadingCategory() { EnrollId = t.EnrollId, ReadingCategory = t.ReadingCategory, TrialReadingCriterionId = t.TrialReadingCriterionId }).ToList(),
|
||||||
|
|
||||||
CriterionFileList = doctor.CriterionFileList.Where(x => x.IsEnable && (x.TrialId == null || x.TrialId == trialId)).Select(x => new CriterionFile()
|
CriterionFileList = doctor.CriterionFileList.Where(t => t.TrialReadingCriterion.IsConfirm).Where(x => x.IsEnable && (x.TrialId == null || x.TrialId == trialId)).Select(x => new CriterionFile()
|
||||||
{
|
{
|
||||||
CriterionType = x.CriterionType,
|
CriterionType = x.CriterionType,
|
||||||
DoctorId = x.DoctorId,
|
DoctorId = x.DoctorId,
|
||||||
@@ -242,7 +242,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
Id = x.Id
|
Id = x.Id
|
||||||
}).ToList(),
|
}).ToList(),
|
||||||
|
|
||||||
ReadingTaskStateList = intoGroup.DoctorUser.VisitTaskList.Where(x => x.TaskState == TaskState.Effect && x.TrialId == trialId).Select(x => new DoctorUserTask()
|
ReadingTaskStateList = intoGroup.DoctorUser.VisitTaskList.Where(t => t.TrialReadingCriterion.IsConfirm).Where(x => x.TaskState == TaskState.Effect && x.TrialId == trialId).Select(x => new DoctorUserTask()
|
||||||
{
|
{
|
||||||
ReadingTaskState = x.ReadingTaskState,
|
ReadingTaskState = x.ReadingTaskState,
|
||||||
TrialReadingCriterionId = x.TrialReadingCriterionId,
|
TrialReadingCriterionId = x.TrialReadingCriterionId,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Aliyun.OSS;
|
using Aliyun.OSS;
|
||||||
using DocumentFormat.OpenXml.Spreadsheet;
|
using DocumentFormat.OpenXml.Spreadsheet;
|
||||||
|
using FellowOakDicom.Imaging;
|
||||||
using IRaCIS.Application.Contracts;
|
using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Application.BusinessFilter;
|
using IRaCIS.Core.Application.BusinessFilter;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
@@ -7,6 +8,7 @@ using IRaCIS.Core.Application.Helper;
|
|||||||
using IRaCIS.Core.Application.Service.BusinessFilter;
|
using IRaCIS.Core.Application.Service.BusinessFilter;
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Domain;
|
using IRaCIS.Core.Domain;
|
||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
using IRaCIS.Core.Infra.EFCore;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
@@ -14,6 +16,7 @@ using IRaCIS.Core.Infrastructure.Encryption;
|
|||||||
using IRaCIS.Core.Infrastructure.NewtonsoftJson;
|
using IRaCIS.Core.Infrastructure.NewtonsoftJson;
|
||||||
using MassTransit;
|
using MassTransit;
|
||||||
using MassTransit.Mediator;
|
using MassTransit.Mediator;
|
||||||
|
using MaxMind.GeoIP2;
|
||||||
using Medallion.Threading;
|
using Medallion.Threading;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
@@ -26,8 +29,13 @@ using Microsoft.Extensions.Options;
|
|||||||
using MiniExcelLibs;
|
using MiniExcelLibs;
|
||||||
using NPOI.SS.Formula.Functions;
|
using NPOI.SS.Formula.Functions;
|
||||||
using NPOI.XWPF.UserModel;
|
using NPOI.XWPF.UserModel;
|
||||||
|
using SharpCompress.Common;
|
||||||
|
using SixLabors.ImageSharp;
|
||||||
|
using SixLabors.ImageSharp.Formats.Jpeg;
|
||||||
|
using SixLabors.ImageSharp.Processing;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Linq.Dynamic.Core;
|
using System.Linq.Dynamic.Core;
|
||||||
|
using System.Reactive.Subjects;
|
||||||
using System.Reflection.Metadata.Ecma335;
|
using System.Reflection.Metadata.Ecma335;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@@ -53,6 +61,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
IRepository<DicomSeries> _dicomSeriesRepository,
|
IRepository<DicomSeries> _dicomSeriesRepository,
|
||||||
IRepository<UserRole> _userRoleRepository,
|
IRepository<UserRole> _userRoleRepository,
|
||||||
IRepository<TrialBodyPart> _trialBodyPartRepository,
|
IRepository<TrialBodyPart> _trialBodyPartRepository,
|
||||||
|
IOSSService _IOSSService,
|
||||||
IDistributedLockProvider _distributedLockProvider,
|
IDistributedLockProvider _distributedLockProvider,
|
||||||
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
|
||||||
{
|
{
|
||||||
@@ -86,6 +95,176 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
await _readingConsistentClinicalDataRepository.SaveChangesAsync();
|
await _readingConsistentClinicalDataRepository.SaveChangesAsync();
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
public async Task<IResponseOutput> NewIP([FromServices] IRepository<UserLog> _userLogRepository, [FromServices] IRepository<IdentityUser> _identityUserRepository)
|
||||||
|
{
|
||||||
|
var path = Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources, "GeoLite2-City.mmdb");
|
||||||
|
|
||||||
|
|
||||||
|
var ipList = _userLogRepository.Select(t => t.IP).Distinct().ToList();
|
||||||
|
|
||||||
|
foreach (var ip in ipList)
|
||||||
|
{
|
||||||
|
var ipRegion = IPCityHelper.GetCityResponse(ip);
|
||||||
|
|
||||||
|
await _userLogRepository.BatchUpdateNoTrackingAsync(t => t.IP == ip, u => new UserLog() { IPRegion = ipRegion });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region 用户表最后一次登录的ipRegion 需要维护
|
||||||
|
|
||||||
|
var userList = _identityUserRepository.Where(t => t.LastLoginIP != "").Select(t => new { t.Id, t.LastLoginIP, t.UpdateUserId }).ToList();
|
||||||
|
|
||||||
|
foreach (var user in userList)
|
||||||
|
{
|
||||||
|
var lastLoginRegion = _userLogRepository.Where(t => t.ActionIdentityUserId == user.Id && (t.OptType == UserOptType.Login || t.OptType == UserOptType.LoginLockedAccount)).OrderByDescending(t => t.CreateTime).Select(t => t.IPRegion).FirstOrDefault()??string.Empty;
|
||||||
|
|
||||||
|
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == user.Id, u => new Domain.Models.IdentityUser() { LastLoginIP = lastLoginRegion, UpdateUserId = user.UpdateUserId });
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// IQC 回退到影像上传
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="subjectVisitIdList"></param>
|
||||||
|
/// <param name="_subjectVisitRepository"></param>
|
||||||
|
/// <param name="_trialQCQuestionAnswerRepository"></param>
|
||||||
|
/// <param name="_readingClinicalDataReposiotry"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[AllowAnonymous]
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<IResponseOutput> IQCBackToUpload(Guid[] subjectVisitIdList,
|
||||||
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
||||||
|
[FromServices] IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository,
|
||||||
|
[FromServices] IRepository<ReadingClinicalData> _readingClinicalDataReposiotry)
|
||||||
|
{
|
||||||
|
|
||||||
|
foreach (var subjectVisitId in subjectVisitIdList)
|
||||||
|
{
|
||||||
|
var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException();
|
||||||
|
|
||||||
|
|
||||||
|
//需要重新产生任务
|
||||||
|
sv.IsVisitTaskGenerated = false;
|
||||||
|
sv.IsPMBackOrReReading = true;
|
||||||
|
|
||||||
|
sv.AuditState = AuditStateEnum.None;
|
||||||
|
sv.SubmitState = SubmitStateEnum.ToSubmit;
|
||||||
|
sv.ReadingStatus = ReadingStatusEnum.ImageNotSubmit;
|
||||||
|
|
||||||
|
//回退后,回退状态恢复
|
||||||
|
sv.RequestBackState = RequestBackStateEnum.NotRequest;
|
||||||
|
sv.IsCheckBack = false;
|
||||||
|
sv.CheckBackTime = null;
|
||||||
|
sv.CheckState = CheckStateEnum.None;
|
||||||
|
sv.CheckChallengeState = CheckChanllengeTypeEnum.None;
|
||||||
|
|
||||||
|
sv.SVENDTC = null;
|
||||||
|
sv.SVSTDTC = null;
|
||||||
|
|
||||||
|
sv.PreliminaryAuditTime = null;
|
||||||
|
sv.SubmitTime = null;
|
||||||
|
sv.ReviewAuditTime = null;
|
||||||
|
sv.CurrentActionUserExpireTime = null;
|
||||||
|
|
||||||
|
|
||||||
|
sv.IsTake = false;
|
||||||
|
sv.CurrentActionUserId = null;
|
||||||
|
sv.PreliminaryAuditUserId = null;
|
||||||
|
sv.ReviewAuditUserId = null;
|
||||||
|
|
||||||
|
|
||||||
|
if (sv.IsBaseLine)
|
||||||
|
{
|
||||||
|
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && (t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.Subject || t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit), c => new ReadingClinicalData() { IsSign = false, ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded });
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
await _readingClinicalDataReposiotry.UpdatePartialFromQueryAsync(t => t.ReadingId == sv.Id && t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit, c => new ReadingClinicalData()
|
||||||
|
{
|
||||||
|
IsSign = false,
|
||||||
|
ReadingClinicalDataState = ReadingClinicalDataStatus.HaveUploaded,
|
||||||
|
IsBlind = null,
|
||||||
|
IsComplete = null
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
await _trialQCQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisitId == subjectVisitId);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var success = await _subjectVisitRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 后端处理某个中心缩略图有问题 先下载,生成缩略图上传,然后更新数据库
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[AllowAnonymous]
|
||||||
|
public async Task<IResponseOutput> BackImageResize(Guid trialSiteId, Guid subjectId/* , [FromServices] IRepository<>*/)
|
||||||
|
{
|
||||||
|
///${params.trialId}/ Image /${params.subjectId}/${params.subjectVisitId}/${ dicomInfo.studyUid}/${ v.seriesUid}.jpg
|
||||||
|
|
||||||
|
var dealSeriesList = await _dicomSeriesRepository.Where(t => t.DicomStudy.Subject.TrialSiteId == trialSiteId && t.SubjectId == subjectId).Select(t => new { t.Id, t.SubjectId, t.TrialId, t.SubjectVisitId, t.StudyInstanceUid, t.SeriesInstanceUid, t.ImageResizePath, t.UpdateUserId, FirstInstancePath = t.DicomInstanceList.First().Path }).ToListAsync();
|
||||||
|
|
||||||
|
//下载到本地
|
||||||
|
string tempFolderPath = Path.Combine(Directory.GetCurrentDirectory(), $"DownloadTemp_{NewId.NextGuid()}");
|
||||||
|
Directory.CreateDirectory(tempFolderPath);
|
||||||
|
|
||||||
|
foreach (var dealSeries in dealSeriesList)
|
||||||
|
{
|
||||||
|
var fileName = Path.GetFileNameWithoutExtension(dealSeries.FirstInstancePath);
|
||||||
|
|
||||||
|
var localFilePath = Path.Combine(tempFolderPath, fileName);
|
||||||
|
|
||||||
|
await _IOSSService.DownLoadFromOSSAsync(dealSeries.FirstInstancePath, localFilePath);
|
||||||
|
|
||||||
|
|
||||||
|
var resizePath = localFilePath + "_New.jpg";
|
||||||
|
|
||||||
|
//生成缩略图
|
||||||
|
|
||||||
|
// 读取 DICOM 文件
|
||||||
|
var dicomImage = new DicomImage(localFilePath);
|
||||||
|
|
||||||
|
|
||||||
|
// 渲染 DICOM 图像到 ImageSharp 格式
|
||||||
|
using (var image = dicomImage.RenderImage().AsSharpImage())
|
||||||
|
{
|
||||||
|
// 生成缩略图(调整大小)
|
||||||
|
image.Mutate(x => x.Resize(500, 500));
|
||||||
|
|
||||||
|
// 保存缩略图为 JPEG
|
||||||
|
image.Save(resizePath, new JpegEncoder());
|
||||||
|
}
|
||||||
|
|
||||||
|
var ossFolder = $"{dealSeries.TrialId}/Image/{dealSeries.SubjectId}/{dealSeries.SubjectVisitId}/{dealSeries.StudyInstanceUid}";
|
||||||
|
|
||||||
|
var relativePath = await _IOSSService.UploadToOSSAsync(resizePath, ossFolder, false);
|
||||||
|
|
||||||
|
await _dicomSeriesRepository.BatchUpdateNoTrackingAsync(t => t.Id == dealSeries.Id, u => new DicomSeries() { ImageResizePath = relativePath, UpdateUserId = dealSeries.UpdateUserId });
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<IResponseOutput> DeleteOSSDate(string rootFolder,
|
public async Task<IResponseOutput> DeleteOSSDate(string rootFolder,
|
||||||
[FromServices] IOSSService _oSSService, [FromServices] IWebHostEnvironment _hostEnvironment)
|
[FromServices] IOSSService _oSSService, [FromServices] IWebHostEnvironment _hostEnvironment)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using EntityFrameworkCore.Triggered;
|
using EntityFrameworkCore.Triggered;
|
||||||
using IP2Region.Net.Abstractions;
|
using IP2Region.Net.Abstractions;
|
||||||
|
using IRaCIS.Core.Application.Helper;
|
||||||
|
using MaxMind.GeoIP2;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Triggers
|
namespace IRaCIS.Core.Application.Triggers
|
||||||
{
|
{
|
||||||
@@ -18,10 +20,11 @@ namespace IRaCIS.Core.Application.Triggers
|
|||||||
if (context.ChangeType == ChangeType.Added)
|
if (context.ChangeType == ChangeType.Added)
|
||||||
{
|
{
|
||||||
|
|
||||||
var ipinfo = _searcher.Search(userLog.IP);
|
//var ipinfo = _searcher.Search(userLog.IP);
|
||||||
|
|
||||||
userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3));
|
//userLog.IPRegion = string.Join('|', ipinfo.Split('|').TakeLast(3));
|
||||||
|
|
||||||
|
userLog.IPRegion = IPCityHelper.GetCityResponse(userLog.IP);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,4 +19,17 @@ namespace IRaCIS.Core.Domain.Share
|
|||||||
PM_NotAgree=3,
|
PM_NotAgree=3,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ImageBackStateEnum
|
||||||
|
{
|
||||||
|
None=0,
|
||||||
|
|
||||||
|
CRCRequestBack=1,
|
||||||
|
|
||||||
|
IQCRequestBack=2,
|
||||||
|
|
||||||
|
PMAgreeBack=3,
|
||||||
|
|
||||||
|
PMNotAgreeBack = 4,
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ public class DoctorCriterionFile : BaseAddAuditEntity
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("DoctorId")]
|
[ForeignKey("DoctorId")]
|
||||||
public Doctor Doctor { get; set; }
|
public Doctor Doctor { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialReadingCriterionId")]
|
||||||
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public string CriterionName { get; set; } = null!;
|
public string CriterionName { get; set; } = null!;
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ public class EnrollReadingCriterion : BaseAddAuditEntity
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("EnrollId")]
|
[ForeignKey("EnrollId")]
|
||||||
public Enroll Enroll { get; set; }
|
public Enroll Enroll { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialReadingCriterionId")]
|
||||||
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
public Guid EnrollId { get; set; }
|
public Guid EnrollId { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Domain.Models
|
||||||
|
{
|
||||||
|
[Comment("稽查文档管理")]
|
||||||
|
[Table("AuditDocument")]
|
||||||
|
public class AuditDocument : BaseFullAuditEntity
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件夹名或者文件名
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文档类型
|
||||||
|
/// </summary>
|
||||||
|
public AuditDocumentType AuditDocumentTypeEnum { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 父文件夹Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid? ParentId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件路径
|
||||||
|
/// </summary>
|
||||||
|
[StringLength(1000)]
|
||||||
|
public string FilePath { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件大小
|
||||||
|
/// </summary>
|
||||||
|
public decimal? FileSize { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件类型
|
||||||
|
/// </summary>
|
||||||
|
public string FileFormat { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 版本
|
||||||
|
/// </summary>
|
||||||
|
public int? Version { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 主文件Id
|
||||||
|
/// </summary>
|
||||||
|
public Guid? MainFileId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否授权
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAuthorization { get; set; } = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 稽查文档类型
|
||||||
|
/// </summary>
|
||||||
|
public enum AuditDocumentType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 文件夹
|
||||||
|
/// </summary>
|
||||||
|
Folder = 0,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 文件
|
||||||
|
/// </summary>
|
||||||
|
File = 1,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 历史版本
|
||||||
|
/// </summary>
|
||||||
|
HistoricalVersion = 2,
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -44,6 +44,9 @@ public class UserLog : BaseAddAuditEntity
|
|||||||
[Comment("异地登录")]
|
[Comment("异地登录")]
|
||||||
public bool IsLoginUncommonly { get; set; }
|
public bool IsLoginUncommonly { get; set; }
|
||||||
|
|
||||||
|
[Comment("是否忽略异地登录")]
|
||||||
|
public bool IsIgnoreUncommonly { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#region 后续删除
|
#region 后续删除
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ public class EnrollReadingCategory : BaseAddAuditEntity
|
|||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
[ForeignKey("EnrollId")]
|
[ForeignKey("EnrollId")]
|
||||||
public Enroll Enroll { get; set; }
|
public Enroll Enroll { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
[ForeignKey("TrialReadingCriterionId")]
|
||||||
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
public Guid EnrollId { get; set; }
|
public Guid EnrollId { get; set; }
|
||||||
public ReadingCategory ReadingCategory { get; set; }
|
public ReadingCategory ReadingCategory { get; set; }
|
||||||
|
|||||||
@@ -161,6 +161,7 @@ public class SubjectVisit : BaseFullDeleteAuditEntity
|
|||||||
public DateTime? CheckPassedTime { get; set; }
|
public DateTime? CheckPassedTime { get; set; }
|
||||||
[Comment("计划外上一访视")]
|
[Comment("计划外上一访视")]
|
||||||
public Guid? OutPlanPreviousVisitId { get; set; }
|
public Guid? OutPlanPreviousVisitId { get; set; }
|
||||||
|
[Comment("一致性核查 回退")]
|
||||||
public RequestBackStateEnum RequestBackState { get; set; }
|
public RequestBackStateEnum RequestBackState { get; set; }
|
||||||
public bool IsQCConfirmedReupload { get; set; }
|
public bool IsQCConfirmedReupload { get; set; }
|
||||||
|
|
||||||
@@ -180,5 +181,8 @@ public class SubjectVisit : BaseFullDeleteAuditEntity
|
|||||||
|
|
||||||
public Guid? SubmitUserId { get; set; }
|
public Guid? SubmitUserId { get; set; }
|
||||||
public ReadingStatusEnum ReadingStatus { get; set; }
|
public ReadingStatusEnum ReadingStatus { get; set; }
|
||||||
|
|
||||||
|
[Comment("影像上传 回退")]
|
||||||
|
public ImageBackStateEnum ImageBackState { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -648,6 +648,8 @@ public class IRaCISDBContext : DbContext
|
|||||||
|
|
||||||
#region 报告、 文档、记录
|
#region 报告、 文档、记录
|
||||||
|
|
||||||
|
public virtual DbSet<AuditDocument> AuditDocument { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<SysFileType> SysFileType { get; set; }
|
public virtual DbSet<SysFileType> SysFileType { get; set; }
|
||||||
public virtual DbSet<TrialFileType> TrialFileType { get; set; }
|
public virtual DbSet<TrialFileType> TrialFileType { get; set; }
|
||||||
public virtual DbSet<TrialFinalRecord> TrialFinalRecord { get; set; }
|
public virtual DbSet<TrialFinalRecord> TrialFinalRecord { get; set; }
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="EFCore.BulkExtensions" Version="8.1.1" />
|
<PackageReference Include="EFCore.BulkExtensions" Version="8.1.3" />
|
||||||
<PackageReference Include="EntityFrameworkCore.Triggered" Version="3.2.2" />
|
<PackageReference Include="EntityFrameworkCore.Triggered" Version="3.2.2" />
|
||||||
<PackageReference Include="EntityFrameworkCore.Projectables" Version="3.0.4" />
|
<PackageReference Include="EntityFrameworkCore.Projectables" Version="3.0.4" />
|
||||||
<PackageReference Include="EntityFrameworkCore.Exceptions.SqlServer" Version="8.1.3" />
|
<PackageReference Include="EntityFrameworkCore.Exceptions.SqlServer" Version="8.1.3" />
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<PackageReference Include="MassTransit.Hangfire" Version="8.3.0" />
|
<PackageReference Include="MassTransit.Hangfire" Version="8.3.0" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="8.0.10" />
|
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="8.0.10" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.1" />
|
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.1" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.10" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.14" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
|||||||
+19234
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,58 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AuditDocument : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "AuditDocument",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
|
||||||
|
AuditDocumentEnum = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ParentId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
||||||
|
FilePath = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: false),
|
||||||
|
FileSize = table.Column<decimal>(type: "decimal(18,2)", precision: 18, scale: 2, nullable: true),
|
||||||
|
FileFormat = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
|
||||||
|
Version = table.Column<int>(type: "int", nullable: true),
|
||||||
|
MainFileId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
||||||
|
IsAuthorization = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||||
|
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||||
|
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||||
|
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_AuditDocument", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_AuditDocument_User_CreateUserId",
|
||||||
|
column: x => x.CreateUserId,
|
||||||
|
principalTable: "User",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
},
|
||||||
|
comment: "稽查文档管理");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_AuditDocument_CreateUserId",
|
||||||
|
table: "AuditDocument",
|
||||||
|
column: "CreateUserId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "AuditDocument");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+19234
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,28 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class AuditDocumenttype : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "AuditDocumentEnum",
|
||||||
|
table: "AuditDocument",
|
||||||
|
newName: "AuditDocumentTypeEnum");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.RenameColumn(
|
||||||
|
name: "AuditDocumentTypeEnum",
|
||||||
|
table: "AuditDocument",
|
||||||
|
newName: "AuditDocumentEnum");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+19267
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,110 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class SVImageBack : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AlterColumn<int>(
|
||||||
|
name: "RequestBackState",
|
||||||
|
table: "SubjectVisit",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
comment: "一致性核查 回退",
|
||||||
|
oldClrType: typeof(int),
|
||||||
|
oldType: "int");
|
||||||
|
|
||||||
|
migrationBuilder.AddColumn<int>(
|
||||||
|
name: "ImageBackState",
|
||||||
|
table: "SubjectVisit",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: 0,
|
||||||
|
comment: "影像上传 回退");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_EnrollReadingCriterion_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCriterion",
|
||||||
|
column: "TrialReadingCriterionId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_EnrollReadingCategory_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCategory",
|
||||||
|
column: "TrialReadingCriterionId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_DoctorCriterionFile_TrialReadingCriterionId",
|
||||||
|
table: "DoctorCriterionFile",
|
||||||
|
column: "TrialReadingCriterionId");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_DoctorCriterionFile_ReadingQuestionCriterionTrial_TrialReadingCriterionId",
|
||||||
|
table: "DoctorCriterionFile",
|
||||||
|
column: "TrialReadingCriterionId",
|
||||||
|
principalTable: "ReadingQuestionCriterionTrial",
|
||||||
|
principalColumn: "Id");
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EnrollReadingCategory_ReadingQuestionCriterionTrial_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCategory",
|
||||||
|
column: "TrialReadingCriterionId",
|
||||||
|
principalTable: "ReadingQuestionCriterionTrial",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
|
||||||
|
migrationBuilder.AddForeignKey(
|
||||||
|
name: "FK_EnrollReadingCriterion_ReadingQuestionCriterionTrial_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCriterion",
|
||||||
|
column: "TrialReadingCriterionId",
|
||||||
|
principalTable: "ReadingQuestionCriterionTrial",
|
||||||
|
principalColumn: "Id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_DoctorCriterionFile_ReadingQuestionCriterionTrial_TrialReadingCriterionId",
|
||||||
|
table: "DoctorCriterionFile");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EnrollReadingCategory_ReadingQuestionCriterionTrial_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCategory");
|
||||||
|
|
||||||
|
migrationBuilder.DropForeignKey(
|
||||||
|
name: "FK_EnrollReadingCriterion_ReadingQuestionCriterionTrial_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCriterion");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_EnrollReadingCriterion_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCriterion");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_EnrollReadingCategory_TrialReadingCriterionId",
|
||||||
|
table: "EnrollReadingCategory");
|
||||||
|
|
||||||
|
migrationBuilder.DropIndex(
|
||||||
|
name: "IX_DoctorCriterionFile_TrialReadingCriterionId",
|
||||||
|
table: "DoctorCriterionFile");
|
||||||
|
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "ImageBackState",
|
||||||
|
table: "SubjectVisit");
|
||||||
|
|
||||||
|
migrationBuilder.AlterColumn<int>(
|
||||||
|
name: "RequestBackState",
|
||||||
|
table: "SubjectVisit",
|
||||||
|
type: "int",
|
||||||
|
nullable: false,
|
||||||
|
oldClrType: typeof(int),
|
||||||
|
oldType: "int",
|
||||||
|
oldComment: "一致性核查 回退");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+19166
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,30 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace IRaCIS.Core.Infra.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class IsIgnoreUncommonly : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.AddColumn<bool>(
|
||||||
|
name: "IsIgnoreUncommonly",
|
||||||
|
table: "UserLog",
|
||||||
|
type: "bit",
|
||||||
|
nullable: false,
|
||||||
|
defaultValue: false,
|
||||||
|
comment: "是否忽略异地登录");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropColumn(
|
||||||
|
name: "IsIgnoreUncommonly",
|
||||||
|
table: "UserLog");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -17,7 +17,7 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
{
|
{
|
||||||
#pragma warning disable 612, 618
|
#pragma warning disable 612, 618
|
||||||
modelBuilder
|
modelBuilder
|
||||||
.HasAnnotation("ProductVersion", "8.0.10")
|
.HasAnnotation("ProductVersion", "8.0.14")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||||
|
|
||||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
|
||||||
@@ -94,6 +94,67 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocument", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<int>("AuditDocumentTypeEnum")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.Property<DateTime>("CreateTime")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<Guid>("CreateUserId")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<string>("FileFormat")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(400)
|
||||||
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
|
b.Property<string>("FilePath")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(1000)
|
||||||
|
.HasColumnType("nvarchar(1000)");
|
||||||
|
|
||||||
|
b.Property<decimal?>("FileSize")
|
||||||
|
.HasPrecision(18, 2)
|
||||||
|
.HasColumnType("decimal(18,2)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsAuthorization")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<Guid?>("MainFileId")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<string>("Name")
|
||||||
|
.IsRequired()
|
||||||
|
.HasMaxLength(400)
|
||||||
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
|
b.Property<Guid?>("ParentId")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<DateTime>("UpdateTime")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<Guid>("UpdateUserId")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<int?>("Version")
|
||||||
|
.HasColumnType("int");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("CreateUserId");
|
||||||
|
|
||||||
|
b.ToTable("AuditDocument", t =>
|
||||||
|
{
|
||||||
|
t.HasComment("稽查文档管理");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
@@ -1747,6 +1808,8 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
|
|
||||||
b.HasIndex("DoctorId");
|
b.HasIndex("DoctorId");
|
||||||
|
|
||||||
|
b.HasIndex("TrialReadingCriterionId");
|
||||||
|
|
||||||
b.ToTable("DoctorCriterionFile", t =>
|
b.ToTable("DoctorCriterionFile", t =>
|
||||||
{
|
{
|
||||||
t.HasComment("医生 - 项目标准签名文档");
|
t.HasComment("医生 - 项目标准签名文档");
|
||||||
@@ -2261,6 +2324,8 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
|
|
||||||
b.HasIndex("EnrollId");
|
b.HasIndex("EnrollId");
|
||||||
|
|
||||||
|
b.HasIndex("TrialReadingCriterionId");
|
||||||
|
|
||||||
b.ToTable("EnrollReadingCategory", t =>
|
b.ToTable("EnrollReadingCategory", t =>
|
||||||
{
|
{
|
||||||
t.HasComment("医生 - 项目阅片标准阅片类型配置表");
|
t.HasComment("医生 - 项目阅片标准阅片类型配置表");
|
||||||
@@ -2293,6 +2358,8 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
|
|
||||||
b.HasIndex("EnrollId");
|
b.HasIndex("EnrollId");
|
||||||
|
|
||||||
|
b.HasIndex("TrialReadingCriterionId");
|
||||||
|
|
||||||
b.ToTable("EnrollReadingCriterion", t =>
|
b.ToTable("EnrollReadingCriterion", t =>
|
||||||
{
|
{
|
||||||
t.HasComment("医生 - 项目阅片标准参与一致性分析配置表");
|
t.HasComment("医生 - 项目阅片标准参与一致性分析配置表");
|
||||||
@@ -8825,6 +8892,10 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
b.Property<Guid?>("ForwardUserId")
|
b.Property<Guid?>("ForwardUserId")
|
||||||
.HasColumnType("uniqueidentifier");
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<int>("ImageBackState")
|
||||||
|
.HasColumnType("int")
|
||||||
|
.HasComment("影像上传 回退");
|
||||||
|
|
||||||
b.Property<bool>("InPlan")
|
b.Property<bool>("InPlan")
|
||||||
.HasColumnType("bit");
|
.HasColumnType("bit");
|
||||||
|
|
||||||
@@ -8894,7 +8965,8 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
.HasColumnType("int");
|
.HasColumnType("int");
|
||||||
|
|
||||||
b.Property<int>("RequestBackState")
|
b.Property<int>("RequestBackState")
|
||||||
.HasColumnType("int");
|
.HasColumnType("int")
|
||||||
|
.HasComment("一致性核查 回退");
|
||||||
|
|
||||||
b.Property<DateTime?>("ReviewAuditTime")
|
b.Property<DateTime?>("ReviewAuditTime")
|
||||||
.HasColumnType("datetime2");
|
.HasColumnType("datetime2");
|
||||||
@@ -13488,6 +13560,10 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
.HasMaxLength(400)
|
.HasMaxLength(400)
|
||||||
.HasColumnType("nvarchar(400)");
|
.HasColumnType("nvarchar(400)");
|
||||||
|
|
||||||
|
b.Property<bool>("IsIgnoreUncommonly")
|
||||||
|
.HasColumnType("bit")
|
||||||
|
.HasComment("是否忽略异地登录");
|
||||||
|
|
||||||
b.Property<bool>("IsLoginUncommonly")
|
b.Property<bool>("IsLoginUncommonly")
|
||||||
.HasColumnType("bit")
|
.HasColumnType("bit")
|
||||||
.HasComment("异地登录");
|
.HasComment("异地登录");
|
||||||
@@ -14547,6 +14623,17 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
b.Navigation("Doctor");
|
b.Navigation("Doctor");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.AuditDocument", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("CreateUserId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
|
b.Navigation("CreateUserRole");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.CRO", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
|
b.HasOne("IRaCIS.Core.Domain.Models.UserRole", "CreateUserRole")
|
||||||
@@ -14913,9 +15000,15 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial", "TrialReadingCriterion")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("TrialReadingCriterionId");
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
b.Navigation("CreateUserRole");
|
||||||
|
|
||||||
b.Navigation("Doctor");
|
b.Navigation("Doctor");
|
||||||
|
|
||||||
|
b.Navigation("TrialReadingCriterion");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.DoctorDictionary", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.DoctorDictionary", b =>
|
||||||
@@ -15055,9 +15148,17 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial", "TrialReadingCriterion")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("TrialReadingCriterionId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
b.Navigation("CreateUserRole");
|
||||||
|
|
||||||
b.Navigation("Enroll");
|
b.Navigation("Enroll");
|
||||||
|
|
||||||
|
b.Navigation("TrialReadingCriterion");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.EnrollReadingCriterion", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.EnrollReadingCriterion", b =>
|
||||||
@@ -15074,9 +15175,17 @@ namespace IRaCIS.Core.Infra.EFCore.Migrations
|
|||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired();
|
.IsRequired();
|
||||||
|
|
||||||
|
b.HasOne("IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial", "TrialReadingCriterion")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("TrialReadingCriterionId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired();
|
||||||
|
|
||||||
b.Navigation("CreateUserRole");
|
b.Navigation("CreateUserRole");
|
||||||
|
|
||||||
b.Navigation("Enroll");
|
b.Navigation("Enroll");
|
||||||
|
|
||||||
|
b.Navigation("TrialReadingCriterion");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("IRaCIS.Core.Domain.Models.EventStoreRecord", b =>
|
modelBuilder.Entity("IRaCIS.Core.Domain.Models.EventStoreRecord", b =>
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
<PackageReference Include="SharpCompress" Version="0.38.0" />
|
<PackageReference Include="SharpCompress" Version="0.38.0" />
|
||||||
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
<PackageReference Include="SharpZipLib" Version="1.4.2" />
|
||||||
<PackageReference Include="BouncyCastle.Cryptography" Version="2.4.0" />
|
<PackageReference Include="BouncyCastle.Cryptography" Version="2.4.0" />
|
||||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.6" />
|
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -49,11 +49,11 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Fluid.Core" Version="2.11.1" />
|
<PackageReference Include="Fluid.Core" Version="2.21.0" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.10" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.3" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="8.0.10" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="9.0.3" />
|
||||||
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.10" />
|
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.11" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.10">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.14">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
Reference in New Issue
Block a user