修改excel 临时提交

Test.EIImageViewer
hang 2022-11-21 10:49:43 +08:00
parent 21c9f4a82a
commit 595ba030e6
6 changed files with 173 additions and 19 deletions

View File

@ -7,6 +7,7 @@ using MiniExcelLibs;
using MiniExcelLibs.OpenXml;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NPOI.HSSF.UserModel;
namespace IRaCIS.Core.Application.Service;
@ -123,4 +124,94 @@ public static class ExcelExportHelper
#endregion
}
public static async Task<MemoryStream> DataExport_NpoiTestAsync(string code, object data, IRepository<CommonDocument> _commonDocumentRepository, IWebHostEnvironment _hostEnvironment, IDictionaryService? _dictionaryService = null, Type? translateType = null, CriterionType? criterionType = null)
{
//判断是否有字典翻译
if (_dictionaryService != null && translateType != null)
{
//一个值 对应不同的字典翻译
var needTranslatePropertyList = translateType.GetProperties().Where(t => t.IsDefined(typeof(DictionaryTranslateAttribute), true))
.SelectMany(c =>
c.GetCustomAttributes(typeof(DictionaryTranslateAttribute), false).Select(f => (DictionaryTranslateAttribute?)f).Where(t => t.CriterionType == criterionType || t.CriterionType == null).Select(k => new { c.Name, k.DicParentCode })
).ToList();
//字典表查询出所有需要翻译的数据
var translateDataList = await _dictionaryService.GetBasicDataSelect(needTranslatePropertyList.Select(t => t.DicParentCode).Distinct().ToArray());
var dic = JsonConvert.DeserializeObject<IDictionary<string, object>>(data.ToJsonNotIgnoreNull());
foreach (var key in dic.Keys)
{
//是数组 那么找到对应的属性 进行翻译
if (dic[key].GetType().IsAssignableFrom(typeof(JArray)))
{
var newObjList = new List<object>();
var no = 1;
foreach (var item in dic[key] as JArray)
{
var itemDic = JsonConvert.DeserializeObject<IDictionary<string, object>>(item.ToJsonNotIgnoreNull());
foreach (var needTranslateProperty in needTranslatePropertyList)
{
var beforeValue = itemDic[needTranslateProperty.Name]?.ToString();
itemDic[needTranslateProperty.Name] = translateDataList[needTranslateProperty.DicParentCode].Where(t => t.Code.ToLower() == beforeValue?.ToLower()).FirstOrDefault()?.ValueCN ?? String.Empty;
}
itemDic.Add("No", no++);
newObjList.Add(itemDic);
}
dic[key] = newObjList;
}
}
data = dic;
}
var (physicalPath, fileNmae) = await FileStoreHelper.GetCommonDocPhysicalFilePathAsync(_hostEnvironment, _commonDocumentRepository, code);
//模板路径
var tplPath = physicalPath;
#region MiniExcel
var memoryStream = new MemoryStream();
var config = new OpenXmlConfiguration()
{
IgnoreTemplateParameterMissing = true,
};
await MiniExcel.SaveAsByTemplateAsync(memoryStream, tplPath, data, config);
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
//var wb = new HSSFWorkbook(memoryStream);
//var sheet = wb.GetSheetAt(0);
#endregion
}
}

View File

@ -430,9 +430,13 @@ public static class FileStoreHelper
Directory.CreateDirectory(path);
}
var physicalPath = Path.Combine(path, instanceId.ToString() + ".dcm");
var physicalPath = Path.Combine(path, instanceId.ToString() );
var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{subjectVisitId}/{StaticData.Folder.DicomFolder}/{studyId}/{instanceId}.dcm";
var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{subjectVisitId}/{StaticData.Folder.DicomFolder}/{studyId}/{instanceId}";
//var physicalPath = Path.Combine(path, instanceId.ToString() + ".dcm");
//var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{subjectVisitId}/{StaticData.Folder.DicomFolder}/{studyId}/{instanceId}.dcm";
return (physicalPath, relativePath);
}

View File

@ -97,7 +97,7 @@
<TreatAsUsed>true</TreatAsUsed>
</PackageReference>
<PackageReference Include="Nito.AsyncEx" Version="5.1.2" />
<PackageReference Include="NPOI" Version="2.5.6" />
<PackageReference Include="NPOI" Version="2.6.0" />
<PackageReference Include="Panda.DynamicWebApi" Version="1.2.0" />
<PackageReference Include="Quartz" Version="3.5.0" />
<PackageReference Include="SixLabors.ImageSharp" Version="2.1.3" />

View File

@ -5236,6 +5236,26 @@
<member name="T:IRaCIS.Core.Application.ViewModel.TaskMedicalReviewQuery">
<summary>TaskMedicalReviewQuery 列表查询参数模型</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.VisitTaskViewBasic.ReadingTool">
<summary>
阅片工具
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.VisitTaskViewBasic.IsReadingTaskViewInOrder">
<summary>
任务展示访视 读片任务显示是否顺序
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.VisitTaskViewBasic.IsReadingShowSubjectInfo">
<summary>
阅片是否显示受试者信息
</summary>
</member>
<member name="P:IRaCIS.Core.Application.ViewModel.VisitTaskViewBasic.IsReadingShowPreviousResults">
<summary>
IR阅片页面是否可以查看既往任务结果
</summary>
</member>
<member name="T:IRaCIS.Core.Application.ViewModel.VisitTaskView">
<summary> VisitTaskView 列表视图模型 </summary>
</member>

View File

@ -51,10 +51,65 @@ namespace IRaCIS.Core.Application.ViewModel
public bool IsPMSetBack { get; set; }
#region 标准配置
public string TrialReadingCriterionId { get; set; }
public string TrialReadingCriterionName { get; set; }
/// <summary>
/// 阅片工具
/// </summary>
public ReadingTool? ReadingTool { get; set; }
/// <summary>
/// 任务展示访视 读片任务显示是否顺序
/// </summary>
public bool IsReadingTaskViewInOrder { get; set; } = true;
/// <summary>
/// 阅片是否显示受试者信息
/// </summary>
public bool IsReadingShowSubjectInfo { get; set; } = false;
/// <summary>
/// IR阅片页面是否可以查看既往任务结果
/// </summary>
public bool IsReadingShowPreviousResults { get; set; } = false;
public int? DigitPlaces { get; set; } = 2;
///// <summary>
///// 仲裁对象
///// </summary>
//public ArbitrationRule ArbitrationRule { get; set; } = ArbitrationRule.Reading;
///// <summary>
///// 阅片模式
///// </summary>
//public ReadingMethod ReadingType { get; set; } = ReadingMethod.Double;
///// <summary>
///// 全局阅片
///// </summary>
//public bool IsGlobalReading { get; set; } = true;
///// <summary>
///// 仲裁阅片
///// </summary>
//public bool IsArbitrationReading { get; set; } = true;
///// <summary>
///// 肿瘤学阅片 原字段 IsClinicalReading
///// </summary>
//public bool IsOncologyReading { get; set; }
#endregion
}

View File

@ -1,16 +0,0 @@
using System;
using System.Collections.Generic;
using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using IRaCIS.Core.Infrastructure.Extention;
namespace IRaCIS.Core.Application.Contracts.Image
{
public interface IStudyDTFService
{
IResponseOutput AddStudyDTF(StudyDTFAddOrUpdateCommand studyDtfAddOrUpdate);
IResponseOutput DeleteStudyDTF(Guid studyDTFId );
List<StudyDTFDTO> GetStudyDtfdtos(Guid triaId, string studyInstanceUid);
}
}