上传监控
parent
f2202daa75
commit
8eb5476f8e
|
@ -293,19 +293,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var studyMonitor = new StudyMonitor()
|
||||||
try
|
|
||||||
{
|
|
||||||
if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑
|
|
||||||
{
|
|
||||||
|
|
||||||
// 同一个访视 多个线程上传处理 批量保存 可能造成死锁 https://www.cnblogs.com/johnblogs/p/9945767.html
|
|
||||||
|
|
||||||
await _dicomArchiveService.DicomDBDataSaveChange();
|
|
||||||
|
|
||||||
archiveResult.ReuploadNewStudyId = archivedStudyIds[0] == archiveStudyCommand.AbandonStudyId ? archivedStudyIds[0] : Guid.Empty;
|
|
||||||
|
|
||||||
await _repository.AddAsync(new StudyMonitor()
|
|
||||||
{
|
{
|
||||||
TrialId = savedInfo.TrialId,
|
TrialId = savedInfo.TrialId,
|
||||||
SiteId = savedInfo.SiteId,
|
SiteId = savedInfo.SiteId,
|
||||||
|
@ -321,7 +309,22 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
IsDicom = true,
|
IsDicom = true,
|
||||||
IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null,
|
IsDicomReUpload = archiveStudyCommand.AbandonStudyId != null,
|
||||||
IP = _userInfo.IP
|
IP = _userInfo.IP
|
||||||
}, true);
|
};
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
|
||||||
|
if (archivedStudyIds.Count > 0) // 上传成功,处理逻辑
|
||||||
|
{
|
||||||
|
|
||||||
|
// 同一个访视 多个线程上传处理 批量保存 可能造成死锁 https://www.cnblogs.com/johnblogs/p/9945767.html
|
||||||
|
|
||||||
|
await _dicomArchiveService.DicomDBDataSaveChange();
|
||||||
|
|
||||||
|
archiveResult.ReuploadNewStudyId = archivedStudyIds[0] == archiveStudyCommand.AbandonStudyId ? archivedStudyIds[0] : Guid.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
studyMonitor.IsSuccess = true;
|
||||||
|
|
||||||
|
|
||||||
//_studyService.UploadOrReUploadNeedTodo(archiveStudyCommand, archivedStudyIds, ref archiveResult, );
|
//_studyService.UploadOrReUploadNeedTodo(archiveStudyCommand, archivedStudyIds, ref archiveResult, );
|
||||||
|
@ -331,20 +334,32 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
studyMonitor.IsSuccess = false;
|
||||||
|
studyMonitor.Note= JsonConvert.SerializeObject(archiveResult);
|
||||||
|
|
||||||
return ResponseOutput.NotOk(archiveResult);
|
return ResponseOutput.NotOk(archiveResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
studyMonitor.IsSuccess = false;
|
||||||
|
studyMonitor.Note = JsonConvert.SerializeObject(new { Message=e.Message,Result= archiveResult });
|
||||||
|
|
||||||
_logger.LogError(e.Message + e.StackTrace);
|
_logger.LogError(e.Message + e.StackTrace);
|
||||||
|
|
||||||
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
|
_provider.Remove("StudyUid_" + archiveStudyCommand.StudyInstanceUid);
|
||||||
|
|
||||||
return ResponseOutput.NotOk(e.Message, ApiResponseCodeEnum.ProgramException);
|
return ResponseOutput.NotOk(e.Message, ApiResponseCodeEnum.ProgramException);
|
||||||
|
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
await _repository.AddAsync(studyMonitor, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ResponseOutput.Ok(archiveResult);
|
return ResponseOutput.Ok(archiveResult);
|
||||||
|
@ -375,14 +390,19 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
{
|
{
|
||||||
var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, subjectVisitId);
|
var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetClinicalDataPath(_hostEnvironment, fileName, sv.TrialId, sv.SiteId, sv.SubjectId, subjectVisitId);
|
||||||
//插入临床pdf 路径
|
//插入临床pdf 路径
|
||||||
await _repository.AddAsync(new PreviousPDF() { SubjectVisitId = subjectVisitId,
|
await _repository.AddAsync(new PreviousPDF()
|
||||||
|
{
|
||||||
|
SubjectVisitId = subjectVisitId,
|
||||||
|
|
||||||
IsVisist=true,
|
IsVisist = true,
|
||||||
DataType= ClinicalDataType.MedicalHistory,
|
DataType = ClinicalDataType.MedicalHistory,
|
||||||
UploadType=ClinicalUploadType.PDF,
|
UploadType = ClinicalUploadType.PDF,
|
||||||
SubjectId= sv.SubjectId,
|
SubjectId = sv.SubjectId,
|
||||||
TrialId=sv.TrialId,
|
TrialId = sv.TrialId,
|
||||||
ClinicalLevel = ClinicalLevel.Subject, Path = relativePath, FileName = fileRealName });
|
ClinicalLevel = ClinicalLevel.Subject,
|
||||||
|
Path = relativePath,
|
||||||
|
FileName = fileRealName
|
||||||
|
});
|
||||||
return serverFilePath;
|
return serverFilePath;
|
||||||
});
|
});
|
||||||
await _repository.SaveChangesAsync();
|
await _repository.SaveChangesAsync();
|
||||||
|
@ -400,8 +420,8 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
public async Task<IResponseOutput<List<FileDto>>> UploadClinicalTemplate(Guid? trialId)
|
public async Task<IResponseOutput<List<FileDto>>> UploadClinicalTemplate(Guid? trialId)
|
||||||
{
|
{
|
||||||
if(trialId==null)
|
if (trialId == null)
|
||||||
trialId=default(Guid);
|
trialId = default(Guid);
|
||||||
|
|
||||||
var filerelativePath = string.Empty;
|
var filerelativePath = string.Empty;
|
||||||
List<FileDto> fileDtos = new List<FileDto>();
|
List<FileDto> fileDtos = new List<FileDto>();
|
||||||
|
@ -434,7 +454,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{subjectId:guid}/{readingId:guid}")]
|
[HttpPost("ClinicalData/UploadClinicalData/{trialId:guid}/{subjectId:guid}/{readingId:guid}")]
|
||||||
[DisableRequestSizeLimit]
|
[DisableRequestSizeLimit]
|
||||||
public async Task<IResponseOutput<List<FileDto>>> UploadReadClinicalData(Guid trialId,Guid subjectId,Guid readingId)
|
public async Task<IResponseOutput<List<FileDto>>> UploadReadClinicalData(Guid trialId, Guid subjectId, Guid readingId)
|
||||||
{
|
{
|
||||||
var filerelativePath = string.Empty;
|
var filerelativePath = string.Empty;
|
||||||
List<FileDto> fileDtos = new List<FileDto>();
|
List<FileDto> fileDtos = new List<FileDto>();
|
||||||
|
@ -531,7 +551,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
await _repository.UpdatePartialFromQueryAsync<TaskMedicalReview>(x => x.Id == taskMedicalReviewId, x => new TaskMedicalReview()
|
await _repository.UpdatePartialFromQueryAsync<TaskMedicalReview>(x => x.Id == taskMedicalReviewId, x => new TaskMedicalReview()
|
||||||
{
|
{
|
||||||
ImagePath = relativePath,
|
ImagePath = relativePath,
|
||||||
FileName=fileName,
|
FileName = fileName,
|
||||||
});
|
});
|
||||||
|
|
||||||
path = relativePath;
|
path = relativePath;
|
||||||
|
@ -617,7 +637,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
[HttpPost("QCOperation/UploadVisitCheckExcel/{trialId:guid}")]
|
[HttpPost("QCOperation/UploadVisitCheckExcel/{trialId:guid}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter))]
|
[TypeFilter(typeof(TrialResourceFilter))]
|
||||||
[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
[Authorize(Policy = IRaCISPolicy.PM_APM)]
|
||||||
public async Task<IResponseOutput> UploadVisitCheckExcel(Guid trialId )
|
public async Task<IResponseOutput> UploadVisitCheckExcel(Guid trialId)
|
||||||
{
|
{
|
||||||
|
|
||||||
var (serverFilePath, relativePath, fileName) = (string.Empty, string.Empty, string.Empty);
|
var (serverFilePath, relativePath, fileName) = (string.Empty, string.Empty, string.Empty);
|
||||||
|
@ -820,7 +840,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public FileController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment,IFileService fileService)
|
public FileController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IFileService fileService)
|
||||||
{
|
{
|
||||||
_fileService = fileService;
|
_fileService = fileService;
|
||||||
_hostEnvironment = hostEnvironment;
|
_hostEnvironment = hostEnvironment;
|
||||||
|
@ -923,7 +943,7 @@ namespace IRaCIS.Core.API.Controllers
|
||||||
[HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")]
|
[HttpPost, Route("enroll/downloadResume/{trialId:guid}/{language}")]
|
||||||
[TypeFilter(typeof(TrialResourceFilter))]
|
[TypeFilter(typeof(TrialResourceFilter))]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public async Task<IResponseOutput<string>> DownloadResume( int language, Guid trialId, Guid[] doctorIdArray)
|
public async Task<IResponseOutput<string>> DownloadResume(int language, Guid trialId, Guid[] doctorIdArray)
|
||||||
{
|
{
|
||||||
var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray);
|
var zipPath = await _fileService.CreateOfficialResumeZip(language, doctorIdArray);
|
||||||
|
|
||||||
|
|
|
@ -249,6 +249,14 @@
|
||||||
<param name="readingId"></param>
|
<param name="readingId"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadReadingAnswerImage(System.Guid,System.Guid)">
|
||||||
|
<summary>
|
||||||
|
上传Reading问题的图像
|
||||||
|
</summary>
|
||||||
|
<param name="trialId"></param>
|
||||||
|
<param name="visitTaskId"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadJudgeTaskImage(System.Guid,System.Guid)">
|
<member name="M:IRaCIS.Core.API.Controllers.StudyController.UploadJudgeTaskImage(System.Guid,System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
上传裁判任务的图像
|
上传裁判任务的图像
|
||||||
|
|
|
@ -1537,6 +1537,11 @@
|
||||||
评估原因
|
评估原因
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetOncologyReadingInfoOutDto.IsShowDetail">
|
||||||
|
<summary>
|
||||||
|
是否显示详情
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetGlobalReadingInfoInDto.UsingOriginalData">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetGlobalReadingInfoInDto.UsingOriginalData">
|
||||||
<summary>
|
<summary>
|
||||||
当新答案为空的时候 是否是有原数据
|
当新答案为空的时候 是否是有原数据
|
||||||
|
@ -1662,6 +1667,21 @@
|
||||||
标准分页Id
|
标准分页Id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.RelevanceId">
|
||||||
|
<summary>
|
||||||
|
关联ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.RelevanceValue">
|
||||||
|
<summary>
|
||||||
|
关联Value
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.GetTrialReadingQuestionOutDto.ImageCount">
|
||||||
|
<summary>
|
||||||
|
图片数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IRConfirmMedicalReviewInDto.DoctorUserIdeaEnum">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.IRConfirmMedicalReviewInDto.DoctorUserIdeaEnum">
|
||||||
<summary>
|
<summary>
|
||||||
阅片人是否认同
|
阅片人是否认同
|
||||||
|
@ -2390,6 +2410,21 @@
|
||||||
标准分页Id
|
标准分页Id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.RelevanceId">
|
||||||
|
<summary>
|
||||||
|
关联ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.RelevanceValue">
|
||||||
|
<summary>
|
||||||
|
关联Value
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialView.ImageCount">
|
||||||
|
<summary>
|
||||||
|
图片数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.Id">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.Id">
|
||||||
<summary>
|
<summary>
|
||||||
Id
|
Id
|
||||||
|
@ -2450,6 +2485,11 @@
|
||||||
是否是裁判问题
|
是否是裁判问题
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionSystemView.ImageCount">
|
||||||
|
<summary>
|
||||||
|
图片数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialViewInDto.ReadingQuestionCriterionTrialId">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionTrialViewInDto.ReadingQuestionCriterionTrialId">
|
||||||
<summary>
|
<summary>
|
||||||
系统标准Id
|
系统标准Id
|
||||||
|
@ -2550,6 +2590,21 @@
|
||||||
裁判类型
|
裁判类型
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialQuestion.RelevanceId">
|
||||||
|
<summary>
|
||||||
|
关联ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialQuestion.RelevanceValue">
|
||||||
|
<summary>
|
||||||
|
关联Value
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.TrialQuestion.ImageCount">
|
||||||
|
<summary>
|
||||||
|
图片数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.GroupName">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.GroupName">
|
||||||
<summary>
|
<summary>
|
||||||
分组
|
分组
|
||||||
|
@ -2610,6 +2665,11 @@
|
||||||
类型值
|
类型值
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionSystemInDto.ImageCount">
|
||||||
|
<summary>
|
||||||
|
图片数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.Id">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.Id">
|
||||||
<summary>
|
<summary>
|
||||||
Id
|
Id
|
||||||
|
@ -2680,6 +2740,21 @@
|
||||||
标准分页Id
|
标准分页Id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.RelevanceId">
|
||||||
|
<summary>
|
||||||
|
关联ID
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.RelevanceValue">
|
||||||
|
<summary>
|
||||||
|
关联Value
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.AddOrUpdateReadingQuestionTrialInDto.ImageCount">
|
||||||
|
<summary>
|
||||||
|
图片数量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionSystemView.Id">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionSystemView.Id">
|
||||||
<summary>
|
<summary>
|
||||||
返回的对象
|
返回的对象
|
||||||
|
@ -2740,6 +2815,11 @@
|
||||||
修约小数点
|
修约小数点
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionTrialView.ShowOrder">
|
||||||
|
<summary>
|
||||||
|
排序
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionTrialView.IsSystemData">
|
<member name="P:IRaCIS.Core.Application.Service.Reading.Dto.ReadingQuestionCriterionTrialView.IsSystemData">
|
||||||
<summary>
|
<summary>
|
||||||
是否是系统数据
|
是否是系统数据
|
||||||
|
@ -4285,6 +4365,11 @@
|
||||||
评估原因
|
评估原因
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.SetOncologySetInDto.IsShowDetail">
|
||||||
|
<summary>
|
||||||
|
是否显示详情
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.EvaluationResult">
|
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.EvaluationResult">
|
||||||
<summary>
|
<summary>
|
||||||
评估结果
|
评估结果
|
||||||
|
@ -4295,6 +4380,11 @@
|
||||||
评估原因
|
评估原因
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.GetOncologySetOutDto.IsShowDetail">
|
||||||
|
<summary>
|
||||||
|
是否显示详情
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Contracts.SetTrialReadingCriterionInDto.FormType">
|
<member name="P:IRaCIS.Core.Application.Contracts.SetTrialReadingCriterionInDto.FormType">
|
||||||
<summary>
|
<summary>
|
||||||
表单类型
|
表单类型
|
||||||
|
|
|
@ -103,6 +103,10 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public int FileCount { get; set; }
|
public int FileCount { get; set; }
|
||||||
|
|
||||||
|
public bool IsSuccess = true;
|
||||||
|
|
||||||
|
public string Note = string.Empty;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -180,7 +180,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
UploadTime = t.CreateTime,
|
UploadTime = t.CreateTime,
|
||||||
|
|
||||||
|
IsSuccess=t.IsSuccess,
|
||||||
|
Note=t.Note,
|
||||||
IP = t.IP,
|
IP = t.IP,
|
||||||
FileCount = t.FileCount,
|
FileCount = t.FileCount,
|
||||||
FileSize = t.FileSize,
|
FileSize = t.FileSize,
|
||||||
|
|
|
@ -80,6 +80,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[ForeignKey("CreateUserId")]
|
[ForeignKey("CreateUserId")]
|
||||||
public User Uploader { get; set; }
|
public User Uploader { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public bool IsSuccess = true;
|
||||||
|
|
||||||
|
public string Note = string.Empty;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue