From c5147afad38aa0412c8112ac92ea30869e4f7aaf Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Fri, 19 Apr 2024 18:33:09 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseDataHandleAppService.cs | 789 +++++++++++++++++- 1 file changed, 785 insertions(+), 4 deletions(-) diff --git a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs index e9527c7..62f6ca6 100644 --- a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs +++ b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs @@ -1,17 +1,30 @@ -using Microsoft.AspNetCore.Authorization; +using log4net.Plugin; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.DependencyModel; +using Microsoft.Extensions.Options; +using NPOI.DDF; using Shentun.Peis.Enums; using Shentun.Peis.ItemTypes; using Shentun.Peis.Models; +using Shentun.Peis.MyUser; +using Shentun.Peis.Sexs; using Shentun.Utilities; using SqlSugar; using System; using System.Collections.Generic; using System.Data; +using System.IO; using System.Linq; +using System.Reflection; +using System.Runtime.Loader; using System.Threading.Tasks; +using TencentCloud.Sqlserver.V20180328.Models; using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; +using Volo.Abp.Identity; +using Volo.Abp.Users; using Xceed.Document.NET; namespace Shentun.Peis.DataMigrations @@ -48,6 +61,16 @@ namespace Shentun.Peis.DataMigrations private readonly IRepository _sampleTypeRepository; private readonly IRepository _itemRepository; private readonly IRepository _referenceRangeRepository; + private readonly IRepository _asbitemRepository; + private readonly IRepository _asbitemDetailRepository; + private readonly IRepository _medicalPackageRepository; + private readonly IRepository _medicalPackageDetailRepository; + private readonly IRepository _diagnosisRepository; + private readonly IRepository _suggestionRepository; + private readonly IRepository _itemResultTemplateRepository; + private readonly IRepository _ItemResultMatchRepository; + private readonly MyUserAppService _myUserAppService; + public BaseDataHandleAppService( IRepository deviceTypeRepository, IRepository itemTypeRepository, @@ -58,7 +81,17 @@ namespace Shentun.Peis.DataMigrations IRepository invoiceItemTypeRepository, IRepository fieldComparisonRepository, IRepository sampleTypeRepository, - IRepository itemRepository) + IRepository itemRepository, + IRepository referenceRangeRepository, + IRepository asbitemRepository, + IRepository asbitemDetailRepository, + IRepository medicalPackageRepository, + IRepository medicalPackageDetailRepository, + IRepository itemResultTemplateRepository, + IRepository itemResultMatchRepository, + IRepository diagnosisRepository, + IRepository suggestionRepository, + MyUserAppService myUserAppService) { _deviceTypeRepository = deviceTypeRepository; _itemTypeRepository = itemTypeRepository; @@ -70,6 +103,16 @@ namespace Shentun.Peis.DataMigrations _fieldComparisonRepository = fieldComparisonRepository; _sampleTypeRepository = sampleTypeRepository; _itemRepository = itemRepository; + _referenceRangeRepository = referenceRangeRepository; + _asbitemRepository = asbitemRepository; + _asbitemDetailRepository = asbitemDetailRepository; + _medicalPackageRepository = medicalPackageRepository; + _medicalPackageDetailRepository = medicalPackageDetailRepository; + _itemResultTemplateRepository = itemResultTemplateRepository; + _ItemResultMatchRepository = itemResultMatchRepository; + _diagnosisRepository = diagnosisRepository; + _suggestionRepository = suggestionRepository; + _myUserAppService = myUserAppService; } /// @@ -327,6 +370,7 @@ namespace Shentun.Peis.DataMigrations } + /// /// 迁移标本类型数据 /// @@ -387,7 +431,51 @@ namespace Shentun.Peis.DataMigrations foreach (DataRow row in oldItemList.Rows) { + #region 根据仪器类别生成二级科室 + var itemTypeId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue); + + Guid? deviceTypeId = null; + + if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString())) + { + deviceTypeId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue); + + var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId); + var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value); + + + var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName); + if (itemTypeChildEnt == null) + { + var item_type_data = new ItemType + { + DisplayName = deviceTypeEnt.DisplayName, + DisplayOrder = 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName), + CheckTypeFlag = itemTypeEnt.CheckTypeFlag, + GuidTypeId = itemTypeEnt.GuidTypeId, + IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem, + IsWrap = itemTypeEnt.IsWrap, + MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId, + ParentId = itemTypeEnt.Id, + PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result + }; + + var item_type_ent = await _itemTypeRepository.InsertAsync(item_type_data, true); + itemTypeId = item_type_ent.Id; + } + else + { + itemTypeId = itemTypeChildEnt.Id; + } + + } + + #endregion + + + Guid? unitId = null; if (!string.IsNullOrWhiteSpace(row["unit_id"].ToString())) unitId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "unit" && m.OldKeyValue == row["unit_id"].ToString()).FirstOrDefault().NewKeyValue); @@ -401,7 +489,7 @@ namespace Shentun.Peis.DataMigrations DiagnosisFunction = "", EnglishShortName = row["english_abbreviation"].ToString(), InputCheck = row["input_check"].ToString(), - IsActive = 'Y', + IsActive = Convert.ToChar(row["valid_flag"].ToString()), IsCalculationItem = 'N', IsContinueProcess = 'N', IsDiagnosisFunction = 'N', @@ -413,7 +501,8 @@ namespace Shentun.Peis.DataMigrations PriceItemId = null, ReferenceRangeTypeFlag = Convert.ToChar(row["reference_range_type"]), ResultTemplateTypeFlag = '0', - UnitId = unitId + UnitId = unitId, + DeviceTypeId = deviceTypeId }; var ent = await _itemRepository.InsertAsync(data, true); @@ -457,5 +546,697 @@ namespace Shentun.Peis.DataMigrations } } } + + + /// + /// 迁移组合项目数据 + /// + /// + public async Task TransferAsbitemData() + { + var count = await _asbitemRepository.GetCountAsync(); + + if (count == 0) + { + List dataList = new List(); + var oldAsbitemList = await Db.Ado.GetDataTableAsync("select * from asbitem "); + if (oldAsbitemList.Rows.Count > 0) + { + List fieldComparisons = new List(); + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldAsbitemList.Rows) + { + + #region 根据仪器类别生成二级科室 + + var itemTypeId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue); + + Guid? deviceTypeId = null; + + if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString())) + { + deviceTypeId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault().NewKeyValue); + + var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId); + var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value); + + + var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName); + if (itemTypeChildEnt == null) + { + var item_type_data = new ItemType + { + DisplayName = deviceTypeEnt.DisplayName, + DisplayOrder = 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName), + CheckTypeFlag = itemTypeEnt.CheckTypeFlag, + GuidTypeId = itemTypeEnt.GuidTypeId, + IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem, + IsWrap = itemTypeEnt.IsWrap, + MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId, + ParentId = itemTypeEnt.Id, + PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result + }; + + var item_type_ent = await _itemTypeRepository.InsertAsync(item_type_data, true); + itemTypeId = item_type_ent.Id; + } + else + { + itemTypeId = itemTypeChildEnt.Id; + } + + } + + #endregion + + Guid InvoiceItemTypeId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "invoice_item_type" && m.OldKeyValue == row["collect_item_type_id"].ToString()).FirstOrDefault().NewKeyValue); + var data = new Asbitem + { + DisplayName = row["asbitem_name"].ToString(), + DisplayOrder = oldAsbitemList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["asbitem_name"].ToString()), + DefaultResult = row["default_result"].ToString(), + DiagnosisFunction = "", + IsActive = Convert.ToChar(row["valid_flag"].ToString()), + IsContinueProcess = 'N', + IsDiagnosisFunction = 'N', + ItemTypeId = itemTypeId, + Price = Convert.ToDecimal(row["price"]), + DeviceTypeId = deviceTypeId, + ClinicalMeaning = row["clinical_meaning"].ToString(), + ForSexId = ConvertForSex(row["for_sex_id"].ToString()), + InvoiceItemTypeId = InvoiceItemTypeId, + IsBeforeEat = Convert.ToChar(row["before_eat_flag"].ToString()), + IsCheck = Convert.ToChar(row["check_flag"].ToString()), + IsItemResultMerger = Convert.ToChar(row["item_result_merger_flag"].ToString()), + IsPictureRotate = Convert.ToChar(row["picture_rotate_flag"].ToString()), + QueueTime = string.IsNullOrEmpty(row["queue_time"].ToString()) ? 0 : Convert.ToDecimal(row["queue_time"].ToString()), + ShortName = row["short_name"].ToString() + }; + + var ent = await _asbitemRepository.InsertAsync(data, true); + + + fieldComparisons.Add(new FieldComparison + { + TableName = "asbitem", + FieldName = "id", + NewKeyValue = ent.Id.ToString(), + OldKeyValue = row["asbitem_id"].ToString() + }); + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + + + } + } + + + } + + /// + /// 迁移组合项目明细数据 + /// + /// + public async Task TransferAsbitemDetailData() + { + var count = await _asbitemDetailRepository.GetCountAsync(); + + if (count == 0) + { + List dataList = new List(); + var oldAsbitemDetailList = await Db.Ado.GetDataTableAsync("select * from asbitem_detail "); + if (oldAsbitemDetailList.Rows.Count > 0) + { + List fieldComparisons = new List(); + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldAsbitemDetailList.Rows) + { + Guid asbitemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue); + Guid itemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue); + var data = new AsbitemDetail + { + AsbitemId = asbitemId, + ItemId = itemId + }; + + dataList.Add(data); + } + + await _asbitemDetailRepository.InsertManyAsync(dataList); + + + } + } + + + } + + + ///// + ///// 处理组合项目未启用的数据 + ///// + ///// + //public async Task HanldAsbitem() + //{ + + // List dataList = new List(); + // var oldAsbitemList = await Db.Ado.GetDataTableAsync("select * from asbitem where valid_flag='N' "); + // if (oldAsbitemList.Rows.Count > 0) + // { + + // List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + // List asbitemIds = new List(); + + // foreach (DataRow row in oldAsbitemList.Rows) + // { + // Guid asbitemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue); + + // asbitemIds.Add(asbitemId); + // } + + // dataList = await _asbitemRepository.GetListAsync(m => asbitemIds.Contains(m.Id)); + + // foreach (var item in dataList) + // { + // item.IsActive = 'N'; + // } + + + // await _asbitemRepository.UpdateManyAsync(dataList); + // } + + //} + + /// + /// 迁移体检套餐数据 + /// + /// + public async Task TransferMedicalPackageData() + { + var count = await _medicalPackageRepository.GetCountAsync(); + + if (count == 0) + { + List dataList = new List(); + var oldMedicalPackageList = await Db.Ado.GetDataTableAsync("select * from medical_package "); + if (oldMedicalPackageList.Rows.Count > 0) + { + List fieldComparisons = new List(); + + foreach (DataRow row in oldMedicalPackageList.Rows) + { + var data = new MedicalPackage + { + DisplayName = row["medical_package_name"].ToString(), + DisplayOrder = oldMedicalPackageList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["medical_package_name"].ToString()), + ForSexId = ConvertForSex(row["for_sex_id"].ToString()), + IsActive = Convert.ToChar(row["valid_flag"].ToString()), + Price = Convert.ToDecimal(row["price"].ToString()), + Remark = row["remark"].ToString() + }; + + var ent = await _medicalPackageRepository.InsertAsync(data, true); + + + fieldComparisons.Add(new FieldComparison + { + TableName = "medical_package", + FieldName = "id", + NewKeyValue = ent.Id.ToString(), + OldKeyValue = row["medical_package_id"].ToString() + }); + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + + + } + } + + + } + + + /// + /// 迁移体检套餐明细数据 + /// + /// + public async Task TransferMedicalPackageDetailData() + { + var count = await _medicalPackageDetailRepository.GetCountAsync(); + + if (count == 0) + { + List dataList = new List(); + var oldMedicalPackageDetailList = await Db.Ado.GetDataTableAsync("select * from medical_package_detail "); + if (oldMedicalPackageDetailList.Rows.Count > 0) + { + + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldMedicalPackageDetailList.Rows) + { + Guid asbitemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue); + Guid MedicalPackageId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["medical_package_id"].ToString()).FirstOrDefault().NewKeyValue); + + var asbitemEnt = await _asbitemRepository.GetAsync(asbitemId); + + var data = new MedicalPackageDetail + { + AsbitemId = asbitemId, + Amount = 1, + MedicalPackageId = MedicalPackageId, + Price = asbitemEnt.Price + }; + + dataList.Add(data); + } + + await _medicalPackageDetailRepository.InsertManyAsync(dataList); + + + } + } + + + } + + /// + /// 迁移诊断设置数据 + /// + /// + public async Task TransferDiagnosisData() + { + var count = await _diagnosisRepository.GetCountAsync(); + if (count == 0) + { + List dataList = new List(); + var oldDiagnosisList = await Db.Ado.GetDataTableAsync("select * from diagnosis "); + if (oldDiagnosisList.Rows.Count > 0) + { + List fieldComparisons = new List(); + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldDiagnosisList.Rows) + { + + #region 根据仪器类别生成二级科室 + + var itemTypeId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item_type" && m.OldKeyValue == row["department_id"].ToString()).FirstOrDefault().NewKeyValue); + + Guid? deviceTypeId = null; + + if (!string.IsNullOrWhiteSpace(row["device_type_id"].ToString())) + { + var fieldComparisonEnt = fieldComparisonList.Where(m => m.TableName == "device_type" && m.OldKeyValue == row["device_type_id"].ToString()).FirstOrDefault(); + if (fieldComparisonEnt != null) + { + deviceTypeId = Guid.Parse(fieldComparisonEnt.NewKeyValue); + var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId); + var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value); + + + var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName); + if (itemTypeChildEnt == null) + { + var item_type_data = new ItemType + { + DisplayName = deviceTypeEnt.DisplayName, + DisplayOrder = 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName), + CheckTypeFlag = itemTypeEnt.CheckTypeFlag, + GuidTypeId = itemTypeEnt.GuidTypeId, + IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem, + IsWrap = itemTypeEnt.IsWrap, + MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId, + ParentId = itemTypeEnt.Id, + PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result + }; + + var item_type_ent = await _itemTypeRepository.InsertAsync(item_type_data, true); + itemTypeId = item_type_ent.Id; + } + else + { + itemTypeId = itemTypeChildEnt.Id; + } + } + + } + + #endregion + + + var data = new Diagnosis + { + DisplayName = row["diagnosis_name"].ToString(), + DisplayOrder = oldDiagnosisList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["diagnosis_name"].ToString()), + ItemTypeId = itemTypeId, + DiagnosisLevelId = 1, + ForSexId = 'A', + IsIll = Convert.ToChar(row["ill_flag"].ToString()), + IsSummaryTemplate = Convert.ToChar(row["template_flag"].ToString()), + SuggestionName = row["suggestion_name"].ToString() + }; + + var ent = await _diagnosisRepository.InsertAsync(data, true); + + + fieldComparisons.Add(new FieldComparison + { + TableName = "diagnosis", + FieldName = "id", + NewKeyValue = ent.Id.ToString(), + OldKeyValue = row["diagnosis_id"].ToString() + }); + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + + + } + } + } + + + /// + /// 迁移诊断建议数据 + /// + /// + public async Task TransferSuggestionData() + { + var count = await _suggestionRepository.GetCountAsync(); + if (count == 0) + { + List dataList = new List(); + var oldSuggestionList = await Db.Ado.GetDataTableAsync("select * from suggestion "); + if (oldSuggestionList.Rows.Count > 0) + { + List fieldComparisons = new List(); + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldSuggestionList.Rows) + { + Guid DiagnosisId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault().NewKeyValue); + + var data = new Suggestion + { + DisplayOrder = oldSuggestionList.Rows.IndexOf(row) + 1, + DiagnosisId = DiagnosisId, + SuggestionType = SuggestionTypeFlag.HealthGuidance, + SuggestionContent = row["suggestion_content"].ToString() + }; + + var ent = await _suggestionRepository.InsertAsync(data, true); + + + fieldComparisons.Add(new FieldComparison + { + TableName = "suggestion", + FieldName = "id", + NewKeyValue = ent.Id.ToString(), + OldKeyValue = row["suggestion_id"].ToString() + }); + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + + + } + } + } + + + /// + /// 迁移项目结果模板数据 + /// + /// + public async Task TransferItemResultTemplateData() + { + var count = await _itemResultTemplateRepository.GetCountAsync(); + if (count == 0) + { + List dataList = new List(); + var oldItemResultTemplateList = await Db.Ado.GetDataTableAsync("select * from item_result_template "); + if (oldItemResultTemplateList.Rows.Count > 0) + { + List fieldComparisons = new List(); + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldItemResultTemplateList.Rows) + { + Guid? DiagnosisId = null; + if (!string.IsNullOrWhiteSpace(row["diagnosis_id"].ToString())) + { + var fieldComparisonDiagnosisEnt = fieldComparisonList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault(); + if (fieldComparisonDiagnosisEnt != null) + { + DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue); + } + } + + Guid ItemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue); + + var data = new ItemResultTemplate + { + DisplayOrder = oldItemResultTemplateList.Rows.IndexOf(row) + 1, + DiagnosisId = DiagnosisId, + IsNameIntoSummary = Convert.ToChar(row["name_into_summary_flag"].ToString()), + IsResultIntoSummary = Convert.ToChar(row["result_into_summary_flag"].ToString()), + ItemId = ItemId, + Result = row["result"].ToString(), + SimpleCode = LanguageConverter.GetPYSimpleCode(row["result"].ToString()), + ResultStatusId = row["result_status_id"].ToString() + }; + + var ent = await _itemResultTemplateRepository.InsertAsync(data, true); + + + fieldComparisons.Add(new FieldComparison + { + TableName = "item_result_template", + FieldName = "id", + NewKeyValue = ent.Id.ToString(), + OldKeyValue = row["item_result_template_id"].ToString() + }); + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + + + } + } + } + + + /// + /// 迁移项目结果匹配数据 + /// + /// + public async Task TransferItemResultMatchData() + { + var count = await _ItemResultMatchRepository.GetCountAsync(); + if (count == 0) + { + List dataList = new List(); + var oldItemResultMatchList = await Db.Ado.GetDataTableAsync("select * from item_result_match "); + if (oldItemResultMatchList.Rows.Count > 0) + { + List fieldComparisons = new List(); + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldItemResultMatchList.Rows) + { + + var fieldComparisonDiagnosisEnt = fieldComparisonList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["diagnosis_id"].ToString()).FirstOrDefault(); + if (fieldComparisonDiagnosisEnt != null) + { + Guid DiagnosisId = Guid.Parse(fieldComparisonDiagnosisEnt.NewKeyValue); + Guid ItemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue); + + var data = new ItemResultMatch + { + DisplayOrder = oldItemResultMatchList.Rows.IndexOf(row) + 1, + DiagnosisId = DiagnosisId, + ItemId = ItemId, + Result = row["result"].ToString() + }; + + var ent = await _ItemResultMatchRepository.InsertAsync(data, true); + + + fieldComparisons.Add(new FieldComparison + { + TableName = "item_result_match", + FieldName = "id", + NewKeyValue = ent.Id.ToString(), + OldKeyValue = row["item_result_match_id"].ToString() + }); + } + + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + + + } + } + } + + + + /// + /// 迁移项目参考范围数据 + /// + /// + public async Task TransferReferenceRangeData() + { + var count = (await _referenceRangeRepository.GetQueryableAsync()).Where(m => m.ReferenceRangeTypeFlag != ItemReferenceRangeTypeFlag.Character).Count(); + if (count == 0) + { + List dataList = new List(); + var oldReferenceRangeList = await Db.Ado.GetDataTableAsync("select * from reference_range "); + if (oldReferenceRangeList.Rows.Count > 0) + { + + List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(); + + foreach (DataRow row in oldReferenceRangeList.Rows) + { + Guid? LowerDiagnosisId = null; + Guid? UpperDiagnosisId = null; + + var fieldComparisonLowerDiagnosisEnt = fieldComparisonList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["lower_diagnosis_id"].ToString()).FirstOrDefault(); + var fieldComparisonUpperDiagnosisEnt = fieldComparisonList.Where(m => m.TableName == "diagnosis" && m.OldKeyValue == row["upper_diagnosis_id"].ToString()).FirstOrDefault(); + if (fieldComparisonLowerDiagnosisEnt != null) + { + LowerDiagnosisId = Guid.Parse(fieldComparisonLowerDiagnosisEnt.NewKeyValue); + } + if (fieldComparisonUpperDiagnosisEnt != null) + { + UpperDiagnosisId = Guid.Parse(fieldComparisonUpperDiagnosisEnt.NewKeyValue); + } + + Guid ItemId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "item" && m.OldKeyValue == row["item_id"].ToString()).FirstOrDefault().NewKeyValue); + + var data = new ReferenceRange + { + + ItemId = ItemId, + AgeLowerLimit = (short)Convert.ToInt32(row["age_lower_limit"].ToString()), + AgeUpperLimit = (short)Convert.ToInt32(row["age_upper_limit"].ToString()), + CriticalRangeValue = string.Empty, + ForSexId = ConvertForSex(row["for_sex_id"].ToString()), + LowerDiagnosisId = LowerDiagnosisId, + ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Number, + ReferenceRangeValue = Convert.ToDecimal(row["lower_limit"].ToString()).ToString("#0.####") + "-" + Convert.ToDecimal(row["upper_limit"].ToString()).ToString("#0.####"), + UpperDiagnosisId = UpperDiagnosisId + }; + + dataList.Add(data); + + + + } + + await _referenceRangeRepository.InsertManyAsync(dataList); + } + } + } + + + /// + /// 迁移后台用户数据 + /// + /// + public async Task TransferUserData() + { + + var oldUserList = await Db.Ado.GetDataTableAsync("select * from users"); + if (oldUserList.Rows.Count > 0) + { + + foreach (DataRow row in oldUserList.Rows) + { + var userEnt = new IdentityUserCreateNoEmailDto + { + Email = "", + IsActive = row["valid_flag"].ToString() == "Y" ? true : false, + LockoutEnabled = false, + Name = row["user_name"].ToString(), + Password = row["password"].ToString(), + PhoneNumber = "", + RoleNames = new string[] { "admin" }, + Surname = "", + UserName = row["user_id"].ToString() + }; + + await _myUserAppService.CreateAsync(userEnt); + } + + + } + + } + + private void LoadDLL() + { + // 定义dll文件夹路径 + string dllFolderPath = Path.Combine(AppContext.BaseDirectory, "MyPlugs"); + + DirectoryInfo directoryInfo = new DirectoryInfo(dllFolderPath); + FileInfo[] files = directoryInfo.GetFiles("*.dll", SearchOption.AllDirectories); + + foreach (FileInfo file in files) + { + Assembly assembly = AssemblyLoadContext.Default.LoadFromAssemblyPath(file.FullName); + + Type interfaceType = assembly.GetTypes().Where(m => m.IsInterface == true && m.Name == "ITestHello").FirstOrDefault(); + Type classType = assembly.GetTypes().Where(m => m.IsInterface == false && m.Name == "TestHello").FirstOrDefault(); + + if (interfaceType != null && classType != null) + { + object instance = Activator.CreateInstance(classType); + // 获取方法信息 + MethodInfo method = classType.GetMethod("PrintMsg"); + + // 执行方法 + var ss = method.Invoke(instance, null); + } + + + } + } + + /// + /// 转换老系统适用性别 + /// + /// + /// + private char ConvertForSex(string forSexId) + { + if (forSexId == "0") + { + return 'M'; + } + else if (forSexId == "1") + { + return 'F'; + } + else + { + return 'A'; + } + } } + + }