Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0a2513245c | |||
| f10cc0adbf | |||
| 58b2f9c7a9 | |||
| 472e744b6c | |||
| 699df338c1 | |||
| a64127537e | |||
| 2287c8869d | |||
| 0d8319feaa | |||
| 676c5b0e74 | |||
| a76654c210 | |||
| 0a29d431dc | |||
| 86562b39e3 | |||
| 86fe43aa93 | |||
| 082998da09 | |||
| d209a8de4d | |||
| b1608812ec | |||
| 20c18d957a | |||
| 7a7011e7ef | |||
| 24a395f8c8 | |||
| df2f179917 | |||
| 1bcc831937 | |||
| 75bf85997a | |||
| 074cba906c | |||
| 86db676df8 | |||
| bc67f16735 | |||
| 3e046e24e9 | |||
| c971161d31 | |||
| a63904c0bb | |||
| 572d4ea4b8 | |||
| ae4345cfcc | |||
| a536c33302 | |||
| be5c9b636e | |||
| c71bf65cd9 | |||
| 69c5ce9841 | |||
| 2139193df4 | |||
| 9aa2f23a67 | |||
| 531e0fa228 | |||
| 250c478687 | |||
| 09ba37ec6d | |||
| 913b673b72 | |||
| 5ee8a3db21 | |||
| 3c41789ba9 | |||
| d2268f0706 | |||
| e8496df81a | |||
| 3e24fe9461 | |||
| d771ab0f6f | |||
| 29dfa03d0f | |||
| 44e9b211c2 | |||
| b1154ea594 | |||
| 6dd12b419b | |||
| bce7c1cc99 | |||
| a660eb4f37 | |||
| 3ade13a922 | |||
| a5fed78c19 | |||
| 5207fef130 | |||
| b8ad8085cd | |||
| dc8451f55c | |||
| dd9ec3d8fe |
@@ -800,7 +800,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||||||
templateFileStream.Seek(0, SeekOrigin.Begin);
|
templateFileStream.Seek(0, SeekOrigin.Begin);
|
||||||
|
|
||||||
|
|
||||||
var ossRelativePath = oSSService.UploadToOSS(fileStream, "InspectionUpload/Check", realFileName);
|
var ossRelativePath = oSSService.UploadToOSS(fileStream, "InspectionUpload/Check", $"{Guid.NewGuid()}_" + realFileName);
|
||||||
|
|
||||||
await _repository.AddAsync(new InspectionFile() { FileName = realFileName, RelativePath = ossRelativePath, TrialId = trialId });
|
await _repository.AddAsync(new InspectionFile() { FileName = realFileName, RelativePath = ossRelativePath, TrialId = trialId });
|
||||||
|
|
||||||
@@ -1024,7 +1024,7 @@ namespace IRaCIS.Core.API.Controllers
|
|||||||
throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_TemplateUploadData"));
|
throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_TemplateUploadData"));
|
||||||
}
|
}
|
||||||
|
|
||||||
var ossRelativePath = oSSService.UploadToOSS(fileStream, "InspectionUpload/SiteSurvey", realFileName);
|
var ossRelativePath = oSSService.UploadToOSS(fileStream, "InspectionUpload/SiteSurvey", $"{Guid.NewGuid()}_"+ realFileName);
|
||||||
|
|
||||||
await _inspectionFileRepository.AddAsync(new InspectionFile() { FileName = realFileName, RelativePath = ossRelativePath, TrialId = trialId });
|
await _inspectionFileRepository.AddAsync(new InspectionFile() { FileName = realFileName, RelativePath = ossRelativePath, TrialId = trialId });
|
||||||
|
|
||||||
|
|||||||
+33
-33
@@ -1,4 +1,4 @@
|
|||||||
using Autofac;
|
using Autofac;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http.Features;
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
@@ -53,7 +53,7 @@ namespace IRaCIS.Core.API
|
|||||||
containerBuilder.RegisterModule<AutofacModuleSetup>();
|
containerBuilder.RegisterModule<AutofacModuleSetup>();
|
||||||
|
|
||||||
#region Test
|
#region Test
|
||||||
//containerBuilder.RegisterType<ClinicalDataService>().PropertiesAutowired().InstancePerLifetimeScope();//注册仓储
|
//containerBuilder.RegisterType<ClinicalDataService>().PropertiesAutowired().InstancePerLifetimeScope();//注册仓储
|
||||||
|
|
||||||
//var container = containerBuilder.Build();
|
//var container = containerBuilder.Build();
|
||||||
|
|
||||||
@@ -75,12 +75,12 @@ namespace IRaCIS.Core.API
|
|||||||
// This method gets called by the runtime. Use this method to add services to the container.
|
// This method gets called by the runtime. Use this method to add services to the container.
|
||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
//健康检查
|
//健康检查
|
||||||
services.AddHealthChecks();
|
services.AddHealthChecks();
|
||||||
//本地化
|
//本地化
|
||||||
services.AddJsonLocalization(options => options.ResourcesPath = "Resources");
|
services.AddJsonLocalization(options => options.ResourcesPath = "Resources");
|
||||||
|
|
||||||
// 异常、参数统一验证过滤器、Json序列化配置、字符串参数绑型统一Trim()
|
// 异常、参数统一验证过滤器、Json序列化配置、字符串参数绑型统一Trim()
|
||||||
services.AddControllers(options =>
|
services.AddControllers(options =>
|
||||||
{
|
{
|
||||||
//options.Filters.Add<LogActionFilter>();
|
//options.Filters.Add<LogActionFilter>();
|
||||||
@@ -95,7 +95,7 @@ namespace IRaCIS.Core.API
|
|||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
.AddNewtonsoftJsonSetup(); // NewtonsoftJson 序列化 处理
|
.AddNewtonsoftJsonSetup(); // NewtonsoftJson 序列化 处理
|
||||||
|
|
||||||
services.AddOptions().Configure<SystemEmailSendConfig>(_configuration.GetSection("SystemEmailSendConfig"));
|
services.AddOptions().Configure<SystemEmailSendConfig>(_configuration.GetSection("SystemEmailSendConfig"));
|
||||||
services.AddOptions().Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig"));
|
services.AddOptions().Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig"));
|
||||||
@@ -103,62 +103,62 @@ namespace IRaCIS.Core.API
|
|||||||
services.AddOptions().Configure<ObjectStoreServiceOptions>(_configuration.GetSection("ObjectStoreService"));
|
services.AddOptions().Configure<ObjectStoreServiceOptions>(_configuration.GetSection("ObjectStoreService"));
|
||||||
|
|
||||||
|
|
||||||
//动态WebApi + UnifiedApiResultFilter 省掉控制器代码
|
//动态WebApi + UnifiedApiResultFilter 省掉控制器代码
|
||||||
services.AddDynamicWebApiSetup();
|
services.AddDynamicWebApiSetup();
|
||||||
//AutoMapper
|
//AutoMapper
|
||||||
services.AddAutoMapperSetup();
|
services.AddAutoMapperSetup();
|
||||||
//EF ORM QueryWithNoLock
|
//EF ORM QueryWithNoLock
|
||||||
services.AddEFSetup(_configuration);
|
services.AddEFSetup(_configuration);
|
||||||
//Http 响应压缩
|
//Http 响应压缩
|
||||||
services.AddResponseCompressionSetup();
|
services.AddResponseCompressionSetup();
|
||||||
//Swagger Api 文档
|
//Swagger Api 文档
|
||||||
services.AddSwaggerSetup();
|
services.AddSwaggerSetup();
|
||||||
//JWT Token 验证
|
//JWT Token 验证
|
||||||
services.AddJWTAuthSetup(_configuration);
|
services.AddJWTAuthSetup(_configuration);
|
||||||
// MediatR 进程内消息 事件解耦 从程序集中 注册命令和handler对应关系
|
// MediatR 进程内消息 事件解耦 从程序集中 注册命令和handler对应关系
|
||||||
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<ConsistencyVerificationHandler>());
|
services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<ConsistencyVerificationHandler>());
|
||||||
// EasyCaching 缓存
|
// EasyCaching 缓存
|
||||||
services.AddEasyCachingSetup(_configuration);
|
services.AddEasyCachingSetup(_configuration);
|
||||||
|
|
||||||
//services.AddDistributedMemoryCache();
|
//services.AddDistributedMemoryCache();
|
||||||
|
|
||||||
// hangfire 定时任务框架 有界面,更友好~
|
// hangfire 定时任务框架 有界面,更友好~
|
||||||
services.AddhangfireSetup(_configuration);
|
services.AddhangfireSetup(_configuration);
|
||||||
|
|
||||||
// QuartZ 定时任务框架 使用了hangfire 暂时不用,后续需要可以打开,已经配好
|
// QuartZ 定时任务框架 使用了hangfire 暂时不用,后续需要可以打开,已经配好
|
||||||
services.AddQuartZSetup(_configuration);
|
services.AddQuartZSetup(_configuration);
|
||||||
|
|
||||||
// 保护上传文件
|
// 保护上传文件
|
||||||
//services.AddStaticFileAuthorizationSetup();
|
//services.AddStaticFileAuthorizationSetup();
|
||||||
|
|
||||||
|
|
||||||
////HttpReports 暂时废弃
|
////HttpReports 暂时废弃
|
||||||
//services.AddHttpReports().AddHttpTransport();
|
//services.AddHttpReports().AddHttpTransport();
|
||||||
//Serilog 日志可视化 LogDashboard日志
|
//Serilog 日志可视化 LogDashboard日志
|
||||||
services.AddLogDashboardSetup();
|
services.AddLogDashboardSetup();
|
||||||
//上传限制 配置
|
//上传限制 配置
|
||||||
services.Configure<FormOptions>(options =>
|
services.Configure<FormOptions>(options =>
|
||||||
{
|
{
|
||||||
options.MultipartBodyLengthLimit = int.MaxValue;
|
options.MultipartBodyLengthLimit = int.MaxValue;
|
||||||
options.ValueCountLimit = int.MaxValue;
|
options.ValueCountLimit = int.MaxValue;
|
||||||
options.ValueLengthLimit = int.MaxValue;
|
options.ValueLengthLimit = int.MaxValue;
|
||||||
});
|
});
|
||||||
//IP 限流 可设置白名单 或者黑名单
|
//IP 限流 可设置白名单 或者黑名单
|
||||||
//services.AddIpPolicyRateLimitSetup(_configuration);
|
//services.AddIpPolicyRateLimitSetup(_configuration);
|
||||||
// 用户类型 策略授权
|
// 用户类型 策略授权
|
||||||
//services.AddAuthorizationPolicySetup(_configuration);
|
//services.AddAuthorizationPolicySetup(_configuration);
|
||||||
|
|
||||||
services.AddJsonConfigSetup(_configuration);
|
services.AddJsonConfigSetup(_configuration);
|
||||||
//转发头设置 获取真实IP
|
//转发头设置 获取真实IP
|
||||||
services.Configure<ForwardedHeadersOptions>(options =>
|
services.Configure<ForwardedHeadersOptions>(options =>
|
||||||
{
|
{
|
||||||
options.ForwardedHeaders =
|
options.ForwardedHeaders =
|
||||||
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
|
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
|
||||||
});
|
});
|
||||||
//Dicom影像渲染图片 跨平台
|
//Dicom影像渲染图片 跨平台
|
||||||
services.AddDicomSetup();
|
services.AddDicomSetup();
|
||||||
|
|
||||||
// 实时应用
|
// 实时应用
|
||||||
services.AddSignalR();
|
services.AddSignalR();
|
||||||
|
|
||||||
|
|
||||||
@@ -175,17 +175,17 @@ namespace IRaCIS.Core.API
|
|||||||
{
|
{
|
||||||
//app.UsePathBase(PathString.FromUriComponent("/api"));
|
//app.UsePathBase(PathString.FromUriComponent("/api"));
|
||||||
|
|
||||||
//本地化
|
//本地化
|
||||||
app.UseLocalization();
|
app.UseLocalization();
|
||||||
|
|
||||||
app.UseForwardedHeaders();
|
app.UseForwardedHeaders();
|
||||||
|
|
||||||
//响应压缩
|
//响应压缩
|
||||||
app.UseResponseCompression();
|
app.UseResponseCompression();
|
||||||
|
|
||||||
//app.UseCors(t => t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
|
//app.UseCors(t => t.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
|
||||||
|
|
||||||
//不需要 token 访问的静态文件 wwwroot css, JavaScript, and images don't require authentication.
|
//不需要 token 访问的静态文件 wwwroot css, JavaScript, and images don't require authentication.
|
||||||
app.UseStaticFiles();
|
app.UseStaticFiles();
|
||||||
|
|
||||||
|
|
||||||
@@ -195,10 +195,10 @@ namespace IRaCIS.Core.API
|
|||||||
//hangfire
|
//hangfire
|
||||||
app.UseHangfireConfig(env);
|
app.UseHangfireConfig(env);
|
||||||
|
|
||||||
////暂时废弃
|
////暂时废弃
|
||||||
//app.UseHttpReports();
|
//app.UseHttpReports();
|
||||||
|
|
||||||
////限流 中间件
|
////限流 中间件
|
||||||
//app.UseIpRateLimiting();
|
//app.UseIpRateLimiting();
|
||||||
|
|
||||||
|
|
||||||
@@ -211,18 +211,18 @@ namespace IRaCIS.Core.API
|
|||||||
{
|
{
|
||||||
//app.UseHsts();
|
//app.UseHsts();
|
||||||
}
|
}
|
||||||
Console.WriteLine("当前环境: " + env.EnvironmentName);
|
Console.WriteLine("当前环境: " + env.EnvironmentName);
|
||||||
|
|
||||||
//app.UseMiddleware<AuthMiddleware>();
|
//app.UseMiddleware<AuthMiddleware>();
|
||||||
|
|
||||||
// 特殊异常处理 比如 404
|
// 特殊异常处理 比如 404
|
||||||
app.UseStatusCodePagesWithReExecute("/Error/{0}");
|
app.UseStatusCodePagesWithReExecute("/Error/{0}");
|
||||||
|
|
||||||
SwaggerSetup.Configure(app, env);
|
SwaggerSetup.Configure(app, env);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
////serilog 记录请求的用户信息
|
////serilog 记录请求的用户信息
|
||||||
app.UseSerilogConfig(env);
|
app.UseSerilogConfig(env);
|
||||||
|
|
||||||
app.UseRouting();
|
app.UseRouting();
|
||||||
@@ -237,7 +237,7 @@ namespace IRaCIS.Core.API
|
|||||||
//app.UseJwtBearerQueryString();
|
//app.UseJwtBearerQueryString();
|
||||||
app.UseAuthorization();
|
app.UseAuthorization();
|
||||||
|
|
||||||
////文件伺服 必须带Token 访问
|
////文件伺服 必须带Token 访问
|
||||||
////app.UseIRacisHostStaticFileStore(env);
|
////app.UseIRacisHostStaticFileStore(env);
|
||||||
|
|
||||||
app.UseEndpoints(endpoints =>
|
app.UseEndpoints(endpoints =>
|
||||||
@@ -253,7 +253,7 @@ namespace IRaCIS.Core.API
|
|||||||
var hangfireJobService = app.ApplicationServices.GetRequiredService<IIRaCISHangfireJob>();
|
var hangfireJobService = app.ApplicationServices.GetRequiredService<IIRaCISHangfireJob>();
|
||||||
|
|
||||||
await hangfireJobService.InitHangfireJobTaskAsync();
|
await hangfireJobService.InitHangfireJobTaskAsync();
|
||||||
//有的时候每调用
|
//有的时候每调用
|
||||||
//HangfireJobHelper.NotImmediatelyOnceOnlyJob<IIRaCISHangfireJob>(t => t.InitHangfireJobTaskAsync(),TimeSpan.FromSeconds(1));
|
//HangfireJobHelper.NotImmediatelyOnceOnlyJob<IIRaCISHangfireJob>(t => t.InitHangfireJobTaskAsync(),TimeSpan.FromSeconds(1));
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"RemoteNew": "Server=47.117.165.18,1434;Database=Prod_Study;User ID=sa;Password=WHxckj@2019;TrustServerCertificate=true",
|
"RemoteNew": "Server=101.132.193.237,1434;Database=Prod_Study;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true",
|
||||||
"Hangfire": "Server=47.117.165.18,1434;Database=Prod_Study.hangfire;User ID=sa;Password=WHxckj@2019;TrustServerCertificate=true"
|
"Hangfire": "Server=101.132.193.237,1434;Database=Prod_Study_Hangfire;User ID=sa;Password=zhanying@2021;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
|
|
||||||
"BasicSystemConfig": {
|
"BasicSystemConfig": {
|
||||||
|
|||||||
@@ -30,8 +30,8 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"RemoteNew": "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.Study;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true",
|
"RemoteNew": "Server=123.56.94.154,1435;Database=Test_Study;User ID=sa;Password=xc@123456;TrustServerCertificate=true",
|
||||||
"Hangfire": "Server=123.56.94.154,1433\\MSSQLSERVER;Database=Test.Study.hangfire;User ID=sa;Password=dev123456DEV;TrustServerCertificate=true"
|
"Hangfire": "Server=123.56.94.154,1435;Database=Test_Study_Hangfire;User ID=sa;Password=xc@123456;TrustServerCertificate=true"
|
||||||
},
|
},
|
||||||
"BasicSystemConfig": {
|
"BasicSystemConfig": {
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ using NPOI.HPSF;
|
|||||||
using NPOI.HSSF.UserModel;
|
using NPOI.HSSF.UserModel;
|
||||||
using NPOI.XSSF.UserModel;
|
using NPOI.XSSF.UserModel;
|
||||||
using SkiaSharp;
|
using SkiaSharp;
|
||||||
|
using System.Collections;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service;
|
namespace IRaCIS.Core.Application.Service;
|
||||||
@@ -52,21 +53,24 @@ public static class ExcelExportHelper
|
|||||||
var translateDataList = await _dictionaryService.GetBasicDataSelect(needTranslatePropertyList.Select(t => t.DicParentCode).Distinct().ToArray());
|
var translateDataList = await _dictionaryService.GetBasicDataSelect(needTranslatePropertyList.Select(t => t.DicParentCode).Distinct().ToArray());
|
||||||
|
|
||||||
|
|
||||||
var dic = (JsonConvert.DeserializeObject<IDictionary<string, object>>(data.ToJsonNotIgnoreNull())).IfNullThrowException();
|
var dic = data.ConvertToDictionary();
|
||||||
|
|
||||||
|
|
||||||
foreach (var key in dic.Keys)
|
foreach (var key in dic.Keys)
|
||||||
{
|
{
|
||||||
//是数组 那么找到对应的属性 进行翻译
|
//是数组 那么找到对应的属性 进行翻译
|
||||||
if (dic[key].GetType().IsAssignableFrom(typeof(JArray)))
|
if (dic[key].GetType().GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IList<>)))
|
||||||
{
|
{
|
||||||
|
|
||||||
var newObjList = new List<object>();
|
var newObjList = new List<object>();
|
||||||
var no = 1;
|
var no = 1;
|
||||||
|
|
||||||
foreach (var item in dic[key] as JArray)
|
foreach (var item in dic[key] as IList )
|
||||||
{
|
{
|
||||||
var itemDic = JsonConvert.DeserializeObject<IDictionary<string, object>>(item.ToJsonNotIgnoreNull());
|
//var itemDic = JsonConvert.DeserializeObject<IDictionary<string, object>>(item.ToJsonNotIgnoreNull());
|
||||||
|
|
||||||
|
var itemDic = item.ConvertToDictionary();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach (var needTranslateProperty in needTranslatePropertyList)
|
foreach (var needTranslateProperty in needTranslatePropertyList)
|
||||||
@@ -74,7 +78,7 @@ public static class ExcelExportHelper
|
|||||||
//翻译的属性依赖其他属性
|
//翻译的属性依赖其他属性
|
||||||
if (needTranslateProperty.IsTranslateDenpendOtherProperty)
|
if (needTranslateProperty.IsTranslateDenpendOtherProperty)
|
||||||
{
|
{
|
||||||
if (item[needTranslateProperty.DependPropertyName]?.ToString().ToLower() == needTranslateProperty.DependPropertyValueStr.ToLower())
|
if (itemDic[needTranslateProperty.DependPropertyName]?.ToString().ToLower() == needTranslateProperty.DependPropertyValueStr.ToLower())
|
||||||
{
|
{
|
||||||
var beforeValue = itemDic[needTranslateProperty.Name]?.ToString();
|
var beforeValue = itemDic[needTranslateProperty.Name]?.ToString();
|
||||||
|
|
||||||
@@ -232,29 +236,30 @@ public static class ExcelExportHelper
|
|||||||
|
|
||||||
var translateDataList = await _dictionaryService.GetBasicDataSelect(needTranslatePropertyList.Select(t => t.DicParentCode).Distinct().ToArray());
|
var translateDataList = await _dictionaryService.GetBasicDataSelect(needTranslatePropertyList.Select(t => t.DicParentCode).Distinct().ToArray());
|
||||||
|
|
||||||
|
var dic = data.ConvertToDictionary();
|
||||||
var dic = (JsonConvert.DeserializeObject<IDictionary<string, object>>(data.ToJsonNotIgnoreNull())).IfNullThrowException();
|
//var dic = (JsonConvert.DeserializeObject<IDictionary<string, object>>(data.ToJsonNotIgnoreNull())).IfNullThrowException();
|
||||||
|
|
||||||
foreach (var key in dic.Keys)
|
foreach (var key in dic.Keys)
|
||||||
{
|
{
|
||||||
//是数组 那么找到对应的属性 进行翻译
|
//是数组 那么找到对应的属性 进行翻译
|
||||||
if (dic[key].GetType().IsAssignableFrom(typeof(JArray)))
|
if (dic[key].GetType().GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IList<>)))
|
||||||
|
//if (dic[key].GetType().IsAssignableFrom(typeof(JArray)))
|
||||||
{
|
{
|
||||||
|
|
||||||
var newObjList = new List<object>();
|
var newObjList = new List<object>();
|
||||||
var no = 1;
|
var no = 1;
|
||||||
|
foreach (var item in dic[key] as IList)
|
||||||
foreach (var item in dic[key] as JArray)
|
//foreach (var item in dic[key] as JArray)
|
||||||
{
|
{
|
||||||
var itemDic = JsonConvert.DeserializeObject<IDictionary<string, object>>(item.ToJsonNotIgnoreNull());
|
//var itemDic = JsonConvert.DeserializeObject<IDictionary<string, object>>(item.ToJsonNotIgnoreNull());
|
||||||
|
var itemDic = item.ConvertToDictionary();
|
||||||
|
|
||||||
foreach (var needTranslateProperty in needTranslatePropertyList)
|
foreach (var needTranslateProperty in needTranslatePropertyList)
|
||||||
{
|
{
|
||||||
//翻译的属性依赖其他属性
|
//翻译的属性依赖其他属性
|
||||||
if (needTranslateProperty.IsTranslateDenpendOtherProperty)
|
if (needTranslateProperty.IsTranslateDenpendOtherProperty)
|
||||||
{
|
{
|
||||||
if (item[needTranslateProperty.DependPropertyName]?.ToString().ToLower() == needTranslateProperty.DependPropertyValueStr.ToLower())
|
if (itemDic[needTranslateProperty.DependPropertyName]?.ToString().ToLower() == needTranslateProperty.DependPropertyValueStr.ToLower())
|
||||||
{
|
{
|
||||||
var beforeValue = itemDic[needTranslateProperty.Name]?.ToString();
|
var beforeValue = itemDic[needTranslateProperty.Name]?.ToString();
|
||||||
|
|
||||||
|
|||||||
@@ -142,8 +142,9 @@ public static class FileStoreHelper
|
|||||||
//API vue 部署目录
|
//API vue 部署目录
|
||||||
public static string GetIRaCISRootPath(IWebHostEnvironment _hostEnvironment)
|
public static string GetIRaCISRootPath(IWebHostEnvironment _hostEnvironment)
|
||||||
{
|
{
|
||||||
var rootPath = (Directory.GetParent(_hostEnvironment.ContentRootPath.TrimEnd('\\'))).IfNullThrowException().FullName;
|
string parentDirectory = Path.GetFullPath(Path.Combine(_hostEnvironment.ContentRootPath, ".."));
|
||||||
return rootPath;
|
|
||||||
|
return parentDirectory;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,7 +164,7 @@ public static class FileStoreHelper
|
|||||||
{
|
{
|
||||||
var rootPath = GetIRaCISRootPath(_hostEnvironment);
|
var rootPath = GetIRaCISRootPath(_hostEnvironment);
|
||||||
|
|
||||||
var physicalFilePath = Path.Combine(rootPath, relativePath.Trim('/'));
|
var physicalFilePath = Path.Combine(rootPath, relativePath.TrimStart('/'));
|
||||||
|
|
||||||
return physicalFilePath;
|
return physicalFilePath;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -549,6 +549,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
var isNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionId, clinicalDataConfirmList);
|
var isNeedClinicalDataSign = IsNeedClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionId, clinicalDataConfirmList);
|
||||||
var isClinicalDataSign = IsClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionId, clinicalDataConfirmList, subjectVisit.Id, trialId);
|
var isClinicalDataSign = IsClinicalDataSign(ReadingCategory.Visit, subjectVisit.IsBaseLine, trialReadingCriterionId, clinicalDataConfirmList, subjectVisit.Id, trialId);
|
||||||
|
|
||||||
|
var isFrontTaskNeedSignButNotSign = await _visitTaskRepository.AnyAsync(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.SubjectId == subjectVisit.SubjectId && t.TaskState == TaskState.Effect && t.VisitTaskNum < subjectVisit.VisitNum && t.IsNeedClinicalDataSign == true && t.IsClinicalDataSign == false);
|
||||||
|
|
||||||
if (visitNumList.IndexOf(subjectVisit.VisitNum) == 0)
|
if (visitNumList.IndexOf(subjectVisit.VisitNum) == 0)
|
||||||
{
|
{
|
||||||
@@ -590,7 +591,8 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
TrialReadingCriterionId = trialReadingCriterionConfig.TrialReadingCriterionId,
|
TrialReadingCriterionId = trialReadingCriterionConfig.TrialReadingCriterionId,
|
||||||
IsNeedClinicalDataSign = isNeedClinicalDataSign,
|
IsNeedClinicalDataSign = isNeedClinicalDataSign,
|
||||||
IsClinicalDataSign = isClinicalDataSign
|
IsClinicalDataSign = isClinicalDataSign,
|
||||||
|
IsFrontTaskNeedSignButNotSign= isFrontTaskNeedSignButNotSign
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -647,7 +647,6 @@ namespace IRaCIS.Core.Application.Service.Allocation
|
|||||||
{
|
{
|
||||||
var trialReadingCriterionId = inDto.TrialReadingCriterionId;
|
var trialReadingCriterionId = inDto.TrialReadingCriterionId;
|
||||||
|
|
||||||
//Expression<Func<VisitTask, bool>> visitTaskLambda = x => x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == inDto.TrialReadingCriterionId;
|
|
||||||
|
|
||||||
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
var critrion = await _trialReadingCriterionRepository.FindAsync(trialReadingCriterionId);
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using IRaCIS.Core.Application.Interfaces;
|
using IRaCIS.Core.Application.Interfaces;
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Application.Helper;
|
using IRaCIS.Core.Application.Helper;
|
||||||
|
using IRaCIS.Application.Contracts;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Application.Service
|
namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
@@ -99,14 +100,36 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
//---读取模板内容失败, 请将文件另存为docx格式尝试!
|
//---读取模板内容失败, 请将文件另存为docx格式尝试!
|
||||||
return ResponseOutput.NotOk(_localizer["Document_ TemplateRead"]);
|
return ResponseOutput.NotOk(_localizer["Document_ TemplateRead"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var entity = await _commonDocumentRepository.InsertOrUpdateAsync(addOrEditCommonDocument, true, verifyExp1, verifyExp2);
|
|
||||||
|
|
||||||
return ResponseOutput.Ok(entity.Id.ToString());
|
if (addOrEditCommonDocument.Id == null) //insert
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
var entity = await _commonDocumentRepository.InsertFromDTOAsync(addOrEditCommonDocument, true, verifyExp1, verifyExp2);
|
||||||
|
|
||||||
|
return ResponseOutput.Ok(entity.Id.ToString());
|
||||||
|
}
|
||||||
|
else //update
|
||||||
|
{
|
||||||
|
|
||||||
|
var dbbeforeEntity = await _commonDocumentRepository.UpdateFromDTOAsync(addOrEditCommonDocument, true, true, verifyExp1, verifyExp2);
|
||||||
|
|
||||||
|
var filePath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, dbbeforeEntity.Path);
|
||||||
|
|
||||||
|
if (File.Exists(filePath))
|
||||||
|
{
|
||||||
|
File.Delete(filePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ResponseOutput.Ok();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,7 +137,20 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
[HttpDelete("{commonDocumentId:guid}")]
|
[HttpDelete("{commonDocumentId:guid}")]
|
||||||
public async Task<IResponseOutput> DeleteCommonDocument(Guid commonDocumentId)
|
public async Task<IResponseOutput> DeleteCommonDocument(Guid commonDocumentId)
|
||||||
{
|
{
|
||||||
|
var find= await _commonDocumentRepository.FirstOrDefaultNoTrackingAsync(t=>t.Id== commonDocumentId);
|
||||||
|
|
||||||
var success = await _commonDocumentRepository.DeleteFromQueryAsync(t => t.Id == commonDocumentId, true,true);
|
var success = await _commonDocumentRepository.DeleteFromQueryAsync(t => t.Id == commonDocumentId, true,true);
|
||||||
|
|
||||||
|
if (find != null)
|
||||||
|
{
|
||||||
|
var filePath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, find.Path);
|
||||||
|
|
||||||
|
if (File.Exists(filePath))
|
||||||
|
{
|
||||||
|
File.Delete(filePath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ namespace IRaCIS.Application.Services
|
|||||||
messageToSend.To.Add(new MailboxAddress(String.Empty, emailAddress));
|
messageToSend.To.Add(new MailboxAddress(String.Empty, emailAddress));
|
||||||
//主题
|
//主题
|
||||||
//---[来自展影IRC] 关于重置密码的提醒
|
//---[来自展影IRC] 关于重置密码的提醒
|
||||||
messageToSend.Subject = _localizer["Mail_IRCResettingPassword "];
|
messageToSend.Subject = _localizer["Mail_IRCResettingPassword"];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ namespace IRaCIS.Application.Services
|
|||||||
|
|
||||||
builder.HtmlBody = string.Format(templateInfo,
|
builder.HtmlBody = string.Format(templateInfo,
|
||||||
//---您正在进行邮箱重置密码操作
|
//---您正在进行邮箱重置密码操作
|
||||||
_localizer["Mail_ResettingPassword "],
|
_localizer["Mail_ResettingPassword"],
|
||||||
verificationCode
|
verificationCode
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -658,7 +658,7 @@ namespace IRaCIS.Core.Application.Services
|
|||||||
/// <param name="isSystemDoc"></param>
|
/// <param name="isSystemDoc"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPut("{documentId:guid}/{isSystemDoc:bool}")]
|
[HttpPut("{documentId:guid}/{isSystemDoc:bool}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt", "AfterStopCannNotOpt" })]
|
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt", "AfterStopCannNotOpt", "SignSystemDocNoTrialId" })]
|
||||||
public async Task<IResponseOutput> UserAbandonDoc(Guid documentId, bool isSystemDoc)
|
public async Task<IResponseOutput> UserAbandonDoc(Guid documentId, bool isSystemDoc)
|
||||||
{
|
{
|
||||||
if (isSystemDoc)
|
if (isSystemDoc)
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO
|
|||||||
public T Data { get; set; }
|
public T Data { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public SignDTO SignInfo { get; set; }
|
public SignDTO? SignInfo { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -644,7 +644,8 @@ namespace IRaCIS.Application.Services
|
|||||||
{
|
{
|
||||||
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = Guid.Empty, OptUserId = Guid.Empty, LoginFaildName = userName,LoginPassword=password, OptType = UserOptType.AccountLocked }, true);
|
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = Guid.Empty, OptUserId = Guid.Empty, LoginFaildName = userName,LoginPassword=password, OptType = UserOptType.AccountLocked }, true);
|
||||||
|
|
||||||
throw new BusinessValidationFailedException($"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。");
|
//$"密码连续错误{maxFailures}次,当前账号已被限制登录,请等待 {lockoutMinutes} 分钟后再试。"
|
||||||
|
throw new BusinessValidationFailedException(_localizer["User_ErrorLimit", maxFailures, lockoutMinutes]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var userLoginReturnModel = new LoginReturnDTO();
|
var userLoginReturnModel = new LoginReturnDTO();
|
||||||
|
|||||||
@@ -547,7 +547,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||||||
[DictionaryTranslateAttribute("YesOrNo")]
|
[DictionaryTranslateAttribute("YesOrNo")]
|
||||||
public bool IsSuccess { get; set; }
|
public bool IsSuccess { get; set; }
|
||||||
|
|
||||||
public string Note = string.Empty;
|
public string Note { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1383,6 +1383,10 @@ namespace IRaCIS.Core.Application.Contracts
|
|||||||
|
|
||||||
public DateTime? SubmitTime { get; set; }
|
public DateTime? SubmitTime { get; set; }
|
||||||
|
|
||||||
|
public string SubmitUserName { get; set; } = String.Empty;
|
||||||
|
|
||||||
|
public string SubmitUserRealName { get; set; } = String.Empty;
|
||||||
|
|
||||||
public string CurrentActionUserName { get; set; } = String.Empty;
|
public string CurrentActionUserName { get; set; } = String.Empty;
|
||||||
public string PreliminaryAuditUserName { get; set; } = String.Empty;
|
public string PreliminaryAuditUserName { get; set; } = String.Empty;
|
||||||
|
|
||||||
|
|||||||
@@ -364,6 +364,10 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
.ForMember(d => d.QCProcessEnum, u => u.MapFrom(s => s.Trial.QCProcessEnum))
|
.ForMember(d => d.QCProcessEnum, u => u.MapFrom(s => s.Trial.QCProcessEnum))
|
||||||
.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
|
.ForMember(d => d.SubjectStatus, u => u.MapFrom(s => s.Subject.Status))
|
||||||
.ForMember(d => d.StudyCount, u => u.MapFrom(s => s.StudyList.Count()))
|
.ForMember(d => d.StudyCount, u => u.MapFrom(s => s.StudyList.Count()))
|
||||||
|
|
||||||
|
.ForMember(d => d.SubmitUserName, u => u.MapFrom(s => s.SubmitUser.UserName))
|
||||||
|
.ForMember(d => d.SubmitUserRealName, u => u.MapFrom(s => s.SubmitUser.FullName))
|
||||||
|
|
||||||
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(s => s.CurrentActionUser.UserName))
|
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(s => s.CurrentActionUser.UserName))
|
||||||
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
|
.ForMember(d => d.PreliminaryAuditUserName, u => u.MapFrom(s => s.PreliminaryAuditUser.UserName))
|
||||||
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.UserName))
|
.ForMember(d => d.ReviewAuditUserName, u => u.MapFrom(s => s.ReviewAuditUser.UserName))
|
||||||
|
|||||||
@@ -523,7 +523,28 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync();
|
||||||
inDto.TrialReadingCriterionId = readModule.TrialReadingCriterionId;
|
inDto.TrialReadingCriterionId = readModule.TrialReadingCriterionId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 有全局就查全局 有肿瘤学就查肿瘤学
|
||||||
|
|
||||||
|
var clinicalDataLevelList = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == inDto.TrialId && x.IsConfirm && x.UploadRole == UploadRole.CRC && x.ClinicalUploadType == ClinicalUploadType.Structuring).Select(x => x.ClinicalDataLevel).Distinct().ToListAsync();
|
||||||
|
|
||||||
|
var existsCRCStructuring = clinicalDataLevelList.Any(x=>x== ClinicalLevel.OncologyRead|| x == ClinicalLevel.ImageRead);
|
||||||
|
|
||||||
|
|
||||||
|
ReadingSetType? readingSetType = null;
|
||||||
|
if (clinicalDataLevelList.Contains(ClinicalLevel.ImageRead) && !clinicalDataLevelList.Contains(ClinicalLevel.OncologyRead))
|
||||||
|
{
|
||||||
|
readingSetType = ReadingSetType.ImageReading;
|
||||||
|
}
|
||||||
|
else if (clinicalDataLevelList.Contains(ClinicalLevel.OncologyRead) && !clinicalDataLevelList.Contains(ClinicalLevel.ImageRead))
|
||||||
|
{
|
||||||
|
readingSetType = ReadingSetType.TumorReading;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId)
|
||||||
|
.Where(x=> existsCRCStructuring)
|
||||||
|
.WhereIf(inDto.ReadModuleId==null,x=>x.TrialReadingCriterion.IsConfirm)
|
||||||
.WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId)
|
.WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId)
|
||||||
.WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm)
|
.WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm)
|
||||||
.WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm)
|
.WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm)
|
||||||
@@ -532,6 +553,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
.WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId)
|
||||||
.WhereIf(inDto.StartTime != null, x => x.SubjectVisit.LatestScanDate >= inDto.StartTime)
|
.WhereIf(inDto.StartTime != null, x => x.SubjectVisit.LatestScanDate >= inDto.StartTime)
|
||||||
.WhereIf(inDto.EndTime != null, x => x.SubjectVisit.LatestScanDate <= inDto.EndTime)
|
.WhereIf(inDto.EndTime != null, x => x.SubjectVisit.LatestScanDate <= inDto.EndTime)
|
||||||
|
.WhereIf(readingSetType != null, x => x.ReadingSetType== readingSetType)
|
||||||
.Select(x => new GetCRCConfirmListOutDto()
|
.Select(x => new GetCRCConfirmListOutDto()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -395,6 +395,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
|||||||
|
|
||||||
public Arm ArmEnum { get; set; }
|
public Arm ArmEnum { get; set; }
|
||||||
|
|
||||||
|
public bool IsExistsClinicalData { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public MedicalReviewAuditState AuditState { get; set; }
|
public MedicalReviewAuditState AuditState { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -21,5 +21,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Interface
|
|||||||
|
|
||||||
Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto);
|
Task<IResponseOutput> CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto);
|
||||||
|
|
||||||
|
Task<PageOutput<GetCRCConfirmListOutDto>> GetCRCConfirmList(GetCRCConfirmListInDto inDto);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
private readonly IReadingImageTaskService _iReadingImageTaskService;
|
private readonly IReadingImageTaskService _iReadingImageTaskService;
|
||||||
private readonly IRepository<User> _userTaskRepository;
|
private readonly IRepository<User> _userTaskRepository;
|
||||||
private readonly IVisitTaskService _visitTaskService;
|
private readonly IVisitTaskService _visitTaskService;
|
||||||
|
private readonly IReadingClinicalDataService _readingClinicalDataService;
|
||||||
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
|
private readonly IRepository<TaskMedicalReview> _taskMedicalReviewRepository;
|
||||||
private readonly IRepository<ReadingMedicalReviewDialog> _readingMedicalReviewDialogRepository;
|
private readonly IRepository<ReadingMedicalReviewDialog> _readingMedicalReviewDialogRepository;
|
||||||
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrial;
|
private readonly IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrial;
|
||||||
@@ -52,6 +53,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
IRepository<ReadingSystemCriterionDictionary> readingCriterionDictionaryRepository,
|
IRepository<ReadingSystemCriterionDictionary> readingCriterionDictionaryRepository,
|
||||||
IRepository<User> userTaskRepository,
|
IRepository<User> userTaskRepository,
|
||||||
IVisitTaskService visitTaskService,
|
IVisitTaskService visitTaskService,
|
||||||
|
IReadingClinicalDataService readingClinicalDataService,
|
||||||
IRepository<TaskMedicalReview> taskMedicalReviewRepository,
|
IRepository<TaskMedicalReview> taskMedicalReviewRepository,
|
||||||
IRepository<ReadingMedicalReviewDialog> readingMedicalReviewDialogRepository,
|
IRepository<ReadingMedicalReviewDialog> readingMedicalReviewDialogRepository,
|
||||||
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrial,
|
IRepository<ReadingQuestionCriterionTrial> readingQuestionCriterionTrial,
|
||||||
@@ -71,6 +73,7 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
this._readingCriterionDictionaryRepository = readingCriterionDictionaryRepository;
|
||||||
this._userTaskRepository = userTaskRepository;
|
this._userTaskRepository = userTaskRepository;
|
||||||
this._visitTaskService = visitTaskService;
|
this._visitTaskService = visitTaskService;
|
||||||
|
this._readingClinicalDataService = readingClinicalDataService;
|
||||||
this._taskMedicalReviewRepository = taskMedicalReviewRepository;
|
this._taskMedicalReviewRepository = taskMedicalReviewRepository;
|
||||||
this._readingMedicalReviewDialogRepository = readingMedicalReviewDialogRepository;
|
this._readingMedicalReviewDialogRepository = readingMedicalReviewDialogRepository;
|
||||||
this._readingQuestionCriterionTrial = readingQuestionCriterionTrial;
|
this._readingQuestionCriterionTrial = readingQuestionCriterionTrial;
|
||||||
@@ -109,6 +112,17 @@ namespace IRaCIS.Core.Application.Service
|
|||||||
|
|
||||||
|
|
||||||
medicalReviewInfo.VisitTaskId = taskInfo.Id;
|
medicalReviewInfo.VisitTaskId = taskInfo.Id;
|
||||||
|
|
||||||
|
var clinicalDataList = await _readingClinicalDataService.GetClinicalDataList(new GetReadingOrTaskClinicalDataListInDto()
|
||||||
|
{
|
||||||
|
|
||||||
|
SubjectId = taskInfo.SubjectId,
|
||||||
|
TrialId = taskInfo.TrialId,
|
||||||
|
VisitTaskId = taskInfo.Id,
|
||||||
|
});
|
||||||
|
|
||||||
|
medicalReviewInfo.IsExistsClinicalData = clinicalDataList.Count > 0;
|
||||||
|
|
||||||
medicalReviewInfo.ArmEnum = taskInfo.ArmEnum;
|
medicalReviewInfo.ArmEnum = taskInfo.ArmEnum;
|
||||||
medicalReviewInfo.SubjectCode = taskInfo.IsAnalysisCreate?taskInfo.BlindSubjectCode: taskInfo.Subject.Code;
|
medicalReviewInfo.SubjectCode = taskInfo.IsAnalysisCreate?taskInfo.BlindSubjectCode: taskInfo.Subject.Code;
|
||||||
medicalReviewInfo.TaskBlindName = taskInfo.TaskBlindName;
|
medicalReviewInfo.TaskBlindName = taskInfo.TaskBlindName;
|
||||||
|
|||||||
+12
-11
@@ -704,9 +704,9 @@ namespace IRaCIS.Application.Services
|
|||||||
{
|
{
|
||||||
//await AddDefaultValueToTask(inDto.VisitTaskId);
|
//await AddDefaultValueToTask(inDto.VisitTaskId);
|
||||||
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
var taskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||||
var result = await GetReadingQuestion(taskInfo.TrialReadingCriterionId, taskInfo.Id);
|
var result = await GetReadingQuestion(taskInfo.TrialReadingCriterionId, taskInfo.Id);
|
||||||
|
|
||||||
return (result, new
|
return (result, new
|
||||||
{
|
{
|
||||||
|
|
||||||
ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
|
ReadingTaskState = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).Select(x => x.ReadingTaskState).FirstOrDefaultAsync()
|
||||||
@@ -824,10 +824,7 @@ namespace IRaCIS.Application.Services
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<List<GetTableAnswerRowInfoOutDto>> GetTableAnswerRowInfoList(GetTableAnswerRowInfoInDto inDto)
|
public async Task<List<GetTableAnswerRowInfoOutDto>> GetTableAnswerRowInfoList(GetTableAnswerRowInfoInDto inDto)
|
||||||
{
|
{
|
||||||
await _readingCalculateService.AddTaskLesionAnswerFromLastTask(new AddTaskLesionAnswerFromLastTaskInDto()
|
|
||||||
{
|
|
||||||
VisitTaskId = inDto.VisitTaskId
|
|
||||||
});
|
|
||||||
var result = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId)
|
var result = await _readingTableAnswerRowInfoRepository.Where(x => x.VisitTaskId == inDto.VisitTaskId)
|
||||||
.WhereIf(inDto.QuestionId != null, x => x.QuestionId == inDto.QuestionId)
|
.WhereIf(inDto.QuestionId != null, x => x.QuestionId == inDto.QuestionId)
|
||||||
.ProjectTo<GetTableAnswerRowInfoOutDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex)
|
.ProjectTo<GetTableAnswerRowInfoOutDto>(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ThenBy(x => x.RowIndex)
|
||||||
@@ -2092,11 +2089,6 @@ namespace IRaCIS.Application.Services
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
|
|
||||||
{
|
|
||||||
ReadingTaskState = ReadingTaskState.Reading,
|
|
||||||
|
|
||||||
});
|
|
||||||
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
await _readingTableAnswerRowInfoRepository.SaveChangesAsync();
|
||||||
await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
|
await this._readingCalculateService.CalculateTask(new CalculateTaskInDto()
|
||||||
{
|
{
|
||||||
@@ -2457,6 +2449,15 @@ namespace IRaCIS.Application.Services
|
|||||||
task.IsNeedReadClinicalData = clinicalDataList.Where(x => x.ClinicalDataLevel != ClinicalLevel.Subject).Count() > 0;
|
task.IsNeedReadClinicalData = clinicalDataList.Where(x => x.ClinicalDataLevel != ClinicalLevel.Subject).Count() > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (visitTaskInfo.ReadingTaskState == ReadingTaskState.WaitReading)
|
||||||
|
{
|
||||||
|
await _readingCalculateService.AddTaskLesionAnswerFromLastTask(new AddTaskLesionAnswerFromLastTaskInDto()
|
||||||
|
{
|
||||||
|
VisitTaskId = task.VisitTaskId
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 如果已经签名 就不需要再读了
|
// 如果已经签名 就不需要再读了
|
||||||
task.IsNeedReadClinicalData = visitTaskInfo.ReadingTaskState == ReadingTaskState.HaveSigned ? false : task.IsNeedReadClinicalData;
|
task.IsNeedReadClinicalData = visitTaskInfo.ReadingTaskState == ReadingTaskState.HaveSigned ? false : task.IsNeedReadClinicalData;
|
||||||
task.DigitPlaces = criterionInfo.DigitPlaces;
|
task.DigitPlaces = criterionInfo.DigitPlaces;
|
||||||
|
|||||||
@@ -55,11 +55,6 @@ namespace IRaCIS.Application.Services
|
|||||||
TrialId = inDto.TrialId
|
TrialId = inDto.TrialId
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
|
|
||||||
{
|
|
||||||
ReadingTaskState = ReadingTaskState.Reading,
|
|
||||||
|
|
||||||
});
|
|
||||||
await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList);
|
await _readingTaskQuestionAnswerRepository.AddRangeAsync(readingTaskAnswerList);
|
||||||
var result = await _visitTaskRepository.SaveChangesAsync();
|
var result = await _visitTaskRepository.SaveChangesAsync();
|
||||||
return ResponseOutput.Ok(result);
|
return ResponseOutput.Ok(result);
|
||||||
|
|||||||
@@ -191,7 +191,6 @@ namespace IRaCIS.Application.Services
|
|||||||
|
|
||||||
await _readingOncologyTaskInfoRepository.AddRangeAsync(readingOncologies);
|
await _readingOncologyTaskInfoRepository.AddRangeAsync(readingOncologies);
|
||||||
|
|
||||||
await _visitTaskRepository.UpdatePartialFromQueryAsync(t => t.Id == inDto.OncologyTaskId, u => new VisitTask() { ReadingTaskState = ReadingTaskState.Reading });
|
|
||||||
|
|
||||||
var result = await _readingOncologyTaskInfoRepository.SaveChangesAsync();
|
var result = await _readingOncologyTaskInfoRepository.SaveChangesAsync();
|
||||||
|
|
||||||
|
|||||||
+22
-23
@@ -126,36 +126,35 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||||||
{
|
{
|
||||||
var service = await this.GetService(inDto.VisitTaskId);
|
var service = await this.GetService(inDto.VisitTaskId);
|
||||||
var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
var visitTaskInfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId).FirstNotNullAsync();
|
||||||
if (service != null && visitTaskInfo.SourceSubjectVisitId != null)
|
var result = new AddTaskLesionAnswerFromLastTaskOutDto();
|
||||||
|
var readingTaskState = visitTaskInfo.ReadingTaskState;
|
||||||
|
if (service != null && visitTaskInfo.SourceSubjectVisitId != null)
|
||||||
{
|
{
|
||||||
var readingTaskState = visitTaskInfo.ReadingTaskState;
|
|
||||||
var result = new AddTaskLesionAnswerFromLastTaskOutDto();
|
|
||||||
|
|
||||||
if (readingTaskState == ReadingTaskState.WaitReading)
|
if (readingTaskState == ReadingTaskState.WaitReading)
|
||||||
{
|
{
|
||||||
result = await service.AddTaskLesionAnswerFromLastTask(inDto);
|
if (visitTaskInfo.ReadingCategory == ReadingCategory.Visit)
|
||||||
await service.CalculateTask(new CalculateTaskInDto()
|
|
||||||
{
|
{
|
||||||
IsChangeOtherTask = false,
|
result = await service.AddTaskLesionAnswerFromLastTask(inDto);
|
||||||
VisitTaskId = inDto.VisitTaskId,
|
await service.CalculateTask(new CalculateTaskInDto()
|
||||||
});
|
{
|
||||||
|
IsChangeOtherTask = false,
|
||||||
await _visitTaskRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.VisitTaskId, x => new VisitTask()
|
VisitTaskId = inDto.VisitTaskId,
|
||||||
{
|
});
|
||||||
ReadingTaskState = ReadingTaskState.Reading,
|
}
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return new AddTaskLesionAnswerFromLastTaskOutDto();
|
|
||||||
}
|
}
|
||||||
|
if (readingTaskState == ReadingTaskState.WaitReading)
|
||||||
|
{
|
||||||
|
await _visitTaskRepository.UpdatePartialFromQueryAsync(inDto.VisitTaskId, x => new VisitTask()
|
||||||
|
{
|
||||||
|
ReadingTaskState = ReadingTaskState.Reading,
|
||||||
|
},true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
return result;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取报告验证的信息(这里每个标准可能不一样 返回用object)
|
/// 获取报告验证的信息(这里每个标准可能不一样 返回用object)
|
||||||
|
|||||||
@@ -711,7 +711,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||||||
|
|
||||||
if (valueOfTypes.Contains(item.ValueType))
|
if (valueOfTypes.Contains(item.ValueType))
|
||||||
{
|
{
|
||||||
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString();
|
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F" + inDto.DigitPlaces.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|||||||
@@ -649,7 +649,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||||||
|
|
||||||
if (valueOfTypes.Contains(item.ValueType))
|
if (valueOfTypes.Contains(item.ValueType))
|
||||||
{
|
{
|
||||||
item.Answer = decimal.Round(decimal.Parse(item.Answer.IsNullOrEmpty() ? "0": item.Answer), inDto.DigitPlaces).ToString();
|
item.Answer = decimal.Round(decimal.Parse(item.Answer.IsNullOrEmpty() ? "0": item.Answer), inDto.DigitPlaces).ToString("F" + inDto.DigitPlaces.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|||||||
@@ -549,7 +549,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||||||
|
|
||||||
if (valueOfTypes.Contains(item.ValueType))
|
if (valueOfTypes.Contains(item.ValueType))
|
||||||
{
|
{
|
||||||
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString();
|
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F" + inDto.DigitPlaces.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|||||||
+1
-1
@@ -545,7 +545,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
|
|||||||
|
|
||||||
if (valueOfTypes.Contains(item.ValueType))
|
if (valueOfTypes.Contains(item.ValueType))
|
||||||
{
|
{
|
||||||
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString();
|
item.Answer = decimal.Round(decimal.Parse(item.Answer ?? "0"), inDto.DigitPlaces).ToString("F" + inDto.DigitPlaces.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
|||||||
@@ -104,6 +104,8 @@ namespace IRaCIS.Core.Application.Contracts
|
|||||||
|
|
||||||
[DictionaryTranslateAttribute("YesOrNo")]
|
[DictionaryTranslateAttribute("YesOrNo")]
|
||||||
public bool IsGenerateAccount { get; set; }
|
public bool IsGenerateAccount { get; set; }
|
||||||
|
|
||||||
|
[DictionaryTranslateAttribute("SiteSurvey_UserRoles")]
|
||||||
public int TrialRoleCode { get; set; }
|
public int TrialRoleCode { get; set; }
|
||||||
|
|
||||||
public string OrganizationName { get; set; } = string.Empty;
|
public string OrganizationName { get; set; } = string.Empty;
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ namespace IRaCIS.Application.Contracts
|
|||||||
[DictionaryTranslateAttribute("IsUserExitTrial")]
|
[DictionaryTranslateAttribute("IsUserExitTrial")]
|
||||||
public bool IsDeleted { get; set; }
|
public bool IsDeleted { get; set; }
|
||||||
|
|
||||||
[ExcelFormat("yyyy-MM-dd hh:mm:ss")]
|
[ExcelFormat("yyyy-MM-dd HH:mm:ss")]
|
||||||
public DateTime? DeletedTime { get; set; }
|
public DateTime? DeletedTime { get; set; }
|
||||||
|
|
||||||
public Guid? SiteId { get; set; }
|
public Guid? SiteId { get; set; }
|
||||||
public string Phone { get; set; } = String.Empty;
|
public string Phone { get; set; } = String.Empty;
|
||||||
public DateTime UpdateTime { get; set; }
|
public DateTime UpdateTime { get; set; }
|
||||||
|
|
||||||
[ExcelFormat("yyyy-MM-dd hh:mm:ss")]
|
[ExcelFormat("yyyy-MM-dd HH:mm:ss")]
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ namespace IRaCIS.Application.Contracts
|
|||||||
|
|
||||||
|
|
||||||
[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")]
|
[ExporterHeader(Format = "yyyy-mm-DD hh:mm:ss")]
|
||||||
[ExcelFormat("yyyy-MM-dd hh:mm:ss")]
|
[ExcelFormat("yyyy-MM-dd HH:mm:ss")]
|
||||||
public DateTime CreateTime { get; set; }
|
public DateTime CreateTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
@@ -118,7 +118,8 @@ namespace IRaCIS.Application.Contracts
|
|||||||
|
|
||||||
public class ExcelExportInfo : TrialSelectDTO
|
public class ExcelExportInfo : TrialSelectDTO
|
||||||
{
|
{
|
||||||
public DateTime CurrentTime { get; set; } = DateTime.Now;
|
|
||||||
|
public string CurrentTime { get; set; } = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
public bool IsEn_US { get; set; }
|
public bool IsEn_US { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using IRaCIS.Application.Contracts;
|
using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Application.Contracts;
|
using IRaCIS.Core.Application.Contracts;
|
||||||
using IRaCIS.Core.Application.Interfaces;
|
using IRaCIS.Core.Application.Interfaces;
|
||||||
|
using IRaCIS.Core.Application.Service.Reading.Interface;
|
||||||
using IRaCIS.Core.Application.ViewModel;
|
using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
@@ -21,11 +22,13 @@ namespace IRaCIS.Core.Application
|
|||||||
private readonly IRepository<TrialDocument> _trialDocumentRepository;
|
private readonly IRepository<TrialDocument> _trialDocumentRepository;
|
||||||
private readonly IRepository<SystemDocument> _systemDocumentRepository;
|
private readonly IRepository<SystemDocument> _systemDocumentRepository;
|
||||||
private readonly IRepository<ReadModule> _readModuleRepository;
|
private readonly IRepository<ReadModule> _readModuleRepository;
|
||||||
|
private readonly IClinicalAnswerService _clinicalAnswerService;
|
||||||
private readonly IRepository<SystemNotice> _systemNoticeRepository;
|
private readonly IRepository<SystemNotice> _systemNoticeRepository;
|
||||||
|
|
||||||
public PersonalWorkstation(IRepository<Trial> trialRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialDocument> trialDocumentRepository,
|
public PersonalWorkstation(IRepository<Trial> trialRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialDocument> trialDocumentRepository,
|
||||||
IRepository<SystemDocument> systemDocumentRepository,
|
IRepository<SystemDocument> systemDocumentRepository,
|
||||||
IRepository<ReadModule> readModuleRepository,
|
IRepository<ReadModule> readModuleRepository,
|
||||||
|
IClinicalAnswerService clinicalAnswerService,
|
||||||
IRepository<SystemNotice> systemNoticeRepository)
|
IRepository<SystemNotice> systemNoticeRepository)
|
||||||
{
|
{
|
||||||
_trialRepository = trialRepository;
|
_trialRepository = trialRepository;
|
||||||
@@ -33,6 +36,7 @@ namespace IRaCIS.Core.Application
|
|||||||
_trialDocumentRepository = trialDocumentRepository;
|
_trialDocumentRepository = trialDocumentRepository;
|
||||||
_systemDocumentRepository = systemDocumentRepository;
|
_systemDocumentRepository = systemDocumentRepository;
|
||||||
this._readModuleRepository = readModuleRepository;
|
this._readModuleRepository = readModuleRepository;
|
||||||
|
this._clinicalAnswerService = clinicalAnswerService;
|
||||||
_systemNoticeRepository = systemNoticeRepository;
|
_systemNoticeRepository = systemNoticeRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -429,7 +433,7 @@ namespace IRaCIS.Core.Application
|
|||||||
ToBeDealedCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject).Count(),
|
ToBeDealedCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject).Count(),
|
||||||
ToBeVisitCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(),
|
ToBeVisitCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(),
|
||||||
ToAllCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC).Count(),
|
ToAllCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC).Count(),
|
||||||
ReadModuleCount = t.ReadModuleList.Where(x => !x.IsPMConfirm).Count(),
|
ReadModuleCount = t.ReadModuleList.Where(x => !x.IsCRCConfirm).Count(),
|
||||||
}).Where(x => x.ReadModuleCount > 0);
|
}).Where(x => x.ReadModuleCount > 0);
|
||||||
|
|
||||||
var defalutSortArray = new string[] { nameof(ImageClinicalDataToBeDoneDto.UrgentCount) + " desc", nameof(ImageClinicalDataToBeDoneDto.ToBeDealedCount) + " desc" };
|
var defalutSortArray = new string[] { nameof(ImageClinicalDataToBeDoneDto.UrgentCount) + " desc", nameof(ImageClinicalDataToBeDoneDto.ToBeDealedCount) + " desc" };
|
||||||
@@ -437,6 +441,22 @@ namespace IRaCIS.Core.Application
|
|||||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc, string.IsNullOrWhiteSpace(inQuery.SortField), defalutSortArray);
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc, string.IsNullOrWhiteSpace(inQuery.SortField), defalutSortArray);
|
||||||
|
|
||||||
|
|
||||||
|
// ReadModuleCount情况太多了 暂时用之前的方法
|
||||||
|
foreach (var item in result.CurrentPageData)
|
||||||
|
{
|
||||||
|
item.ReadModuleCount = (await _clinicalAnswerService.GetCRCConfirmList(new Service.Reading.Dto.GetCRCConfirmListInDto()
|
||||||
|
{
|
||||||
|
TrialId = item.TrialId,
|
||||||
|
IsPMConfirm = false,
|
||||||
|
PageIndex = 1,
|
||||||
|
PageSize = 9999,
|
||||||
|
|
||||||
|
})).CurrentPageData.Count();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
result.CurrentPageData = result.CurrentPageData.Where(x => x.ReadModuleCount != 0).ToList();
|
||||||
|
|
||||||
var toBeDealedCount = _subjectVisitRepository
|
var toBeDealedCount = _subjectVisitRepository
|
||||||
//.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id) && t.Trial.clinicalDataTrialSets.Any(t => t.ClinicalDataLevel == ClinicalLevel.Subject && t.IsConfirm))
|
//.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id) && t.Trial.clinicalDataTrialSets.Any(t => t.ClinicalDataLevel == ClinicalLevel.Subject && t.IsConfirm))
|
||||||
.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted).Count();
|
.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted).Count();
|
||||||
@@ -674,7 +694,8 @@ namespace IRaCIS.Core.Application
|
|||||||
|
|
||||||
|
|
||||||
//待领取量
|
//待领取量
|
||||||
ToBeClaimedCount = t.SubjectVisitList.Where(t => t.SubmitState == SubmitStateEnum.Submitted).Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.Id && u.ReviewAuditUserId == null))).Count(),
|
ToBeClaimedCount = t.SubjectVisitList.Where(t => t.SubmitState == SubmitStateEnum.Submitted && t.AuditState!=AuditStateEnum.QCPassed)
|
||||||
|
.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.Id && u.ReviewAuditUserId == null))).Count(),
|
||||||
|
|
||||||
//待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了)
|
//待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了)
|
||||||
ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == _userInfo.Id).Count()
|
ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == _userInfo.Id).Count()
|
||||||
@@ -689,7 +710,7 @@ namespace IRaCIS.Core.Application
|
|||||||
|
|
||||||
|
|
||||||
var toBeClaimedCount = _subjectVisitRepository
|
var toBeClaimedCount = _subjectVisitRepository
|
||||||
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id)&& t.SubmitState == SubmitStateEnum.Submitted && t.AuditState != AuditStateEnum.QCPassed)
|
||||||
.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.Id && u.ReviewAuditUserId == null))).Count();
|
.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.Id && u.ReviewAuditUserId == null))).Count();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ namespace IRaCIS.Core.Application.Triggers
|
|||||||
|
|
||||||
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
private readonly IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository;
|
||||||
|
|
||||||
|
private readonly IRepository<ReadingJudgeInfo> _readingJudgeInfoRepository;
|
||||||
|
|
||||||
|
|
||||||
public VisitTaskIsFrontTaskNeedSignButNotSignTrigger(
|
public VisitTaskIsFrontTaskNeedSignButNotSignTrigger(
|
||||||
|
|
||||||
IRepository<VisitTask> visitTaskRepository, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository
|
IRepository<VisitTask> visitTaskRepository, IRepository<ReadingQuestionCriterionTrial> trialReadingCriterionRepository, IRepository<ReadingQuestionTrial> trialReadingQuestionRepository
|
||||||
, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository)
|
, IRepository<ReadingTaskQuestionAnswer> readingTaskQuestionAnswerRepository, IRepository<ReadingJudgeInfo> readingJudgeInfoRepository)
|
||||||
{
|
{
|
||||||
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
_trialReadingCriterionRepository = trialReadingCriterionRepository;
|
||||||
|
|
||||||
@@ -36,6 +36,7 @@ namespace IRaCIS.Core.Application.Triggers
|
|||||||
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
_trialReadingQuestionRepository = trialReadingQuestionRepository;
|
||||||
|
|
||||||
_readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
_readingTaskQuestionAnswerRepository = readingTaskQuestionAnswerRepository;
|
||||||
|
_readingJudgeInfoRepository = readingJudgeInfoRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -98,7 +99,120 @@ namespace IRaCIS.Core.Application.Triggers
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if (context.ChangeType == ChangeType.Modified)
|
||||||
|
{
|
||||||
|
if (visitTask.ReadingCategory == ReadingCategory.Judge && (visitTask.TaskState == TaskState.Adbandon || visitTask.TaskState == TaskState.HaveReturned))
|
||||||
|
{
|
||||||
|
var find = _readingJudgeInfoRepository.Where(t => t.JudgeTaskId == visitTask.Id).FirstOrDefault();
|
||||||
|
|
||||||
|
if (find != null)
|
||||||
|
{
|
||||||
|
var ids = new Guid[] { find.TaskIdOne, find.TaskIdTwo };
|
||||||
|
await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => ids.Contains(t.Id), u => new VisitTask() { JudgeVisitTaskId = null });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#region 附加评估 暂时废弃
|
||||||
|
// //从未签名状态 改为签名状态时 判断是否进行了附加评估,将附加评估的结果冗余
|
||||||
|
// if (context.ChangeType == ChangeType.Modified && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && context.UnmodifiedEntity.ReadingTaskState != ReadingTaskState.HaveSigned)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// var criterion = _trialReadingCriterionRepository.Where(t => t.Id == visitTask.TrialReadingCriterionId).FirstOrDefault();
|
||||||
|
|
||||||
|
// //如果是附加评估
|
||||||
|
// if (criterion.IsAdditionalAssessment)
|
||||||
|
// {
|
||||||
|
|
||||||
|
|
||||||
|
// if (visitTask.ReadingCategory == ReadingCategory.Visit)
|
||||||
|
// {
|
||||||
|
|
||||||
|
|
||||||
|
// switch (criterion.CriterionType)
|
||||||
|
// {
|
||||||
|
// case CriterionType.RECIST1Point1:
|
||||||
|
// var isbaseLine = _visitTaskRepository.Where(t => t.Id == visitTask.Id).Select(t => t.SourceSubjectVisit.IsBaseLine).FirstOrDefault();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// if (isbaseLine)
|
||||||
|
// {
|
||||||
|
// var currentTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == visitTask.Id &&
|
||||||
|
// t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group"
|
||||||
|
// ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// //双重阅片完成了
|
||||||
|
// if (criterion.ReadingType == ReadingMethod.Double &&
|
||||||
|
//(_visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() == 2)
|
||||||
|
// )
|
||||||
|
// {
|
||||||
|
|
||||||
|
// var otherTaskId = await _visitTaskRepository.Where(t => t.SubjectId == visitTask.SubjectId && t.TaskName == visitTask.TaskName && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned && t.Id != visitTask.Id)
|
||||||
|
// .Select(t => t.Id).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
// var otherTaskAdditionarlAnswer = await _readingTaskQuestionAnswerRepository.Where(t => t.VisitTaskId == otherTaskId &&
|
||||||
|
// t.ReadingQuestionTrial.IsAdditional == true && t.ReadingQuestionTrial.Type != "group"
|
||||||
|
// ).Include(t => t.ReadingQuestionTrial).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult()
|
||||||
|
// {
|
||||||
|
// TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
||||||
|
// IsFinalResult = true,
|
||||||
|
// SubjectId = visitTask.SubjectId,
|
||||||
|
// TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId,
|
||||||
|
// FinalAnswer = currentTaskAdditionarlAnswer.Answer,
|
||||||
|
// FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode,
|
||||||
|
|
||||||
|
// });
|
||||||
|
|
||||||
|
// }
|
||||||
|
// if (criterion.ReadingType == ReadingMethod.Single)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// await _subjectAdditionalEvaluationResultRepository.AddAsync(new SubjectAdditionalEvaluationResult()
|
||||||
|
// {
|
||||||
|
// TrialReadingCriterionId = visitTask.TrialReadingCriterionId,
|
||||||
|
// IsFinalResult = true,
|
||||||
|
// SubjectId = visitTask.SubjectId,
|
||||||
|
// TrialReadingQuestionId = currentTaskAdditionarlAnswer.ReadingQuestionTrialId,
|
||||||
|
// FinalAnswer = currentTaskAdditionarlAnswer.Answer,
|
||||||
|
// FinalTranslateDictionaryCode = currentTaskAdditionarlAnswer.ReadingQuestionTrial.DictionaryCode,
|
||||||
|
|
||||||
|
// });
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,8 @@ namespace IRaCIS.Core.Domain.Models
|
|||||||
public DateTime? PreliminaryAuditTime { get; set; }
|
public DateTime? PreliminaryAuditTime { get; set; }
|
||||||
public Guid? ForwardUserId { get; set; }
|
public Guid? ForwardUserId { get; set; }
|
||||||
public DateTime? ForwardTime { get; set; }
|
public DateTime? ForwardTime { get; set; }
|
||||||
|
|
||||||
|
// 质控领取人
|
||||||
public Guid? CurrentActionUserId { get; set; }
|
public Guid? CurrentActionUserId { get; set; }
|
||||||
public DateTime? CurrentActionUserExpireTime { get; set; }
|
public DateTime? CurrentActionUserExpireTime { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
namespace IRaCIS.Core.Infrastructure.Extention
|
namespace IRaCIS.Core.Infrastructure.Extention
|
||||||
{
|
{
|
||||||
@@ -38,7 +40,38 @@ namespace IRaCIS.Core.Infrastructure.Extention
|
|||||||
public static string ToJsonNotIgnoreNull(this object obj)
|
public static string ToJsonNotIgnoreNull(this object obj)
|
||||||
{
|
{
|
||||||
|
|
||||||
return JsonConvert.SerializeObject(obj, new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd HH:mm:ss", ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Include });
|
return JsonConvert.SerializeObject(obj, new JsonSerializerSettings { DateFormatString = "yyyy-MM-dd HH:mm:ss", Formatting = Formatting.Indented, ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Include });
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public static Dictionary<string, object> ConvertToDictionary(this object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(obj));
|
||||||
|
}
|
||||||
|
|
||||||
|
Type type = obj.GetType();
|
||||||
|
PropertyInfo[] properties = type.GetProperties();
|
||||||
|
|
||||||
|
Dictionary<string, object> dictionary = new Dictionary<string, object>();
|
||||||
|
|
||||||
|
foreach (PropertyInfo property in properties)
|
||||||
|
{
|
||||||
|
string propertyName = property.Name;
|
||||||
|
object propertyValue = property.GetValue(obj);
|
||||||
|
|
||||||
|
// 如果属性的类型是枚举,将其值保留为整数
|
||||||
|
if (property.PropertyType.IsEnum)
|
||||||
|
{
|
||||||
|
dictionary.Add(propertyName, (int)propertyValue);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dictionary.Add(propertyName, propertyValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dictionary;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+87
-53
@@ -2,39 +2,73 @@ kind: pipeline
|
|||||||
type: docker
|
type: docker
|
||||||
name: irc-netcore-api
|
name: irc-netcore-api
|
||||||
|
|
||||||
steps:
|
clone:
|
||||||
- name: docker-build
|
disable: true #禁用默认克隆
|
||||||
image: docker
|
|
||||||
pull: if-not-exists
|
steps:
|
||||||
volumes:
|
- name: clone-repo
|
||||||
- name: dockersock
|
image: alpine/git
|
||||||
path: /var/run/docker.sock
|
pull: if-not-exists
|
||||||
- name: cached_nuget_packages
|
volumes:
|
||||||
path: /drone/nuget_packages
|
- name: irc-test-work
|
||||||
commands:
|
path: /work
|
||||||
- date +%H:%M:%S
|
commands:
|
||||||
- pwd
|
- if [ ! -e /work/netcore-repo/.git ]; then
|
||||||
- docker build -t Test_Study .
|
git clone -b Test.IRC http://192.168.3.68:2000/XCKJ/irc-netcore-api.git /work/netcore-repo;
|
||||||
- date +%H:%M:%S
|
else
|
||||||
|
cd /work/netcore-repo;
|
||||||
|
git pull;
|
||||||
|
fi
|
||||||
|
|
||||||
|
- |
|
||||||
|
if [ ! -e Dockerfile ]; then
|
||||||
|
echo 'FROM mcr.microsoft.com/dotnet/aspnet:6.0
|
||||||
|
EXPOSE 80
|
||||||
|
WORKDIR /app
|
||||||
|
COPY publish .
|
||||||
|
ENTRYPOINT ["dotnet", "IRaCIS.Core.API.dll"]' > /work/Dockerfile
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: restore-publish
|
||||||
|
image: mcr.microsoft.com/dotnet/sdk:6.0
|
||||||
|
pull: if-not-exists
|
||||||
|
depends_on:
|
||||||
|
- clone-repo
|
||||||
|
volumes:
|
||||||
|
- name: nuget-packages
|
||||||
|
path: /root/.nuget/packages
|
||||||
|
- name: irc-test-work
|
||||||
|
path: /work
|
||||||
|
commands:
|
||||||
|
- cd /work/netcore-repo/IRaCIS.Core.API
|
||||||
|
- dotnet restore ./IRaCIS.Core.API.csproj
|
||||||
|
- rm -rf /work/publish
|
||||||
|
- cd /work/netcore-repo/IRaCIS.Core.API
|
||||||
|
- dotnet publish ./IRaCIS.Core.API.csproj -c Release --no-restore -o /work/publish
|
||||||
|
|
||||||
|
|
||||||
|
- name: docker-build
|
||||||
|
image: docker
|
||||||
|
pull: if-not-exists
|
||||||
|
depends_on:
|
||||||
|
- restore-publish
|
||||||
|
commands:
|
||||||
|
- cd /work
|
||||||
|
- docker build -t test-irc:v${DRONE_BUILD_NUMBER} .
|
||||||
|
volumes:
|
||||||
|
- name: irc-test-work
|
||||||
|
path: /work
|
||||||
|
- name: dockersock
|
||||||
|
path: /var/run/docker.sock
|
||||||
|
|
||||||
- name: docker-deploy
|
|
||||||
image: docker
|
|
||||||
pull: if-not-exists
|
|
||||||
depends_on:
|
|
||||||
- docker-build
|
|
||||||
volumes:
|
|
||||||
- name: dockersock
|
|
||||||
path: /var/run/docker.sock
|
|
||||||
commands:
|
|
||||||
- date +%H:%M:%S
|
|
||||||
- docker rm -f test-study-container
|
|
||||||
- docker run -itd -e TZ=Asia/Shanghai -e ASPNETCORE_ENVIRONMENT=Test_Study --restart=always --name test-study-container -p 8030:80 Test_Study
|
|
||||||
- date +%H:%M:%S
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
- name: cached_nuget_packages
|
- name: nuget-packages
|
||||||
host:
|
host:
|
||||||
path: /mnt/d/docker_publish/nuget_packages
|
path: /opt/cicd/nuget/packages
|
||||||
|
- name: irc-test-work
|
||||||
|
host:
|
||||||
|
path: /opt/cicd/irc-test
|
||||||
- name: dockersock
|
- name: dockersock
|
||||||
host:
|
host:
|
||||||
path: /var/run/docker.sock
|
path: /var/run/docker.sock
|
||||||
@@ -44,63 +78,63 @@ trigger:
|
|||||||
- master
|
- master
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: ssh
|
type: ssh
|
||||||
name: ssh-windows-test-study-publish
|
name: ssh-linux-test-irc-publish
|
||||||
|
|
||||||
platform:
|
platform:
|
||||||
os: windows
|
os: Linux
|
||||||
arch: amd64
|
arch: 386
|
||||||
|
|
||||||
clone:
|
clone:
|
||||||
disable: true #禁用默认克隆
|
disable: true #禁用默认克隆
|
||||||
|
|
||||||
server:
|
server:
|
||||||
host: 123.56.94.154
|
host: 123.56.94.154
|
||||||
user: Administrator
|
user: root
|
||||||
password: WHxckj2019
|
password:
|
||||||
|
from_secret: test_ssh_pwd
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: publish-test-study
|
- name: publish-test-irc
|
||||||
commands:
|
commands:
|
||||||
#拉取代码 并停止服务
|
- echo start publish test-irc-api
|
||||||
- Start-Process "C:\CICD\Test.Study\netcore_Publish.bat" -Wait
|
- cd /opt/1panel/hang/devops/test-irc
|
||||||
- cd C:\CICD\Test.Study\netcore_repo
|
- sh test-irc.sh v${DRONE_BUILD_NUMBER}
|
||||||
- dotnet restore .\IRaCIS.Core.API\IRaCIS.Core.API.csproj --packages C:\Users\Administrator\.nuget\packages
|
|
||||||
- dotnet publish .\IRaCIS.Core.API\IRaCIS.Core.API.csproj -c Release --no-restore --packages C:\Users\Administrator\.nuget\packages -o D:\Develop\Test_Study_PublishSite\IRaCIS.NetCore.API
|
|
||||||
- Start-Service -Name "Test_Study_API"
|
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- Test.Study
|
- Test.IRC
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
type: ssh
|
type: ssh
|
||||||
name: ssh-windows-test-irc-publish
|
name: ssh-linux-test-study-publish
|
||||||
|
|
||||||
platform:
|
platform:
|
||||||
os: windows
|
os: Linux
|
||||||
arch: amd64
|
arch: 386
|
||||||
|
|
||||||
clone:
|
clone:
|
||||||
disable: true #禁用默认克隆
|
disable: true #禁用默认克隆
|
||||||
|
|
||||||
server:
|
server:
|
||||||
host: 123.56.94.154
|
host: 123.56.94.154
|
||||||
user: Administrator
|
user: root
|
||||||
password: WHxckj2019
|
password:
|
||||||
|
from_secret: test_ssh_pwd
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: publish-test-irc
|
- name: publish-test-study
|
||||||
commands:
|
commands:
|
||||||
- Start-Process "C:\CICD\Test.IRC\netcore_Publish.bat" -Wait
|
- echo start publish test-study-api
|
||||||
|
- cd /opt/1panel/hang/devops/test-study
|
||||||
|
- sh test-study.sh v${DRONE_BUILD_NUMBER}
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
branch:
|
branch:
|
||||||
- Test.IRC
|
- Test.Study
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user