using IRaCIS.Core.Application.Service; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Distributed; using Microsoft.Extensions.Options; using System.Diagnostics; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Text.RegularExpressions; namespace IRaCIS.Application.Services { [ApiExplorerSettings(GroupName = "Institution")] public class TestService : BaseService { private readonly IRepository _dicRepository; private readonly IRepository _trialRepository; //private readonly IDistributedCache _cache; private readonly IOptionsMonitor _systemEmailConfig; private readonly IOptionsMonitor _basicConfig; private readonly IRepository _visitTaskRepositoryy; public void ToPdf(string officePath, string outPutPath) { //获取libreoffice命令的路径 string libreOfficePath = "C:\\Users\\Admin\\Desktop\\新建文件夹\\program\\soffice.exe"; ProcessStartInfo procStartInfo = new ProcessStartInfo(libreOfficePath, string.Format("--convert-to pdf --outdir {0} --nologo {1}", outPutPath, officePath)); procStartInfo.RedirectStandardOutput = true; procStartInfo.UseShellExecute = false; procStartInfo.CreateNoWindow = true; procStartInfo.WorkingDirectory = Environment.CurrentDirectory; //开启线程 Process process = new Process() { StartInfo = procStartInfo, }; process.Start(); process.WaitForExit(); if (process.ExitCode != 0) { throw new BusinessValidationFailedException(process.ExitCode.ToString()); } } public TestService(IRepository dicRepository, IRepository trialRepository/*, IDistributedCache cache*/ , IOptionsMonitor systemEmailConfig, IOptionsMonitor basicConfig, IRepository visitTaskRepository) { _visitTaskRepositoryy = visitTaskRepository; _systemEmailConfig = systemEmailConfig; _basicConfig = basicConfig; _dicRepository = dicRepository; _trialRepository = trialRepository; //_cache = cache; } [AllowAnonymous] public async Task TestTimeOut() { await Task.Delay(15000); return ResponseOutput.Ok(); } [UnitOfWork] public async Task Get() { Expression> visitTaskLambda = x => x.TrialId == Guid.Empty && x.SubjectId == Guid.Empty && x.TrialReadingCriterionId == Guid.Empty; var visitTaskIdQueryable = _visitTaskRepositoryy.Where(visitTaskLambda).Where(t => t.Subject.SubjectVisitTaskList.AsQueryable().Where(visitTaskLambda).Any(c => c.IsNeedClinicalDataSign == true && c.IsClinicalDataSign == false && c.VisitTaskNum < t.VisitTaskNum)).Select(t => t.Id); await _visitTaskRepositoryy.BatchUpdateNoTrackingAsync(t => visitTaskIdQueryable.Contains(t.Id), u => new VisitTask() { IsFrontTaskNeedSignButNotSign = true }); //var a = ((Decimal)1.00).ToString().TrimEnd(new char[] { '.', '0' }); //var b = ((Decimal)1.01).ToString().TrimEnd(new char[] { '.', '0' }); //var c = ((Decimal)100).ToString().TrimEnd(new char[] { '.', '0' }); //var subject1 = Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391693"); //var subject2 = Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391694"); // var subjectList = new List() { Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391693") , // Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391694") , // Guid.Parse("431D0C58-ABC5-4166-B9BC-08DA0E391695") // }; //string[] citys = new string[] { "广州", "深圳", "上海", "北京" }; //foreach (var item in subjectList) //{ // Console.WriteLine(await BNRFactory.Default.Create($"[CN:{item}][N:[CN:{item}]/0000000]")); //} //foreach (var item in subjectList) //{ // Console.WriteLine(await BNRFactory.Default.Create($"[N:[CN:{item}]/0000000]")); //} //foreach (var item in subjectList) //{ // Console.WriteLine(await BNRFactory.Default.Create($"[CN:{item}][redis:city/0000000]")); //} //var needAddVisitList = await _repository.Where(t => t.TrialId == Guid.Empty).DistinctBy(t => t.VisitTaskNum).ToListAsync(); //await _repository.BatchUpdateAsync(t => t.Id == Guid.Empty, u => new VisitTask() //{ // SuggesteFinishedTime = u.IsUrgent ? DateTime.Now.AddDays(2) : DateTime.Now.AddDays(7), // Code = u.Code + 1 //}); //var query = from item1 in _repository.Where() // join item2 in _repository.Where() on item1.ValueType equals item2.ValueType // select new // { // item1.ValueType, // dd = item2.ValueType // }; //var list2 = query.ToList(); //await Task.CompletedTask; //var list = await _repository.Where(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74")).ToListAsync(); ////await _repository.BatchDeleteAsync(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74")); //await _repository.AddRangeAsync(list, true); //await _repository.SaveChangesAsync(); //await _repository.BatchUpdateAsync(t => t.TrialId == Guid.Parse("40400000-3e2c-0016-239b-08da581f0e74") && t.EntityName== "ClinicalDataTrialSet", t => new DataInspection() { CreateTime= DateTime.Now.AddMonths(-2) } ); //await _visitTaskRepositoryy.UpdatePartialFromQueryAsync( Guid.Parse("78360000-3E2C-0016-9B53-08DA6A002040"), c => new VisitTask() { UpdateTime = DateTime.Now }); //await _visitTaskRepositoryy.UpdatePartialFromQueryAsync( Guid.Parse("78360000-3E2C-0016-9B53-08DA6A002040"), c => new VisitTask() { UpdateTime = DateTime.Now.AddMinutes(1) }); var a = _userInfo.IsTestUser; var list1 = await _repository.Where().Select(t => t.TranslateValue(t.Value, t.ValueCN, true)).ToListAsync(); var list2 = await _repository.Where().Select(t => t.TranslateValue(t.Value, t.ValueCN, false)).ToListAsync(); await _repository.SaveChangesAsync(); return _userInfo.LocalIp; } private static Dictionary _replacePatterns = new Dictionary() { { "test", "Atlanta Knight" }, { "GAME_TIME", "7:30pm" }, { "GAME_NUMBER", "161" }, { "DATE", "October 18 2018" }, }; private static string ReplaceFunc(string findStr) { if (_replacePatterns.ContainsKey(findStr)) { return _replacePatterns[findStr]; } return findStr; } [AllowAnonymous] public async Task testwwwww([FromServices] IWebHostEnvironment env) { await Task.CompletedTask; } [AllowAnonymous] public async Task GetEnvironmentName([FromServices] IWebHostEnvironment env) { //update DicomInstance set Path = '/IRaCISData/TrialData/' + cast(DicomInstance.TrialId as varchar) + '/' + DicomInstance.SiteId + '/' + DicomInstance.SubjectId + '/' + DicomInstance.SubjectVisitId + '/Dicom/' + DicomInstance.StudyId + '/' + DicomInstance.Id + '.dcm' //await _repository.BatchUpdateAsync(u => u.Path.Contains(".dcm"), t => new DicomInstance() { Path = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{t.TrialId}/{t.SiteId}/{t.SubjectId}/{t.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{t.StudyId}/{t.Id}.dcm" }); //await _repository.BatchUpdateAsync(u => !u.Path.Contains(".dcm"), t => new DicomInstance() { Path = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{t.TrialId}/{t.SiteId}/{t.SubjectId}/{t.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{t.StudyId}/{t.Id}" }); return new { env.EnvironmentName, EMailConfig = _systemEmailConfig.CurrentValue, BasicConfig = _basicConfig.CurrentValue }; // Load a document. //using (var document = DocX.Load(Path.Combine(_hostEnvironment.ContentRootPath, "ReplaceText.docx"))) //{ // // Check if all the replace patterns are used in the loaded document. // if (document.FindUniqueByPattern(@"<[\w \=]{4,}>", RegexOptions.IgnoreCase).Count > 0) // { // // Do the replacement of all the found tags and with green bold strings. // //for (int i = 0; i < _replacePatterns.Count; ++i) // //{ // // document.ReplaceText("<(.*?)>", TestService.ReplaceFunc, false, RegexOptions.IgnoreCase, new Formatting() { Bold = true, FontColor = System.Drawing.Color.Green }); // //} // // Save this document to disk. // document.ReplaceText("test", "jfdksajfkljflsdjf", false, RegexOptions.IgnoreCase, new Formatting() { Bold = true, FontColor = System.Drawing.Color.Green }); // document.SaveAs("ReplacedText.docx"); // } //} //return await NpoiWordHelper.TemplateExportWordAsync(Path.Combine(_hostEnvironment.ContentRootPath, "ReplaceText.docx"), new { test = "xiugai", ZZZZ = "ModiffyZZZZ" }, null, _hostEnvironment); //_cache.SetString("test" , "cacheStr"); //var aa= _trialRepository.Where(t => t.Id == Guid.Empty).First(); //var aaabb = _trialRepository.BatchDeleteNoTrackingAsync(t => t.Id == Guid.Empty).Result; //var aaaa = _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == Guid.Empty).Result; //var waitModifyEntity = _dicRepository.FirstOrDefaultAsync(t => t.Id == Guid.Parse("e2b97a6c-35a6-4aa3-7f27-08da13ab33ff")).GetAwaiter().GetResult(); //var tt = _dicRepository.UpdateAsync(waitModifyEntity, t => new Dictionary() { Description = "xxxxx" }, true).Result; //var tt2 = _trialRepository.UpdatePartialFromQueryAsync(Guid.Parse("543d0000-3e10-0016-77e9-08da2827228a"), t => new Trial() { Indication = "WCH测试稽查002" }, true).Result; //var d = _repository.Where(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault(); //var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First(); //CultureInfo culture = CultureInfo.CurrentUICulture; //var dd = _dicRepository.UpdatePartialFields(Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), // u => new Dictionary() { ParentId = null, Code = "test" }, true); //var ggggg = _dicRepository.UpdateFromQueryAsync(t => t.ParentId == Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), u=>new Dictionary(){Code = "test"}).Result; //var ddd = _dicRepository.BatchUpdateAsync(t => t.Id == Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), // u => new Dictionary() { /*ParentId = null,*/ Code = "test" }).Result; //var aaaaa= _trialRepository.BatchUpdateAsync(t => t.Id == Guid.Empty, // u => new SubjectVisit() { CurrentActionUserId = null }).Result; //var d = _dicRepository.UpdateFromDTOAsync(new AddOrEditBasicDic() { Id = Guid.Parse("60d86683-c33b-4349-b672-08da1e91b622"), ParentId = null, ChildGroup = null, Code = null }, true, true).Result; //var a = 123; throw new BusinessValidationFailedException(_localizer["TrialIsDoubleCheck{0}", "测试"]); var b = _localizer["test{0}", "测试"]; return _localizer["test{0}", "测试"]; //var list = _repository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.VisitTaskList).ToList(); //var list2 = _repository.Where(t => t.Id == Guid.NewGuid()).Select(t => t.SourceSubjectVisit).ToList(); //var list3 = _repository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.SourceSubjectVisit.VisitTaskList).ToList(); //var list2 = _repository.Where(t => t.Id == Guid.NewGuid()).SelectMany(t => t.SubjectVisitTaskList).ToList(); //return _userInfo.LocalIp; } public string PostData(TestModel testModelList) { return String.Empty; } /// /// 维护临床数据 --一定要在同步表前同步数据才行 /// /// [AllowAnonymous] public async Task ModifyClinicalDataTable() { var needAddList = _repository.Where(t => t.CriterionEnumListStr != String.Empty && t.TrialClinicalDataSetCriteriaList.Count() == 0).ToList(); //遍历项目 foreach (var needAddTrialGroup in needAddList.GroupBy(t => t.TrialId)) { //找到项目存在的项目标准 var trialCritrialList = _repository.Where(t => t.TrialId == needAddTrialGroup.Key).ToList(); //遍历项目下的临床数据 foreach (var needAddTrial in needAddTrialGroup) { //遍历每条临床数据配置的标准 foreach (var item in needAddTrial.CriterionEnumList) { var find = trialCritrialList.Where(t => (int)t.CriterionType == item).FirstOrDefault(); if (find != null) { await _repository.AddAsync(new TrialClinicalDataSetCriterion() { TrialClinicalDataSetId = needAddTrial.Id, TrialReadingCriterionId = find.Id }); } } } } await _repository.SaveChangesAsync(); return ResponseOutput.Ok(); } } public class TestModel { //[Required] public string Id { get; set; } public string Name { get; set; } public DateTime? Time { get; set; } } } namespace Localization { public class SharedResource { } }