Browse Source

数据导入

bjmzak
wxd 2 years ago
parent
commit
2f38a09bec
  1. 527
      src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
  2. 102
      test/Shentun.Peis.Application.Tests/BaseDataHandleTest.cs

527
src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs

@ -63,10 +63,10 @@ namespace Shentun.Peis.DataMigrations
IsAutoCloseConnection = true IsAutoCloseConnection = true
}); });
//修改时间用
private readonly SqlSugarClient PgNWDb = new SqlSugarClient(new ConnectionConfig() private readonly SqlSugarClient PgNWDb = new SqlSugarClient(new ConnectionConfig()
{ {
ConnectionString = "Host=10.1.12.140;Port=5432;Database=ShentunPeis;User ID=postgres;Password=st123;",
ConnectionString = "Host=10.1.12.140;Port=5432;Database=ShentunPeis0503;User ID=postgres;Password=st123;",
DbType = SqlSugar.DbType.PostgreSQL, DbType = SqlSugar.DbType.PostgreSQL,
IsAutoCloseConnection = true IsAutoCloseConnection = true
}); });
@ -2086,6 +2086,7 @@ namespace Shentun.Peis.DataMigrations
/// 迁移单位体检次数数据 无字典 /// 迁移单位体检次数数据 无字典
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[RemoteService(false)]
public async Task TransferCustomerOrgRegisterData() public async Task TransferCustomerOrgRegisterData()
{ {
var count = await _customerOrgRegisterRepository.GetCountAsync(); var count = await _customerOrgRegisterRepository.GetCountAsync();
@ -2134,6 +2135,7 @@ namespace Shentun.Peis.DataMigrations
/// 迁移单位分组 /// 迁移单位分组
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
[RemoteService(false)]
public async Task TransferCustomerOrgGroupData() public async Task TransferCustomerOrgGroupData()
{ {
var count = await _customerOrgGroupRepository.GetCountAsync(); var count = await _customerOrgGroupRepository.GetCountAsync();
@ -2208,45 +2210,49 @@ namespace Shentun.Peis.DataMigrations
#region 人员登记 #region 人员登记
/// <summary> /// <summary>
/// 迁移档案数据
/// 迁移人员登记数据
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task<bool> TransferPatientData()
public async Task TransferPatientRegisterData()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register' ");
List<Patient> dataList = new List<Patient>();
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync($"select top 1000 * from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc");
var oldPatientList = await Db.Ado.GetDataTableAsync("select top 500 patient_id,nation_id,address," +
"birth_date,name,email,id_card_no,marital_status_id,mobile_telephone,patient_password,postalcode,telephone,sex_id " +
"from patient_register where is_hand is null order by patient_register_id asc");
if (oldPatientRegisterList.Rows.Count > 0)
{
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set starttime=getdate() where tablename='patient_register' ");
List<string> tempPatientNos = new List<string>();
List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync();
var userList = await _identityUserRepository.GetListAsync();
List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
if (oldPatientList.Rows.Count > 0)
foreach (DataRow row in oldPatientRegisterList.Rows)
{ {
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "nation");
foreach (DataRow row in oldPatientList.Rows)
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{ {
if (!tempPatientNos.Contains(row["patient_id"].ToString()))
//档案ID
Guid patientId = Guid.Empty;
#region 处理档案,未找到档案就生成
var patientEnt = await _patientRepository.FirstOrDefaultAsync(m => m.PatientNo == row["patient_id"].ToString());
if (patientEnt == null)
{ {
string nationId = null; string nationId = null;
if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString())) if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
{ {
nationId = fieldComparisonList.Where(m => m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
nationId = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "nation" && m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
} }
Guid PatientId = GuidGenerator.Create(); //档案ID
Guid autoPatientId = GuidGenerator.Create(); //档案ID
var data = new Patient(PatientId)
var dataPatient = new Patient(autoPatientId)
{ {
Address = row["address"].ToString(), Address = row["address"].ToString(),
BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()), BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
@ -2266,69 +2272,19 @@ namespace Shentun.Peis.DataMigrations
Telephone = row["telephone"].ToString() Telephone = row["telephone"].ToString()
}; };
dataList.Add(data);
fieldComparisons.Add(new FieldComparison
{
FieldName = "id",
NewKeyValue = PatientId.ToString(),
OldKeyValue = row["patient_id"].ToString(),
TableName = "patient"
});
#region 增加标识
veryPatientNo.Add(row["patient_id"].ToString(), row["patient_id"].ToString());
#endregion
}
tempPatientNos.Add(row["patient_id"].ToString());
}
if (dataList.Any())
await _patientRepository.InsertManyAsync(dataList);
if (fieldComparisons.Any())
await _fieldComparisonRepository.InsertManyAsync(fieldComparisons);
#region 修改状态
Thread.Sleep(100);
await Db.Ado.ExecuteCommandAsync("update patient_register set is_hand='Y' where patient_id in (@ids) ", new { ids = tempPatientNos });
#endregion
_logger.LogInformation($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},迁移数据{dataList.Count}");
return true;
await _patientRepository.InsertAsync(dataPatient, true);
patientId = autoPatientId;
} }
else else
{ {
return false;
patientId = patientEnt.Id;
} }
}
/// <summary>
/// 迁移人员登记数据
/// </summary>
/// <returns></returns>
public async Task<bool> TransferPatientRegisterData()
{
List<PatientRegister> dataList = new List<PatientRegister>();
#endregion
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync("select top 1000 * from patient_register where is_dj is null order by patient_register_id asc");
List<string> tempPatientRegisterIds = new List<string>();
if (oldPatientRegisterList.Rows.Count > 0)
{
List<FieldComparison> fieldComparisons = new List<FieldComparison>();
List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync();
var userList = await _identityUserRepository.GetListAsync();
List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
foreach (DataRow row in oldPatientRegisterList.Rows)
{
Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID Guid patientRegisterId = GuidGenerator.Create(); //生成登记ID
#region 转换审核医生ID #region 转换审核医生ID
@ -2371,6 +2327,7 @@ namespace Shentun.Peis.DataMigrations
customerOrgRegisterId = customerOrgRegisterEnt.Id; customerOrgRegisterId = customerOrgRegisterEnt.Id;
} }
} }
#endregion #endregion
#region 转换体检结论ID #region 转换体检结论ID
@ -2410,9 +2367,7 @@ namespace Shentun.Peis.DataMigrations
} }
#endregion #endregion
#region 获取档案ID
Guid patientId = Guid.Parse(fieldComparisonList.Where(m => m.TableName == "patient" && m.OldKeyValue == row["patient_id"].ToString()).FirstOrDefault().NewKeyValue);
#endregion
#region 转换人员类别ID #region 转换人员类别ID
Guid? personnelTypeId = null; Guid? personnelTypeId = null;
@ -2495,143 +2450,54 @@ namespace Shentun.Peis.DataMigrations
ThirdInfo = row["third_info"].ToString(), ThirdInfo = row["third_info"].ToString(),
}; };
//图片、
dataList.Add(data);
await _patientRegisterRepository.InsertAsync(data);
fieldComparisons.Add(new FieldComparison
var fieldComparison = new FieldComparison
{ {
FieldName = "id", FieldName = "id",
NewKeyValue = patientRegisterId.ToString(), NewKeyValue = patientRegisterId.ToString(),
OldKeyValue = row["patient_register_id"].ToString(), OldKeyValue = row["patient_register_id"].ToString(),
TableName = "patient_register" TableName = "patient_register"
});
tempPatientRegisterIds.Add(row["patient_register_id"].ToString());
}
if (dataList.Any())
await _patientRegisterRepository.InsertManyAsync(dataList);
if (fieldComparisons.Any())
await _fieldComparisonRepository.InsertManyAsync(fieldComparisons);
#region 修改状态
Thread.Sleep(100);
await Db.Ado.ExecuteCommandAsync("update patient_register set is_dj='Y' where patient_register_id in (@ids) ", new { ids = tempPatientRegisterIds });
#endregion
_logger.LogInformation($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},迁移数据{dataList.Count}");
return true;
}
else
{
return false;
}
}
/// <summary>
/// 处理人员登记 登记医生跟登记时间
/// </summary>
/// <returns></returns>
public async Task<bool> HandPatientRegisterDoctor()
{
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync("select patient_register_id,register_doctor,register_date,audit_doctor,summary_doctor from patient_register where is_doctor is null ");
if (oldPatientRegisterList.Rows.Count > 0)
{
var userList = await _identityUserRepository.GetListAsync();
List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "patient_register");
StringBuilder sb = new StringBuilder();
foreach (DataRow row in oldPatientRegisterList.Rows)
{
Guid patientRegisterId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["patient_register_id"].ToString()).FirstOrDefault().NewKeyValue);
// Guid registerDoctorId = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault().Id;
Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
if (registerDoctorEnt != null)
{
registerDoctorId = registerDoctorEnt.Id;
}
};
#region 转换审核医生ID
Guid? auditDoctorId = null;
if (!string.IsNullOrWhiteSpace(row["audit_doctor"].ToString()))
{
var userEnt = userList.Where(m => m.UserName == row["audit_doctor"].ToString().Trim()).FirstOrDefault();
if (userEnt != null)
{
auditDoctorId = userEnt.Id;
}
}
#endregion
await _fieldComparisonRepository.InsertAsync(fieldComparison);
#region 转换总检医生ID
Guid? summaryDoctorId = null;
if (!string.IsNullOrWhiteSpace(row["summary_doctor"].ToString()))
{
var userEnt = userList.Where(m => m.UserName == row["summary_doctor"].ToString().Trim()).FirstOrDefault();
if (userEnt != null)
{
summaryDoctorId = userEnt.Id;
}
}
#endregion
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
if (auditDoctorId != null)
{
sql_update += $",audit_doctor_id='{auditDoctorId}'";
await uow.CompleteAsync();
} }
if (summaryDoctorId != null)
{
sql_update += $",summary_doctor_id='{summaryDoctorId}'";
} }
sql_update += $" where id='{patientRegisterId}' ";
_logger.LogInformation($"人员数据处理{oldPatientRegisterList.Rows.Count}条");
await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
string sql_update_status = $"update patient_register set is_doctor='Y' where patient_register_id='{row["patient_register_id"].ToString()}' ";
await Db.Ado.ExecuteCommandAsync(sql_update_status);
}
return true;
await TransferPatientRegisterData();
} }
else else
{ {
return false;
}
_logger.LogInformation("人员数据已处理完");
} }
}
/// <summary> /// <summary>
/// 迁移检查单 组合项目 查询register_asbitem /// 迁移检查单 组合项目 查询register_asbitem
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task TransferRegisterCheckData(int handcount)
public async Task TransferRegisterCheckData()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register'");
//记录patient_register Id
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id) var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any()) if (patientRegisterList.Any())
{ {
var userList = await _identityUserRepository.GetListAsync(); var userList = await _identityUserRepository.GetListAsync();
foreach (var item in patientRegisterList) foreach (var item in patientRegisterList)
{ {
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
@ -2649,7 +2515,6 @@ namespace Shentun.Peis.DataMigrations
if (oldRegisterAsbitemList.Rows.Count > 0) if (oldRegisterAsbitemList.Rows.Count > 0)
{ {
foreach (DataRow row in oldRegisterAsbitemList.Rows) foreach (DataRow row in oldRegisterAsbitemList.Rows)
{ {
#region 转换审核医生ID #region 转换审核医生ID
@ -2728,7 +2593,6 @@ namespace Shentun.Peis.DataMigrations
registerCheckAsbitemInsert.Add(dataRegisterAsbitem); registerCheckAsbitemInsert.Add(dataRegisterAsbitem);
} }
} }
@ -2740,13 +2604,17 @@ namespace Shentun.Peis.DataMigrations
await uow.CompleteAsync(); await uow.CompleteAsync();
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register' ");
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check' ");
} }
} }
await TransferRegisterCheckData();
}
else
{
_logger.LogInformation("检查单、登记组合项目已处理完");
} }
} }
@ -2757,11 +2625,11 @@ namespace Shentun.Peis.DataMigrations
/// <returns></returns> /// <returns></returns>
public async Task TransferRegisterCheckItemData() public async Task TransferRegisterCheckItemData()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_asbitem'");
//记录register_check_asbitem Id
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_item'");
var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id) var registerCheckAsbitemList = (await _registerCheckAsbitemRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).ToList();
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (registerCheckAsbitemList.Any()) if (registerCheckAsbitemList.Any())
@ -2770,7 +2638,6 @@ namespace Shentun.Peis.DataMigrations
foreach (var item in registerCheckAsbitemList) foreach (var item in registerCheckAsbitemList)
{ {
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{ {
List<RegisterCheckItem> registerCheckItemInsert = new List<RegisterCheckItem>(); List<RegisterCheckItem> registerCheckItemInsert = new List<RegisterCheckItem>();
@ -2826,12 +2693,15 @@ namespace Shentun.Peis.DataMigrations
await uow.CompleteAsync(); await uow.CompleteAsync();
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_asbitem' ");
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='register_check_item' ");
} }
} }
await TransferRegisterCheckItemData();
}
else
{
_logger.LogInformation("明细项目已处理完");
} }
} }
@ -2843,7 +2713,7 @@ namespace Shentun.Peis.DataMigrations
/// <returns></returns> /// <returns></returns>
public async Task TransferRegisterCheckSummaryData() public async Task TransferRegisterCheckSummaryData()
{ {
//记录register_check id
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary'"); string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='register_check_summary'");
var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync() var registerCheckAsbitemList = (from registerCheckQuery in await _registerCheckRepository.GetQueryableAsync()
@ -2894,8 +2764,11 @@ namespace Shentun.Peis.DataMigrations
} }
} }
await TransferRegisterCheckSummaryData();
}
else
{
_logger.LogInformation("医生小结已处理完");
} }
} }
@ -2904,19 +2777,17 @@ namespace Shentun.Peis.DataMigrations
/// 迁移总检综述 查询patient_register /// 迁移总检综述 查询patient_register
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task TransferSumSummaryData(int handcount)
public async Task TransferSumSummaryData()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'"); string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_summary'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id) var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any()) if (patientRegisterList.Any())
{ {
foreach (var item in patientRegisterList) foreach (var item in patientRegisterList)
{ {
@ -2962,8 +2833,11 @@ namespace Shentun.Peis.DataMigrations
} }
} }
await TransferSumSummaryData();
}
else
{
_logger.LogInformation("总检综述已处理完");
} }
} }
@ -2972,20 +2846,17 @@ namespace Shentun.Peis.DataMigrations
/// 迁移总检建议 查询patient_register /// 迁移总检建议 查询patient_register
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task TransferSumSuggestionData(int handcount)
public async Task TransferSumSuggestionData()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_suggestion'"); string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_suggestion'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id) var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any()) if (patientRegisterList.Any())
{ {
foreach (var item in patientRegisterList) foreach (var item in patientRegisterList)
{ {
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{ {
#region 转换成老系统PatientRegisterId #region 转换成老系统PatientRegisterId
@ -3029,8 +2900,11 @@ namespace Shentun.Peis.DataMigrations
} }
} }
await TransferSumSuggestionData();
}
else
{
_logger.LogInformation("总检建议已处理完");
} }
} }
@ -3040,21 +2914,19 @@ namespace Shentun.Peis.DataMigrations
/// 迁移总症诊断 查询summary_diagnosis /// 迁移总症诊断 查询summary_diagnosis
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task TransferSumDiagnosisData(int handcount)
public async Task TransferSumDiagnosisData()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis'"); string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='sum_diagnosis'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id) var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
.Where(m => string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(1000).ToList();
if (patientRegisterList.Any()) if (patientRegisterList.Any())
{ {
foreach (var item in patientRegisterList) foreach (var item in patientRegisterList)
{ {
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{ {
#region 转换成老系统PatientRegisterId #region 转换成老系统PatientRegisterId
@ -3106,69 +2978,62 @@ namespace Shentun.Peis.DataMigrations
} }
} }
await TransferSumDiagnosisData();
} }
else
{
_logger.LogInformation("总症诊断已处理完");
} }
}
/// <summary> /// <summary>
/// 处理人员体检次数
/// 爆改人员登记创建日期跟创建者
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public async Task TransferPersonPhohoData(int handcount)
public async Task HandPatientRegisterDoctor()
{ {
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_customer_org_register'");
var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
.Where(m => m.CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId && m.CustomerOrgId != GuidFlag.PersonCustomerOrgId
&& string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
if (patientRegisterList.Any())
{
List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='hand_patient_register'");
foreach (var item in patientRegisterList)
var oldPatientRegisterList = await Db.Ado.GetDataTableAsync("select top 1000 patient_register_id,register_doctor,register_date from patient_register where patient_register_id>'{nextKeyValue}' order by patient_register_id asc ");
if (oldPatientRegisterList.Rows.Count > 0)
{ {
var userList = await _identityUserRepository.GetListAsync();
List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "patient_register");
using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
{
#region 转换成老系统PatientRegisterId
string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
#endregion
//老系统数据
var oldPatientRegisterEnt = Db.Ado.GetDataTable($"select org_medical_times,org_id from patient_register where patient_register_id='{oldPatientRegisterId}'");
StringBuilder sb = new StringBuilder();
string oldTopCustomerOrgId = oldPatientRegisterEnt.Rows[0][1].ToString().Substring(0, 5);
foreach (DataRow row in oldPatientRegisterList.Rows)
{
Guid patientRegisterId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["patient_register_id"].ToString()).FirstOrDefault().NewKeyValue);
//一级单位ID
Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
.Where(m => m.TableName == "customer_org" && m.OldKeyValue == oldTopCustomerOrgId).FirstOrDefault().NewKeyValue);
short orgMedicalTimes = Convert.ToInt16(oldPatientRegisterEnt.Rows[0][0].ToString());
Guid registerDoctorId = Guid.Parse("3a11fe49-5719-0e9e-dd44-0c4aff0900b0");
var registerDoctorEnt = userList.Where(m => m.UserName == row["register_doctor"].ToString().Trim()).FirstOrDefault();
if (registerDoctorEnt != null)
{
registerDoctorId = registerDoctorEnt.Id;
}
#region 转换单位体检次数ID 没有增加默认值
Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
&& m.MedicalTimes == orgMedicalTimes).FirstOrDefault();
if (customerOrgRegisterEnt != null)
{
customerOrgRegisterId = customerOrgRegisterEnt.Id;
item.CustomerOrgRegisterId = customerOrgRegisterId;
await _patientRegisterRepository.UpdateAsync(item);
}
string sql_update = $"update patient_register set creator_id='{registerDoctorId}',creation_time='{Convert.ToDateTime(row["register_date"]).ToString("yyyy-MM-dd HH:mm:ss")}'";
#endregion
sql_update += $" where id='{patientRegisterId}' ";
await PgNWDb.Ado.ExecuteCommandAsync(sql_update);
await uow.CompleteAsync();
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{row["patient_register_id"].ToString()}',addtime=getdate(),handlecount+=1 where tablename='hand_patient_register' ");
await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_customer_org_register' ");
} }
await HandPatientRegisterDoctor();
} }
else
{
_logger.LogInformation("爆改人员登记创建日期跟创建者已处理完");
} }
} }
@ -3176,6 +3041,164 @@ namespace Shentun.Peis.DataMigrations
#endregion #endregion
#region 暂时不用 #region 暂时不用
///// <summary>
///// 处理人员体检次数
///// </summary>
///// <returns></returns>
//public async Task TransferPersonPhohoData(int handcount)
//{
// string nextKeyValue = Db.Ado.GetString("select keyvalue from tb_export_key where tablename='patient_register_customer_org_register'");
// var patientRegisterList = (await _patientRegisterRepository.GetQueryableAsync()).OrderBy(o => o.Id)
// .Where(m => m.CustomerOrgRegisterId == GuidFlag.PersonCustomerOrgRegisterId && m.CustomerOrgId != GuidFlag.PersonCustomerOrgId
// && string.Compare(m.Id.ToString(), nextKeyValue) > 0).Take(handcount).ToList();
// if (patientRegisterList.Any())
// {
// List<CustomerOrgRegister> customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync();
// foreach (var item in patientRegisterList)
// {
// using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
// {
// #region 转换成老系统PatientRegisterId
// string oldPatientRegisterId = (await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "patient_register" && m.NewKeyValue == item.Id.ToString()).FirstOrDefault().OldKeyValue;
// #endregion
// //老系统数据
// var oldPatientRegisterEnt = Db.Ado.GetDataTable($"select org_medical_times,org_id from patient_register where patient_register_id='{oldPatientRegisterId}'");
// string oldTopCustomerOrgId = oldPatientRegisterEnt.Rows[0][1].ToString().Substring(0, 5);
// //一级单位ID
// Guid customerOrgId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync())
// .Where(m => m.TableName == "customer_org" && m.OldKeyValue == oldTopCustomerOrgId).FirstOrDefault().NewKeyValue);
// short orgMedicalTimes = Convert.ToInt16(oldPatientRegisterEnt.Rows[0][0].ToString());
// #region 转换单位体检次数ID 没有增加默认值
// Guid customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId;
// var customerOrgRegisterEnt = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId
// && m.MedicalTimes == orgMedicalTimes).FirstOrDefault();
// if (customerOrgRegisterEnt != null)
// {
// customerOrgRegisterId = customerOrgRegisterEnt.Id;
// item.CustomerOrgRegisterId = customerOrgRegisterId;
// await _patientRegisterRepository.UpdateAsync(item);
// }
// #endregion
// await uow.CompleteAsync();
// await Db.Ado.ExecuteCommandAsync($"update tb_export_key set keyvalue='{item.Id}',addtime=getdate(),handlecount+=1 where tablename='patient_register_customer_org_register' ");
// }
// }
// }
//}
///// <summary>
///// 迁移档案数据
///// </summary>
///// <returns></returns>
//public async Task TransferPatientData()
//{
// List<Patient> dataList = new List<Patient>();
// var oldPatientList = await Db.Ado.GetDataTableAsync("select top 500 patient_id,nation_id,address," +
// "birth_date,name,email,id_card_no,marital_status_id,mobile_telephone,patient_password,postalcode,telephone,sex_id " +
// "from patient_register where is_hand is null order by patient_register_id asc");
// List<string> tempPatientNos = new List<string>();
// if (oldPatientList.Rows.Count > 0)
// {
// List<FieldComparison> fieldComparisons = new List<FieldComparison>();
// List<FieldComparison> fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "nation");
// foreach (DataRow row in oldPatientList.Rows)
// {
// if (!tempPatientNos.Contains(row["patient_id"].ToString()))
// {
// string nationId = null;
// if (!string.IsNullOrWhiteSpace(row["nation_id"].ToString()))
// {
// nationId = fieldComparisonList.Where(m => m.OldKeyValue == row["nation_id"].ToString()).FirstOrDefault().NewKeyValue;
// }
// Guid PatientId = GuidGenerator.Create(); //档案ID
// var data = new Patient(PatientId)
// {
// Address = row["address"].ToString(),
// BirthDate = string.IsNullOrEmpty(row["birth_date"].ToString()) ? null : Convert.ToDateTime(row["birth_date"].ToString()),
// BirthPlaceId = null,
// DisplayName = row["name"].ToString(),
// Email = row["email"].ToString(),
// IdNo = row["id_card_no"].ToString(),
// MaritalStatusId = Convert.ToChar(row["marital_status_id"].ToString()),
// MedicalCenterId = defaultMedicalCenterId,
// MobileTelephone = row["mobile_telephone"].ToString(),
// NationId = nationId,
// PatientNo = row["patient_id"].ToString(),
// PatientPassword = row["patient_password"].ToString(),
// PostalCode = row["postalcode"].ToString(),
// SexId = ConvertSex(row["sex_id"].ToString()),
// SimpleCode = LanguageConverter.GetPYSimpleCode(row["name"].ToString()),
// Telephone = row["telephone"].ToString()
// };
// dataList.Add(data);
// fieldComparisons.Add(new FieldComparison
// {
// FieldName = "id",
// NewKeyValue = PatientId.ToString(),
// OldKeyValue = row["patient_id"].ToString(),
// TableName = "patient"
// });
// #region 增加标识
// veryPatientNo.Add(row["patient_id"].ToString(), row["patient_id"].ToString());
// #endregion
// }
// tempPatientNos.Add(row["patient_id"].ToString());
// }
// if (dataList.Any())
// await _patientRepository.InsertManyAsync(dataList);
// if (fieldComparisons.Any())
// await _fieldComparisonRepository.InsertManyAsync(fieldComparisons);
// #region 修改状态
// Thread.Sleep(100);
// await Db.Ado.ExecuteCommandAsync("update patient_register set is_hand='Y' where patient_id in (@ids) ", new { ids = tempPatientNos });
// #endregion
// _logger.LogInformation($"当前时间:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")},迁移数据{dataList.Count}");
// }
//}
///// <summary> ///// <summary>
///// 迁移后台用户数据 ///// 迁移后台用户数据

