@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Authorization ;
using Shentun.Peis.Enums ;
using Shentun.Peis.ItemTypes ;
using Shentun.Peis.Models ;
using Shentun.Utilities ;
@ -8,7 +9,6 @@ using System.Collections.Generic;
using System.Data ;
using System.Linq ;
using System.Threading.Tasks ;
using TencentCloud.Ame.V20190916.Models ;
using Volo.Abp ;
using Volo.Abp.Application.Services ;
using Volo.Abp.Domain.Repositories ;
@ -31,6 +31,12 @@ namespace Shentun.Peis.DataMigrations
} ) ;
//默认指引类别ID
private readonly Guid defaultGuidTypeId = Guid . Parse ( "3a120284-df18-7b36-4b12-0423a7d5c1c6" ) ;
//默认体检报告类别ID
private readonly Guid defaultMedicalReportTypeId = Guid . Parse ( "3a120285-65dd-e7da-c923-6b503ab9e1d9" ) ;
private readonly IRepository < DeviceType , Guid > _deviceTypeRepository ;
private readonly IRepository < ItemType , Guid > _itemTypeRepository ;
private readonly ItemTypeManager _itemTypeManager ;
@ -39,7 +45,9 @@ namespace Shentun.Peis.DataMigrations
private readonly IRepository < PersonnelType , Guid > _personnelTypeRepository ;
private readonly IRepository < InvoiceItemType , Guid > _invoiceItemTypeRepository ;
private readonly IRepository < FieldComparison , Guid > _fieldComparisonRepository ;
private readonly IRepository < SampleType , Guid > _sampleTypeRepository ;
private readonly IRepository < Item , Guid > _itemRepository ;
private readonly IRepository < ReferenceRange , Guid > _referenceRangeRepository ;
public BaseDataHandleAppService (
IRepository < DeviceType , Guid > deviceTypeRepository ,
IRepository < ItemType , Guid > itemTypeRepository ,
@ -48,7 +56,9 @@ namespace Shentun.Peis.DataMigrations
IRepository < MedicalType , Guid > medicalTypeRepository ,
IRepository < PersonnelType , Guid > personnelTypeRepository ,
IRepository < InvoiceItemType , Guid > invoiceItemTypeRepository ,
IRepository < FieldComparison , Guid > fieldComparisonRepository )
IRepository < FieldComparison , Guid > fieldComparisonRepository ,
IRepository < SampleType , Guid > sampleTypeRepository ,
IRepository < Item , Guid > itemRepository )
{
_deviceTypeRepository = deviceTypeRepository ;
_itemTypeRepository = itemTypeRepository ;
@ -58,6 +68,8 @@ namespace Shentun.Peis.DataMigrations
_personnelTypeRepository = personnelTypeRepository ;
_invoiceItemTypeRepository = invoiceItemTypeRepository ;
_fieldComparisonRepository = fieldComparisonRepository ;
_sampleTypeRepository = sampleTypeRepository ;
_itemRepository = itemRepository ;
}
/// <summary>
@ -235,7 +247,7 @@ namespace Shentun.Peis.DataMigrations
var count = await _invoiceItemTypeRepository . GetCountAsync ( ) ;
if ( count = = 0 )
{
var oldInvoiceItemTypeList = await Db . Ado . GetDataTableAsync ( "select invoice_item_type_id,invoice_item_type_name from invoice_item_type order by display_order asc" ) ;
if ( oldInvoiceItemTypeList . Rows . Count > 0 )
{
@ -243,7 +255,7 @@ namespace Shentun.Peis.DataMigrations
foreach ( DataRow row in oldInvoiceItemTypeList . Rows )
{
var data = new InvoiceItemType
var data = new InvoiceItemType
{
DisplayName = row [ "invoice_item_type_name" ] . ToString ( ) ,
DisplayOrder = oldInvoiceItemTypeList . Rows . IndexOf ( row ) + 1 ,
@ -276,30 +288,174 @@ namespace Shentun.Peis.DataMigrations
if ( count = = 0 )
{
List < ItemType > dataList = new List < ItemType > ( ) ;
var oldItemTypeList = await Db . Ado . GetDataTableAsync ( "select department_name,display_order ,merge_asbitem_flag from department order by display_order asc" ) ;
var oldItemTypeList = await Db . Ado . GetDataTableAsync ( "select department_id,department_type,department_name ,merge_asbitem_flag from department order by display_order asc" ) ;
if ( oldItemTypeList . Rows . Count > 0 )
{
List < FieldComparison > fieldComparisons = new List < FieldComparison > ( ) ;
foreach ( DataRow row in oldItemTypeList . Rows )
{
dataList . Add ( new ItemType
var data = new ItemType
{
DisplayName = row [ "department_name" ] . ToString ( ) ,
DisplayOrder = oldItemTypeList . Rows . IndexOf ( row ) + 1 ,
SimpleCode = LanguageConverter . GetPYSimpleCode ( row [ "department_name" ] . ToString ( ) ) ,
CheckTypeFlag = '0' ,
GuidTypeId = Guid . NewGuid ( ) ,
IsMergeAsbitem = ( char ) row [ "merge_asbitem_flag" ] ,
CheckTypeFlag = Convert . ToChar ( row [ "department_type" ] ) ,
GuidTypeId = defaultGuidTypeId ,
IsMergeAsbitem = Convert . ToChar ( row [ "merge_asbitem_flag" ] ) ,
IsWrap = 'N' ,
MedicalReportTypeId = Guid . NewGuid ( ) ,
MedicalReportTypeId = defaultMedicalReportTypeId ,
ParentId = null ,
PathCode = _itemTypeManager . CreatePathCode ( null ) . Result
} ;
var ent = await _itemTypeRepository . InsertAsync ( data , true ) ;
fieldComparisons . Add ( new FieldComparison
{
TableName = "item_type" ,
FieldName = "id" ,
NewKeyValue = ent . Id . ToString ( ) ,
OldKeyValue = row [ "department_id" ] . ToString ( )
} ) ;
}
await _fieldComparisonRepository . InsertManyAsync ( fieldComparisons ) ;
}
}
}
/// <summary>
/// 迁移标本类型数据
/// </summary>
/// <returns></returns>
public async Task TransferSampleTypeData ( )
{
var count = await _sampleTypeRepository . GetCountAsync ( ) ;
if ( count = = 0 )
{
List < SampleType > dataList = new List < SampleType > ( ) ;
var oldSampleTypeList = await Db . Ado . GetDataTableAsync ( "select specimen_type_id,specimen_type_name from specimen_type order by display_order asc" ) ;
if ( oldSampleTypeList . Rows . Count > 0 )
{
List < FieldComparison > fieldComparisons = new List < FieldComparison > ( ) ;
foreach ( DataRow row in oldSampleTypeList . Rows )
{
var data = new SampleType
{
DisplayName = row [ "specimen_type_name" ] . ToString ( ) ,
DisplayOrder = oldSampleTypeList . Rows . IndexOf ( row ) + 1 ,
SimpleCode = LanguageConverter . GetPYSimpleCode ( row [ "specimen_type_name" ] . ToString ( ) )
} ;
var ent = await _sampleTypeRepository . InsertAsync ( data , true ) ;
fieldComparisons . Add ( new FieldComparison
{
TableName = "sample_type" ,
FieldName = "id" ,
NewKeyValue = ent . Id . ToString ( ) ,
OldKeyValue = row [ "specimen_type_id" ] . ToString ( )
} ) ;
}
await _itemTypeRepository . InsertManyAsync ( dataList ) ;
await _fieldComparisonRepository . InsertManyAsync ( fieldComparisons ) ;
}
}
}
/// <summary>
/// 迁移项目数据
/// </summary>
/// <returns></returns>
public async Task TransferItemData ( )
{
var count = await _itemRepository . GetCountAsync ( ) ;
if ( count = = 0 )
{
List < Item > dataList = new List < Item > ( ) ;
var oldItemList = await Db . Ado . GetDataTableAsync ( "select * from item " ) ;
if ( oldItemList . Rows . Count > 0 )
{
List < FieldComparison > fieldComparisons = new List < FieldComparison > ( ) ;
List < ReferenceRange > referenceRanges = new List < ReferenceRange > ( ) ;
List < FieldComparison > fieldComparisonList = await _fieldComparisonRepository . GetListAsync ( ) ;
foreach ( DataRow row in oldItemList . Rows )
{
var itemTypeId = Guid . Parse ( fieldComparisonList . Where ( m = > m . TableName = = "item_type" & & m . OldKeyValue = = row [ "department_id" ] . ToString ( ) ) . FirstOrDefault ( ) . NewKeyValue ) ;
Guid ? unitId = null ;
if ( ! string . IsNullOrWhiteSpace ( row [ "unit_id" ] . ToString ( ) ) )
unitId = Guid . Parse ( fieldComparisonList . Where ( m = > m . TableName = = "unit" & & m . OldKeyValue = = row [ "unit_id" ] . ToString ( ) ) . FirstOrDefault ( ) . NewKeyValue ) ;
var data = new Item
{
DisplayName = row [ "item_name" ] . ToString ( ) ,
DisplayOrder = oldItemList . Rows . IndexOf ( row ) + 1 ,
SimpleCode = LanguageConverter . GetPYSimpleCode ( row [ "item_name" ] . ToString ( ) ) ,
CalculationFunction = "" ,
DefaultResult = row [ "default_result" ] . ToString ( ) ,
DiagnosisFunction = "" ,
EnglishShortName = row [ "english_abbreviation" ] . ToString ( ) ,
InputCheck = row [ "input_check" ] . ToString ( ) ,
IsActive = 'Y' ,
IsCalculationItem = 'N' ,
IsContinueProcess = 'N' ,
IsDiagnosisFunction = 'N' ,
IsNameIntoSummary = Convert . ToChar ( row [ "name_into_summary_flag" ] ) ,
IsProduceSummary = Convert . ToChar ( row [ "produce_summary_flag" ] ) ,
ItemTypeId = itemTypeId ,
LineModeFlag = '0' ,
Price = Convert . ToDecimal ( row [ "price" ] ) ,
PriceItemId = null ,
ReferenceRangeTypeFlag = Convert . ToChar ( row [ "reference_range_type" ] ) ,
ResultTemplateTypeFlag = '0' ,
UnitId = unitId
} ;
var ent = await _itemRepository . InsertAsync ( data , true ) ;
if ( row [ "reference_range_type" ] . ToString ( ) = = "2" & & ! string . IsNullOrWhiteSpace ( row [ "reference_range_value" ] . ToString ( ) ) )
{
//增加字符型参考范围到参考范围表
var referenceRange = new ReferenceRange
{
AgeLowerLimit = 0 ,
AgeUpperLimit = 2 0 0 ,
CriticalRangeValue = "" ,
ItemId = ent . Id ,
LowerDiagnosisId = null ,
ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag . Character ,
UpperDiagnosisId = null ,
ReferenceRangeValue = row [ "reference_range_value" ] . ToString ( )
} ;
referenceRanges . Add ( referenceRange ) ;
}
fieldComparisons . Add ( new FieldComparison
{
TableName = "item" ,
FieldName = "id" ,
NewKeyValue = ent . Id . ToString ( ) ,
OldKeyValue = row [ "item_id" ] . ToString ( )
} ) ;
}
await _fieldComparisonRepository . InsertManyAsync ( fieldComparisons ) ;
if ( referenceRanges . Any ( ) )
{
await _referenceRangeRepository . InsertManyAsync ( referenceRanges ) ;
}
}
}
}
}
}