From c4e32fbf24cf1ffff19839d296fd0a8aed387094 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Sat, 1 Jun 2024 23:12:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseDataHandleAppService.cs | 240 ++++++++++++++++++ .../CustomerOrgReportManager.cs | 4 +- 2 files changed, 242 insertions(+), 2 deletions(-) diff --git a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs index 59d8014..5c62c95 100644 --- a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs +++ b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs @@ -26,6 +26,7 @@ using System.Data; using System.Globalization; using System.IO; using System.Linq; +using System.Linq.Dynamic.Core; using System.Reflection; using System.Runtime.Loader; using System.Text; @@ -2912,6 +2913,245 @@ namespace Shentun.Peis.DataMigrations } } + + + /// + /// 迁移全部总检数据20240601 + /// + /// + public async Task TransferAllSumData() + { + + string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_new' "); + + List TempDate = (await _patientRegisterRepository.GetQueryableAsync()) + .Include(x => x.SumDiagnoses) + .Include(x => x.SumSuggestionHeaders) + .Include(x => x.SumSummaryHeaders) + .OrderBy(o => o.Id) + .Where(m => m.CreationTime < Convert.ToDateTime("2024-05-20") + && m.SumDiagnoses.Count == 0 + && m.SumSuggestionHeaders.Count == 0 + && m.SumSummaryHeaders.Count == 0 + && string.Compare(m.Id.ToString(), nextKeyValue) > 0) + .Take(100).ToList(); + + + if (TempDate.Any()) + { + foreach (var item in TempDate) + { + #region 转换成老系统PatientRegisterId + var oldPatientRegisterEnt = (await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault(); + + if (oldPatientRegisterEnt != null) + { + string oldPatientRegisterId = oldPatientRegisterEnt.OldKeyValue; //老系统ID + + await TransferSumByPatientRegisterIdData(item.Id, oldPatientRegisterId); + } + + #endregion + + await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_new' "); + } + + await TransferAllSumData(); + } + else + { + _logger.LogInformation("总检数据已处理完"); + } + + } + + + /// + /// 迁移总检数据20240601 + /// + /// + public async Task TransferSumByPatientRegisterIdData(Guid newPatientRegisterId, string oldPatientRegisterId) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + + + #region 综述、建议 + var oldSum = await Db.Ado.GetDataTableAsync($"select summary,suggestion,barcode_no from patient_register where patient_register_id='{oldPatientRegisterId}' "); + + if (oldSum.Rows.Count == 1) + { + string oldSummary = oldSum.Rows[0][0].ToString(); + string oldSuggestion = oldSum.Rows[0][1].ToString(); + + if (!string.IsNullOrWhiteSpace(oldSummary)) + { + + Guid sumSummaryHeaderId = GuidGenerator.Create(); + + var dataSumSummaryHeader = new SumSummaryHeader(sumSummaryHeaderId) + { + DisplayOrder = 1, + SummaryFlag = '0', + PatientRegisterId = newPatientRegisterId, + SummaryTitle = "异常结果如下" + }; + + await _sumSummaryHeaderRepository.InsertAsync(dataSumSummaryHeader); + + Guid sumSummaryContentId = GuidGenerator.Create(); + var dataSumSummaryContent = new SumSummaryContent(sumSummaryContentId) + { + DisplayOrder = 1, + SumSummaryHeaderId = sumSummaryHeaderId, + SummaryContent = oldSummary + }; + + await _sumSummaryContentRepository.InsertAsync(dataSumSummaryContent); + + } + + + if (!string.IsNullOrWhiteSpace(oldSuggestion)) + { + + Guid sumSuggestionHeaderId = GuidGenerator.Create(); + + var dataSumSuggestionHeader = new SumSuggestionHeader(sumSuggestionHeaderId) + { + DisplayOrder = 1, + SuggestionFlag = '0', + PatientRegisterId = newPatientRegisterId, + SuggestionTitle = "健康建议如下" + }; + + await _sumSuggestionHeaderRepository.InsertAsync(dataSumSuggestionHeader); + + Guid sumSuggestionContentId = GuidGenerator.Create(); + var dataSumSuggestionContent = new SumSuggestionContent(sumSuggestionContentId) + { + DisplayOrder = 1, + SuggestionContent = oldSuggestion, + SuggestionType = SuggestionTypeFlag.HealthGuidance, + SumSuggestionHeaderId = sumSuggestionHeaderId + }; + + await _sumSuggestionContentRepository.InsertAsync(dataSumSuggestionContent); + + + + #region 总症诊断 + var oldSummaryDiagnosis = await Db.Ado.GetDataTableAsync($"select diagnosis_id from summary_diagnosis where patient_register_id='{oldPatientRegisterId}' order by display_order asc "); + + if (oldSummaryDiagnosis.Rows.Count > 0) + { + List sumDiagnosisInsert = new List(); + + foreach (DataRow row in oldSummaryDiagnosis.Rows) + { + var diagnosisEnt = (await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault(); + if (diagnosisEnt != null) + { + + var dataSumDiagnosis = new SumDiagnosis + { + DisplayOrder = oldSummaryDiagnosis.Rows.IndexOf(row) + 1, + PatientRegisterId = newPatientRegisterId, + DiagnosisId = Guid.Parse(diagnosisEnt.NewKeyValue), + SumSuggestionHeaderId = sumSuggestionHeaderId + }; + + sumDiagnosisInsert.Add(dataSumDiagnosis); + + + } + + + } + + if (sumDiagnosisInsert.Any()) + await _sumDiagnosisRepository.InsertManyAsync(sumDiagnosisInsert); + + } + #endregion + + + } + + + } + #endregion + + await uow.CompleteAsync(); + + await Db.Ado.ExecuteCommandAsync($"insert into tb_handle_patient_register (new_patient_register_id,old_patient_register_id,addtime) " + + $"values ('{newPatientRegisterId.ToString()}','{oldPatientRegisterId}',getdate())"); + } + } + + + + /// + /// 修复总检诊断绑定的建议头ID + /// + /// + public async Task TransferUpdateSumSuggestionHeaderIdData() + { + + string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis' "); + + List TempDate = (await _patientRegisterRepository.GetQueryableAsync()) + .OrderBy(o => o.Id) + .Where(m => m.CreationTime < Convert.ToDateTime("2024-05-20") + && string.Compare(m.Id.ToString(), nextKeyValue) > 0) + .Take(1000).ToList(); + + + if (TempDate.Any()) + { + foreach (var item in TempDate) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + #region 修复建议头ID + var sumDiagnosisList = await _sumDiagnosisRepository.GetListAsync(m => m.PatientRegisterId == item.Id); + + foreach (var sumDiagnosis in sumDiagnosisList) + { + var isSumSuggestionHeaderId = await _sumSuggestionHeaderRepository.CountAsync(c => c.Id == sumDiagnosis.SumSuggestionHeaderId); + if (isSumSuggestionHeaderId == 0) + { + var sumSuggestionContentEnt = await _sumSuggestionContentRepository.FirstOrDefaultAsync(m => m.Id == sumDiagnosis.SumSuggestionHeaderId); + if (sumSuggestionContentEnt != null) + { + sumDiagnosis.SumSuggestionHeaderId = sumSuggestionContentEnt.SumSuggestionHeaderId; + } + } + } + + await _sumDiagnosisRepository.UpdateManyAsync(sumDiagnosisList); + + #endregion + + await uow.CompleteAsync(); + } + await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='sum_diagnosis' "); + } + + await TransferUpdateSumSuggestionHeaderIdData(); + } + else + { + _logger.LogInformation("修复总检诊断绑定的建议头ID已处理完"); + } + + } + + //20170706010013 + + #endregion #region 青藏公司对比 diff --git a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs index 67b49c3..c4541c9 100644 --- a/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs +++ b/src/Shentun.Peis.Domain/ReportTemplates/CustomerOrgReportManager.cs @@ -64,7 +64,7 @@ namespace Shentun.Peis.ReportTemplates _cacheService = cacheService; } - + /// /// 根据模板创建报告 /// @@ -1562,7 +1562,7 @@ namespace Shentun.Peis.ReportTemplates var medicalTenAbnormalResults = query.ToList().GroupBy(g => g.DiagnosisId).Select(s => new UnitPhysicalExaminationReportExportWordData_MedicalTenAbnormalResult { DiagnosisName = s.FirstOrDefault().DiagnosisName, - DiagnosisSuggestion = DataHelper.SetSumSuggestionInReport(s.Select(ss => ss.ac).ToList()) + DiagnosisSuggestion = DataHelper.SetSumSuggestionInReport(s.Where(m => m.ac != null).Select(ss => ss.ac).ToList()) }); documentData.MedicalTenAbnormalResults = medicalTenAbnormalResults.ToList();