@ -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 TransferPatientRegister Data ( )
{
{
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 auto PatientId = GuidGenerator . Create ( ) ; //档案ID
var data = new Patient ( PatientId )
var dataPatient = new Patient ( auto PatientId)
{
{
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 ( 1 0 0 ) ;
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 ( 1 0 0 ) ;
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 ( 1 0 0 0 ) . 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_asb item'" ) ;
//记录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 ( 1 0 0 0 ) . T oList ( ) ;
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_asb item' " ) ;
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 ( 1 0 0 0 ) . 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 ( 1 0 0 0 ) . 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 ( 1 0 0 0 ) . 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>
///// 迁移后台用户数据
///// 迁移后台用户数据