From a59235c16603b2fab36bace6824fc4b49e5494d9 Mon Sep 17 00:00:00 2001 From: wxd <123@qq.com> Date: Sat, 27 Apr 2024 17:56:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseDataHandleAppService.cs | 118 +++++++++++++++++- src/Shentun.Peis.Domain/CacheService.cs | 7 +- .../SampleGroups/SampleGroup.cs | 5 + 3 files changed, 125 insertions(+), 5 deletions(-) diff --git a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs index e6d177b..c69599c 100644 --- a/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs +++ b/src/Shentun.Peis.Application/DataMigrations/BaseDataHandleAppService.cs @@ -49,7 +49,8 @@ namespace Shentun.Peis.DataMigrations private readonly SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig() { - ConnectionString = "Data Source=.;Initial Catalog=mypeis;User ID=sa;Password=123;", + // ConnectionString = "Data Source=.;Initial Catalog=mypeis;User ID=sa;Password=123;Encrypt=false;", + ConnectionString = "server=.;uid=sa;pwd=123;database=mypeis;Encrypt=false;", DbType = SqlSugar.DbType.SqlServer, IsAutoCloseConnection = true }); @@ -82,6 +83,7 @@ namespace Shentun.Peis.DataMigrations //默认体检中心 private readonly Guid defaultMedicalCenterId = Guid.Parse("0de5b78a-731d-4f80-b262-655ebbf04581"); private readonly string defaultMedicalConclusionType = "01"; + private readonly Guid defaultSampleContainerId = Guid.Parse("3a1230dc-90fc-1bbc-dbd4-da9de6f2a67d"); private readonly IRepository _deviceTypeRepository; private readonly IRepository _itemTypeRepository; @@ -129,6 +131,8 @@ namespace Shentun.Peis.DataMigrations private readonly IRepository _reportRepository; private readonly IRepository _reportFormatRepository; private readonly IRepository _reportFormatTemplateRepository; + private readonly IRepository _sampleGroupRepository; + private readonly IRepository _sampleGroupDetailRepository; private Dictionary veryPatientNo = new Dictionary(); @@ -178,7 +182,9 @@ namespace Shentun.Peis.DataMigrations IRepository sumDiagnosisRepository, IRepository reportRepository, IRepository reportFormatRepository, - IRepository reportFormatTemplateRepository) + IRepository reportFormatTemplateRepository, + IRepository sampleGroupRepository, + IRepository sampleGroupDetailRepository) { _deviceTypeRepository = deviceTypeRepository; _itemTypeRepository = itemTypeRepository; @@ -226,6 +232,8 @@ namespace Shentun.Peis.DataMigrations _reportRepository = reportRepository; _reportFormatRepository = reportFormatRepository; _reportFormatTemplateRepository = reportFormatTemplateRepository; + _sampleGroupRepository = sampleGroupRepository; + _sampleGroupDetailRepository = sampleGroupDetailRepository; } @@ -1776,7 +1784,7 @@ namespace Shentun.Peis.DataMigrations /// - /// 迁移民族数据 民族对应 + /// 迁移 民族字段对应数据 /// /// public async Task TransferNationData() @@ -1812,6 +1820,110 @@ namespace Shentun.Peis.DataMigrations } } + + + /// + /// 迁移条码分组数据 + /// + /// + public async Task TransferSampleGroupData() + { + var count = await _sampleGroupRepository.GetCountAsync(); + if (count == 0) + { + List dataList = new List(); + var oldSampleGroupList = await Db.Ado.GetDataTableAsync("select * from vessels_type order by display_order asc"); + if (oldSampleGroupList.Rows.Count > 0) + { + List fieldComparisons = new List(); + + foreach (DataRow row in oldSampleGroupList.Rows) + { + #region 转成成新的标本类型ID + + Guid newSampleTypeId = Guid.Parse("3a120298-82b8-0429-d2e8-75ccde686899"); //默认取其他 ID + + if (!string.IsNullOrWhiteSpace(row["specimen_type_id"].ToString())) + { + var oldSampleType = (await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "sample_type" && m.OldKeyValue == row["specimen_type_id"].ToString()).FirstOrDefault(); + if (oldSampleType != null) + { + newSampleTypeId = Guid.Parse(oldSampleType.NewKeyValue); + } + } + #endregion + + Guid sampleGroupId = GuidGenerator.Create(); + + var data = new SampleGroup(sampleGroupId) + { + DisplayName = row["vessels_type_name"].ToString(), + DisplayOrder = oldSampleGroupList.Rows.IndexOf(row) + 1, + SimpleCode = LanguageConverter.GetPYSimpleCode(row["vessels_type_name"].ToString()), + SampleContainerId = defaultSampleContainerId, + SampleTypeId = newSampleTypeId + }; + + var ent = await _sampleGroupRepository.InsertAsync(data, true); + + fieldComparisons.Add(new FieldComparison + { + TableName = "sample_group", + FieldName = "id", + NewKeyValue = sampleGroupId.ToString(), + OldKeyValue = row["vessels_type_id"].ToString() + }); + } + + await _fieldComparisonRepository.InsertManyAsync(fieldComparisons); + } + } + } + + + /// + /// 迁移条码分组明细数据 + /// + /// + public async Task TransferSampleGroupDetailData() + { + var count = await _sampleGroupDetailRepository.GetCountAsync(); + if (count == 0) + { + List dataList = new List(); + var oldSampleGroupDetailList = await Db.Ado.GetDataTableAsync("select * from vessels_type_detail "); + if (oldSampleGroupDetailList.Rows.Count > 0) + { + + foreach (DataRow row in oldSampleGroupDetailList.Rows) + { + using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) + { + Guid newSampleGroupId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "sample_group" && m.OldKeyValue == row["vessels_type_id"].ToString()).FirstOrDefault().NewKeyValue); + + Guid newAsbitemId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()) + .Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["asbitem_id"].ToString()).FirstOrDefault().NewKeyValue); + + var data = new SampleGroupDetail + { + AsbitemId = newAsbitemId, + SampleGroupId = newSampleGroupId + }; + + var ent = await _sampleGroupDetailRepository.InsertAsync(data); + + await uow.CompleteAsync(); + + } + } + + + } + } + } + #region 人员登记 /// diff --git a/src/Shentun.Peis.Domain/CacheService.cs b/src/Shentun.Peis.Domain/CacheService.cs index 3819a53..3b4f73c 100644 --- a/src/Shentun.Peis.Domain/CacheService.cs +++ b/src/Shentun.Peis.Domain/CacheService.cs @@ -107,7 +107,7 @@ namespace Shentun.Peis var entity = await _userCache.GetOrAddAsync( id, //缓存键 - async () => await _userRepository.GetAsync(id) + async () => await _userRepository.FirstOrDefaultAsync(m => m.Id == id) ); return entity; } @@ -119,7 +119,10 @@ namespace Shentun.Peis return ""; } var entity = await GetUserAsync((Guid)id); - return entity.UserName; + if (entity != null) + return entity.UserName; + else + return ""; } private async Task GetSexAsync(char id) diff --git a/src/Shentun.Peis.Domain/SampleGroups/SampleGroup.cs b/src/Shentun.Peis.Domain/SampleGroups/SampleGroup.cs index 797dc96..654943f 100644 --- a/src/Shentun.Peis.Domain/SampleGroups/SampleGroup.cs +++ b/src/Shentun.Peis.Domain/SampleGroups/SampleGroup.cs @@ -15,6 +15,11 @@ namespace Shentun.Peis.Models [Index(nameof(DisplayName), Name = "ix_sample_group", IsUnique = true)] public class SampleGroup : AuditedEntity, IDisplayName, IDisplayOrder, IHasConcurrencyStamp { + public SampleGroup(Guid id) : base(id) + { + + } + public SampleGroup() { SampleGroupDetails = new HashSet();