Browse Source

项目增加仪器类别

bjmzak
wxd 2 years ago
parent
commit
b1abb75e86
  1. 5
      src/Shentun.Peis.Application.Contracts/Items/CreateItemDto.cs
  2. 5
      src/Shentun.Peis.Application.Contracts/Items/UpdateItemDto.cs
  3. 180
      src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs
  4. 2
      src/Shentun.Peis.Domain/FieldComparisons/FieldComparison.cs
  5. 6
      src/Shentun.Peis.Domain/Items/Item.cs
  6. 4
      src/Shentun.Peis.Domain/Items/ItemManager.cs
  7. 13496
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240418102202_init20240418003.Designer.cs
  8. 26
      src/Shentun.Peis.EntityFrameworkCore/Migrations/20240418102202_init20240418003.cs
  9. 4
      src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs

5
src/Shentun.Peis.Application.Contracts/Items/CreateItemDto.cs

@ -86,5 +86,10 @@ namespace Shentun.Peis.Items
/// </summary>
public char LineModeFlag { get; set; }
/// <summary>
/// 仪器类别
/// </summary>
public Guid? DeviceTypeId { get; set; }
}
}

5
src/Shentun.Peis.Application.Contracts/Items/UpdateItemDto.cs

@ -83,5 +83,10 @@ namespace Shentun.Peis.Items
/// 项目结果行模式 (0 单行 1 多行 2 继承项目类别属性)
/// </summary>
public char LineModeFlag { get; set; }
/// <summary>
/// 仪器类别
/// </summary>
public Guid? DeviceTypeId { get; set; }
}
}

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

@ -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 = 200,
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);
}
}
}
}
}
}

2
src/Shentun.Peis.Domain/FieldComparisons/FieldComparison.cs

@ -23,7 +23,7 @@ namespace Shentun.Peis.Models
}
/// <summary>
/// 表名
/// 表名 新系统表名
/// </summary>
[Column("table_name")]
[StringLength(20)]

6
src/Shentun.Peis.Domain/Items/Item.cs

@ -149,7 +149,11 @@ namespace Shentun.Peis.Models
[Column("line_mode_flag")]
public char LineModeFlag { get; set; }
/// <summary>
/// 仪器类别
/// </summary>
[Column("device_type_id")]
public Guid? DeviceTypeId { get; set; }
[Column("concurrency_stamp")]
public string ConcurrencyStamp { get; set; }

4
src/Shentun.Peis.Domain/Items/ItemManager.cs

@ -88,7 +88,8 @@ namespace Shentun.Peis.Items
ReferenceRangeTypeFlag = entity.ReferenceRangeTypeFlag,
ResultTemplateTypeFlag = entity.ResultTemplateTypeFlag,
UnitId = entity.UnitId,
LineModeFlag = entity.LineModeFlag
LineModeFlag = entity.LineModeFlag,
DeviceTypeId = entity.DeviceTypeId
};
}
@ -130,6 +131,7 @@ namespace Shentun.Peis.Items
targetEntity.ResultTemplateTypeFlag = sourceEntity.ResultTemplateTypeFlag;
targetEntity.UnitId = sourceEntity.UnitId;
targetEntity.LineModeFlag = sourceEntity.LineModeFlag;
targetEntity.DeviceTypeId = sourceEntity.DeviceTypeId;
}

13496
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240418102202_init20240418003.Designer.cs
File diff suppressed because it is too large
View File

26
src/Shentun.Peis.EntityFrameworkCore/Migrations/20240418102202_init20240418003.cs

@ -0,0 +1,26 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Shentun.Peis.Migrations
{
public partial class init20240418003 : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<Guid>(
name: "device_type_id",
table: "item",
type: "uuid",
nullable: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "device_type_id",
table: "item");
}
}
}

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

@ -4155,6 +4155,10 @@ namespace Shentun.Peis.Migrations
.HasColumnName("default_result")
.HasComment("默认结果");
b.Property<Guid?>("DeviceTypeId")
.HasColumnType("uuid")
.HasColumnName("device_type_id");
b.Property<string>("DiagnosisFunction")
.HasMaxLength(2000)
.HasColumnType("character varying(2000)")

Loading…
Cancel
Save