102
test/Shentun.Peis.Application.Tests/BaseDataHandleTest.cs

@ -28,79 +28,79 @@ namespace Shentun.Peis
_appService = GetRequiredService<BaseDataHandleAppService>(); _appService = GetRequiredService<BaseDataHandleAppService>();
} }
[Fact]
public async Task TransferPatientData()
{
//[Fact]
//public async Task TransferPatientData()
//{
for (int i = 0; i < 500; i++)
{
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
var IsHand = await _appService.TransferPatientData();
// for (int i = 0; i < 500; i++)
// {
// using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
// {
// var IsHand = await _appService.TransferPatientData();
await unitOfWork.CompleteAsync();
// await unitOfWork.CompleteAsync();
_output.WriteLine($"处理{(i + 1) * 1000}");
// _output.WriteLine($"处理{(i + 1) * 1000}");
if (!IsHand)
{
break;
}
}
}
// if (!IsHand)
// {
// break;
// }
// }
// }
}
//}
[Fact]
public async Task TransferPatientRegisterData()
{
//[Fact]
//public async Task TransferPatientRegisterData()
//{
for (int i = 0; i < 3000; i++)
{
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
var IsHand = await _appService.TransferPatientRegisterData();
// for (int i = 0; i < 3000; i++)
// {
// using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
// {
// var IsHand = await _appService.TransferPatientRegisterData();
await unitOfWork.CompleteAsync();
// await unitOfWork.CompleteAsync();
_output.WriteLine($"处理{(i + 1) * 1000}");
// _output.WriteLine($"处理{(i + 1) * 1000}");
if (!IsHand)
{
break;
}
}
}
// if (!IsHand)
// {
// break;
// }
// }
// }
}
//}
[Fact]
public async Task HandPatientRegisterDoctor()
{
//[Fact]
//public async Task HandPatientRegisterDoctor()
//{
for (int i = 0; i < 3000; i++)
{
using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
{
var IsHand = await _appService.HandPatientRegisterDoctor();
// for (int i = 0; i < 3000; i++)
// {
// using (var unitOfWork = _unitOfWorkManager.Begin(isTransactional: true))
// {
// var IsHand = await _appService.HandPatientRegisterDoctor();
await unitOfWork.CompleteAsync();
// await unitOfWork.CompleteAsync();
_output.WriteLine($"处理{(i + 1) * 1000}");
// _output.WriteLine($"处理{(i + 1) * 1000}");
if (!IsHand)
{
break;
}
}
}
// if (!IsHand)
// {
// break;
// }
// }
// }
}
//}
} }
} }
Loading…
Cancel
Save