修改excel 临时提交
parent
21c9f4a82a
commit
595ba030e6
|
@ -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
|
||||
}
|
||||
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue