DESKTOP-G961P6V\Zhh 2 years ago
parent
commit
42763a8451
  1. 789
      src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
  2. 13494
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240419103409_init20240419001.Designer.cs
  3. 62
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240419103409_init20240419001.cs
  4. 14
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

789
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.Enums;
using Shentun.Peis.ItemTypes; using Shentun.Peis.ItemTypes;
using Shentun.Peis.Models; using Shentun.Peis.Models;
using Shentun.Peis.MyUser;
using Shentun.Peis.Sexs;
using Shentun.Utilities; using Shentun.Utilities;
using SqlSugar; using SqlSugar;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Data; using System.Data;
using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Runtime.Loader;
using System.Threading.Tasks; using System.Threading.Tasks;
using TencentCloud.Sqlserver.V20180328.Models;
using Volo.Abp; using Volo.Abp;
using Volo.Abp.Application.Services; using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Repositories;
using Volo.Abp.Identity;
using Volo.Abp.Users;
using Xceed.Document.NET; using Xceed.Document.NET;
namespace Shentun.Peis.DataMigrations namespace Shentun.Peis.DataMigrations
@ -48,6 +61,16 @@ namespace Shentun.Peis.DataMigrations
private readonly IRepository<SampleType, Guid> _sampleTypeRepository; private readonly IRepository<SampleType, Guid> _sampleTypeRepository;
private readonly IRepository<Item, Guid> _itemRepository; private readonly IRepository<Item, Guid> _itemRepository;
private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository; private readonly IRepository<ReferenceRange, Guid> _referenceRangeRepository;
private readonly IRepository<Asbitem, Guid> _asbitemRepository;
private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
private readonly IRepository<MedicalPackage, Guid> _medicalPackageRepository;
private readonly IRepository<MedicalPackageDetail> _medicalPackageDetailRepository;
private readonly IRepository<Diagnosis, Guid> _diagnosisRepository;
private readonly IRepository<Suggestion, Guid> _suggestionRepository;
private readonly IRepository<ItemResultTemplate, Guid> _itemResultTemplateRepository;
private readonly IRepository<ItemResultMatch, Guid> _ItemResultMatchRepository;
private readonly MyUserAppService _myUserAppService;
public BaseDataHandleAppService( public BaseDataHandleAppService(
IRepository<DeviceType, Guid> deviceTypeRepository, IRepository<DeviceType, Guid> deviceTypeRepository,
IRepository<ItemType, Guid> itemTypeRepository, IRepository<ItemType, Guid> itemTypeRepository,
@ -58,7 +81,17 @@ namespace Shentun.Peis.DataMigrations
IRepository<InvoiceItemType, Guid> invoiceItemTypeRepository, IRepository<InvoiceItemType, Guid> invoiceItemTypeRepository,
IRepository<FieldComparison, Guid> fieldComparisonRepository, IRepository<FieldComparison, Guid> fieldComparisonRepository,
IRepository<SampleType, Guid> sampleTypeRepository, IRepository<SampleType, Guid> sampleTypeRepository,
IRepository<Item, Guid> itemRepository)
IRepository<Item, Guid> itemRepository,
IRepository<ReferenceRange, Guid> referenceRangeRepository,
IRepository<Asbitem, Guid> asbitemRepository,
IRepository<AsbitemDetail> asbitemDetailRepository,
IRepository<MedicalPackage, Guid> medicalPackageRepository,
IRepository<MedicalPackageDetail> medicalPackageDetailRepository,
IRepository<ItemResultTemplate, Guid> itemResultTemplateRepository,
IRepository<ItemResultMatch, Guid> itemResultMatchRepository,
IRepository<Diagnosis, Guid> diagnosisRepository,
IRepository<Suggestion, Guid> suggestionRepository,
MyUserAppService myUserAppService)
{ {
_deviceTypeRepository = deviceTypeRepository; _deviceTypeRepository = deviceTypeRepository;
_itemTypeRepository = itemTypeRepository; _itemTypeRepository = itemTypeRepository;
@ -70,6 +103,16 @@ namespace Shentun.Peis.DataMigrations
_fieldComparisonRepository = fieldComparisonRepository; _fieldComparisonRepository = fieldComparisonRepository;
_sampleTypeRepository = sampleTypeRepository; _sampleTypeRepository = sampleTypeRepository;
_itemRepository = itemRepository; _itemRepository = itemRepository;
_referenceRangeRepository = referenceRangeRepository;
_asbitemRepository = asbitemRepository;
_asbitemDetailRepository = asbitemDetailRepository;
_medicalPackageRepository = medicalPackageRepository;
_medicalPackageDetailRepository = medicalPackageDetailRepository;
_itemResultTemplateRepository = itemResultTemplateRepository;
_ItemResultMatchRepository = itemResultMatchRepository;
_diagnosisRepository = diagnosisRepository;
_suggestionRepository = suggestionRepository;
_myUserAppService = myUserAppService;
} }
/// <summary> /// <summary>
@ -327,6 +370,7 @@ namespace Shentun.Peis.DataMigrations
} }
/// <summary> /// <summary>
/// 迁移标本类型数据 /// 迁移标本类型数据
/// </summary> /// </summary>
@ -387,7 +431,51 @@ namespace Shentun.Peis.DataMigrations
foreach (DataRow row in oldItemList.Rows) 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); 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; Guid? unitId = null;
if (!string.IsNullOrWhiteSpace(row["unit_id"].ToString())) if (!string.IsNullOrWhiteSpace(row["unit_id"].ToString()))
unitId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "unit" && m.OldKeyValue == row["unit_id"].ToString()).FirstOrDefault().NewKeyValue); 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 = "", DiagnosisFunction = "",
EnglishShortName = row["english_abbreviation"].ToString(), EnglishShortName = row["english_abbreviation"].ToString(),
InputCheck = row["input_check"].ToString(), InputCheck = row["input_check"].ToString(),
IsActive = 'Y',
IsActive = Convert.ToChar(row["valid_flag"].ToString()),
IsCalculationItem = 'N', IsCalculationItem = 'N',
IsContinueProcess = 'N', IsContinueProcess = 'N',
IsDiagnosisFunction = 'N', IsDiagnosisFunction = 'N',
@ -413,7 +501,8 @@ namespace Shentun.Peis.DataMigrations
PriceItemId = null, PriceItemId = null,
ReferenceRangeTypeFlag = Convert.ToChar(row["reference_range_type"]), ReferenceRangeTypeFlag = Convert.ToChar(row["reference_range_type"]),
ResultTemplateTypeFlag = '0', ResultTemplateTypeFlag = '0',
UnitId = unitId
UnitId = unitId,
DeviceTypeId = deviceTypeId
}; };
var ent = await _itemRepository.InsertAsync(data, true); var ent = await _itemRepository.InsertAsync(data, true);
@ -457,5 +546,697 @@ namespace Shentun.Peis.DataMigrations
} }
} }
} }
/// <summary>
/// 迁移组合项目数据
/// </summary>
/// <returns></returns>
public async Task TransferAsbitemData()
{
var count = await _asbitemRepository.GetCountAsync();
if (count == 0)
{
List<Asbitem> dataList = new List<Asbitem>();
var oldAsbitemList = await Db.Ado.GetDataTableAsync("select * from asbitem ");
if (oldAsbitemList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移组合项目明细数据
/// </summary>
/// <returns></returns>
public async Task TransferAsbitemDetailData()
{
var count = await _asbitemDetailRepository.GetCountAsync();
if (count == 0)
{
List<AsbitemDetail> dataList = new List<AsbitemDetail>();
var oldAsbitemDetailList = await Db.Ado.GetDataTableAsync("select * from asbitem_detail ");
if (oldAsbitemDetailList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> 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);
}
}
}
///// <summary>
///// 处理组合项目未启用的数据
///// </summary>
///// <returns></returns>
//public async Task HanldAsbitem()
//{
// List<Asbitem> dataList = new List<Asbitem>();
// var oldAsbitemList = await Db.Ado.GetDataTableAsync("select * from asbitem where valid_flag='N' ");
// if (oldAsbitemList.Rows.Count > 0)
// {
// List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync();
// List<Guid> asbitemIds = new List<Guid>();
// 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);
// }
//}
/// <summary>
/// 迁移体检套餐数据
/// </summary>
/// <returns></returns>
public async Task TransferMedicalPackageData()
{
var count = await _medicalPackageRepository.GetCountAsync();
if (count == 0)
{
List<MedicalPackage> dataList = new List<MedicalPackage>();
var oldMedicalPackageList = await Db.Ado.GetDataTableAsync("select * from medical_package ");
if (oldMedicalPackageList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
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);
}
}
}
/// <summary>
/// 迁移体检套餐明细数据
/// </summary>
/// <returns></returns>
public async Task TransferMedicalPackageDetailData()
{
var count = await _medicalPackageDetailRepository.GetCountAsync();
if (count == 0)
{
List<MedicalPackageDetail> dataList = new List<MedicalPackageDetail>();
var oldMedicalPackageDetailList = await Db.Ado.GetDataTableAsync("select * from medical_package_detail ");
if (oldMedicalPackageDetailList.Rows.Count > 0)
{
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移诊断设置数据
/// </summary>
/// <returns></returns>
public async Task TransferDiagnosisData()
{
var count = await _diagnosisRepository.GetCountAsync();
if (count == 0)
{
List<Diagnosis> dataList = new List<Diagnosis>();
var oldDiagnosisList = await Db.Ado.GetDataTableAsync("select * from diagnosis ");
if (oldDiagnosisList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移诊断建议数据
/// </summary>
/// <returns></returns>
public async Task TransferSuggestionData()
{
var count = await _suggestionRepository.GetCountAsync();
if (count == 0)
{
List<Suggestion> dataList = new List<Suggestion>();
var oldSuggestionList = await Db.Ado.GetDataTableAsync("select * from suggestion ");
if (oldSuggestionList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移项目结果模板数据
/// </summary>
/// <returns></returns>
public async Task TransferItemResultTemplateData()
{
var count = await _itemResultTemplateRepository.GetCountAsync();
if (count == 0)
{
List<ItemResultTemplate> dataList = new List<ItemResultTemplate>();
var oldItemResultTemplateList = await Db.Ado.GetDataTableAsync("select * from item_result_template ");
if (oldItemResultTemplateList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移项目结果匹配数据
/// </summary>
/// <returns></returns>
public async Task TransferItemResultMatchData()
{
var count = await _ItemResultMatchRepository.GetCountAsync();
if (count == 0)
{
List<ItemResultMatch> dataList = new List<ItemResultMatch>();
var oldItemResultMatchList = await Db.Ado.GetDataTableAsync("select * from item_result_match ");
if (oldItemResultMatchList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移项目参考范围数据
/// </summary>
/// <returns></returns>
public async Task TransferReferenceRangeData()
{
var count = (await _referenceRangeRepository.GetQueryableAsync()).Where(m => m.ReferenceRangeTypeFlag != ItemReferenceRangeTypeFlag.Character).Count();
if (count == 0)
{
List<ReferenceRange> dataList = new List<ReferenceRange>();
var oldReferenceRangeList = await Db.Ado.GetDataTableAsync("select * from reference_range ");
if (oldReferenceRangeList.Rows.Count > 0)
{
List<FieldComparison> 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);
}
}
}
/// <summary>
/// 迁移后台用户数据
/// </summary>
/// <returns></returns>
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);
}
}
}
/// <summary>
/// 转换老系统适用性别
/// </summary>
/// <param name="forSexId"></param>
/// <returns></returns>
private char ConvertForSex(string forSexId)
{
if (forSexId == "0")
{
return 'M';
}
else if (forSexId == "1")
{
return 'F';
}
else
{
return 'A';
}
}
} }
} }

13494
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240419103409_init20240419001.Designer.cs
File diff suppressed because it is too large
View File

62
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240419103409_init20240419001.cs

@ -0,0 +1,62 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Shentun.Peis.Migrations
{
public partial class init20240419001 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "audit_doctor",
table: "patient_register");
migrationBuilder.DropColumn(
name: "summary_doctor",
table: "patient_register");
migrationBuilder.AddColumn<Guid>(
name: "audit_doctor_id",
table: "patient_register",
type: "uuid",
nullable: true,
comment: "审核医生");
migrationBuilder.AddColumn<Guid>(
name: "summary_doctor_id",
table: "patient_register",
type: "uuid",
nullable: true,
comment: "总检医生");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "audit_doctor_id",
table: "patient_register");
migrationBuilder.DropColumn(
name: "summary_doctor_id",
table: "patient_register");
migrationBuilder.AddColumn<string>(
name: "audit_doctor",
table: "patient_register",
type: "character varying(50)",
maxLength: 50,
nullable: true,
comment: "审核医生");
migrationBuilder.AddColumn<string>(
name: "summary_doctor",
table: "patient_register",
type: "character varying(50)",
maxLength: 50,
nullable: true,
comment: "总检医生");
}
}
}

14
src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

@ -6118,10 +6118,9 @@ namespace Shentun.Peis.Migrations
.HasColumnName("audit_date") .HasColumnName("audit_date")
.HasComment("审核日期"); .HasComment("审核日期");
b.Property<string>("AuditDoctor")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("audit_doctor")
b.Property<Guid?>("AuditDoctorId")
.HasColumnType("uuid")
.HasColumnName("audit_doctor_id")
.HasComment("审核医生"); .HasComment("审核医生");
b.Property<DateTime?>("BirthDate") b.Property<DateTime?>("BirthDate")
@ -6394,10 +6393,9 @@ namespace Shentun.Peis.Migrations
.HasColumnName("summary_date") .HasColumnName("summary_date")
.HasComment("总检日期"); .HasComment("总检日期");
b.Property<string>("SummaryDoctor")
.HasMaxLength(50)
.HasColumnType("character varying(50)")
.HasColumnName("summary_doctor")
b.Property<Guid?>("SummaryDoctorId")
.HasColumnType("uuid")
.HasColumnName("summary_doctor_id")
.HasComment("总检医生"); .HasComment("总检医生");
b.Property<string>("ThirdInfo") b.Property<string>("ThirdInfo")

Loading…
Cancel
Save