using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using Shentun.Peis.CustomerOrgs; using Shentun.Peis.DataMigrations; using Shentun.Peis.Enums; using Shentun.Peis.ItemTypes; using Shentun.Peis.Models; using Shentun.Peis.MyUser; using Shentun.Utilities; using SqlSugar; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; using Volo.Abp.Identity; using Volo.Abp.Uow; namespace Shentun.Peis.CQDJExportDatas { /// /// 重庆垫江数据导入 /// public class CQDJExportDataAppService : ApplicationService { //默认指引类别ID private readonly char defaultGuidTypeId = '0'; //默认体检报告类别ID private readonly char defaultMedicalReportTypeId = '0'; //默认检查类别 private readonly char defaultCheckTypeFlag = '0'; //默认发票项目类别id private Guid defaultInvoiceItemTypeId = Guid.Empty; //默认汇总项目类别id private Guid defaultCollectItemTypeId = Guid.Empty; //默认企业性质 private Guid defaultOrgTypeId = Guid.Empty; //默认容器ID private Guid defaultSampleContainerId = Guid.Empty; //默认体检中心 private readonly Guid defaultMedicalCenterId = Guid.Parse("7b754abf-9882-4f23-affd-d50103febfee"); //老系统数据库配置 private readonly SqlSugarClient oldDb = new SqlSugarClient(new ConnectionConfig() { ConnectionString = "server=192.168.1.119;uid=sa;pwd=st@123;database=Peis;Encrypt=false;", DbType = SqlSugar.DbType.SqlServer, IsAutoCloseConnection = true }); private readonly ILogger _logger; private readonly UnitOfWorkManager _unitOfWorkManager; private readonly IRepository _identityUserRepository; private readonly MyUserAppService _myUserAppService; private readonly IRepository _itemTypeRepository; private readonly ItemTypeManager _itemTypeManager; private readonly IRepository _fieldComparisonRepository; private readonly IRepository _itemRepository; private readonly IRepository _asbitemRepository; private readonly IRepository _asbitemDetailRepository; private readonly IRepository _medicalPackageRepository; private readonly IRepository _medicalPackageDetailRepository; private readonly IRepository _deviceTypeRepository; private readonly IRepository _unitRepository; private readonly IRepository _collectItemTypeRepository; private readonly IRepository _invoiceItemTypeRepository; private readonly IRepository _asbitemGuideRepository; private readonly IRepository _customerOrgRepository; private readonly CustomerOrgManager _customerOrgManager; private readonly IRepository _customerOrgRegisterRepository; private readonly IRepository _customerOrgGroupRepository; private readonly IRepository _customerOrgGroupDetailRepository; private readonly IRepository _customerOrgTypeRepository; private readonly IRepository _sampleContainerRepository; public CQDJExportDataAppService( IRepository identityUserRepository, UnitOfWorkManager unitOfWorkManager, ILogger logger, MyUserAppService myUserAppService, IRepository itemTypeRepository, ItemTypeManager itemTypeManager, IRepository fieldComparisonRepository, IRepository itemRepository, IRepository asbitemRepository, IRepository asbitemDetailRepository, IRepository medicalPackageRepository, IRepository medicalPackageDetailRepository, IRepository deviceTypeRepository, IRepository unitRepository, IRepository collectItemTypeRepository, IRepository invoiceItemTypeRepository, IRepository asbitemGuideRepository, IRepository customerOrgRepository, CustomerOrgManager customerOrgManager, IRepository customerOrgRegisterRepository, IRepository customerOrgGroupRepository, IRepository customerOrgGroupDetailRepository, IRepository customerOrgTypeRepository, IRepository sampleContainerRepository) { _identityUserRepository = identityUserRepository; _unitOfWorkManager = unitOfWorkManager; _logger = logger; _myUserAppService = myUserAppService; _itemTypeRepository = itemTypeRepository; _itemTypeManager = itemTypeManager; _fieldComparisonRepository = fieldComparisonRepository; _itemRepository = itemRepository; _asbitemRepository = asbitemRepository; _asbitemDetailRepository = asbitemDetailRepository; _medicalPackageRepository = medicalPackageRepository; _medicalPackageDetailRepository = medicalPackageDetailRepository; _deviceTypeRepository = deviceTypeRepository; _unitRepository = unitRepository; _collectItemTypeRepository = collectItemTypeRepository; _invoiceItemTypeRepository = invoiceItemTypeRepository; _asbitemGuideRepository = asbitemGuideRepository; _customerOrgRepository = customerOrgRepository; _customerOrgManager = customerOrgManager; _customerOrgRegisterRepository = customerOrgRegisterRepository; _customerOrgGroupRepository = customerOrgGroupRepository; _customerOrgGroupDetailRepository = customerOrgGroupDetailRepository; _customerOrgTypeRepository = customerOrgTypeRepository; _sampleContainerRepository = sampleContainerRepository; } /// /// 迁移后台用户数据 /// /// [HttpPost("api/app/CQDJExportData/TransferUserData")] public async Task TransferUserData() { var oldUserList = await oldDb.Ado.GetDataTableAsync("select GKHM,GKMM,XM from [futian_user].[GZRY]"); if (oldUserList.Rows.Count > 0) { if (await _identityUserRepository.CountAsync() == 1) { foreach (DataRow row in oldUserList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { string newUserName = LanguageConverter.GetPYSimpleCode(row["GKHM"].ToString().Trim()); var isUserName = await _identityUserRepository.FirstOrDefaultAsync(m => m.UserName == newUserName); if (isUserName != null) { newUserName += "2"; } var userEnt = new IdentityUserCreateNoEmailDto { Email = "", IsActive = true, LockoutEnabled = false, Name = "", Password = string.IsNullOrWhiteSpace(row["GKMM"].ToString()) ? "888888" : row["GKMM"].ToString(), PhoneNumber = "", RoleNames = new string[] { "admin" }, Surname = row["XM"].ToString().Trim(), UserName = newUserName, UserPhoto = "", UserSign = "" }; await _myUserAppService.CreateAsync(userEnt); await uow.CompleteAsync(); } } } else { _logger.LogInformation("用户数据已存在,未处理"); } } } /// /// 导入项目类别 仪器类别 /// /// [HttpPost("api/app/CQDJExportData/TransferBasicData")] public async Task TransferBasicData() { await InitData(); //初始数据 await TransferItemTypeData(); await TransferDeviceTypeData(); } /// /// 导入项目相关 /// /// [HttpPost("api/app/CQDJExportData/TransferItemWithDetailData")] public async Task TransferItemWithDetailData() { await InitData(); //初始数据 await TransferItemData(); await TransferAsbitemData(); await TransferAsbitemDetailData(); await TransferMedicalPackageData(); await TransferMedicalPackageDetailData(); } /// /// 导入单位相关 /// /// [HttpPost("api/app/CQDJExportData/TransferCustomerWithDetailData")] public async Task TransferCustomerWithDetailData() { await InitData(); //初始数据 await TransferTopCustomerOrgData(); await TransferTwoCustomerOrgData(); await TransferThreeCustomerOrgData(); await TransferCustomerOrgRegisterData(); await TransferCustomerOrgGroupData(); await TransferCustomerOrgGroupDetailData(); await TransferPHCustomerOrgGroupDetailData(); } #region 基础 /// /// 迁移项目类别-科室数据 /// /// private async Task TransferItemTypeData() { var count = await _itemTypeRepository.GetCountAsync(); if (count == 0) { var oldItemTypeList = await oldDb.Ado.GetDataTableAsync("SELECT [LXBH],[MC],[XSLX],[JCJYLX] FROM [futian_user].[TJ_TJLXB] order by DISP_ORDER asc"); if (oldItemTypeList.Rows.Count > 0) { foreach (DataRow row in oldItemTypeList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { Guid itemTypeId = StringConvertGuidHelper.GenerateURLUUID(row["LXBH"].ToString().Trim()); var data = new ItemType(itemTypeId) { DisplayName = row["MC"].ToString(), DisplayOrder = oldItemTypeList.Rows.IndexOf(row) + 1, SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), CheckTypeFlag = defaultCheckTypeFlag, GuidTypeId = defaultGuidTypeId, IsMergeAsbitem = 'N', IsWrap = 'N', MedicalReportTypeId = defaultMedicalReportTypeId, ParentId = null, PathCode = _itemTypeManager.CreatePathCode(null).Result, IsCheckRequest = 'N' }; await _itemTypeRepository.InsertAsync(data); var fieldComparison = new FieldComparison { TableName = "item_type", FieldName = "id", NewKeyValue = itemTypeId.ToString(), OldKeyValue = row["LXBH"].ToString().Trim() }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"项目类别数据处理完毕,处理数量{oldItemTypeList.Rows.Count}"); } else { _logger.LogInformation($"项目类别数据已存在,未处理"); } } /// /// 迁移仪器类别数据 /// /// private async Task TransferDeviceTypeData() { var count = await _deviceTypeRepository.GetCountAsync(); if (count == 0) { //处理临床类型 var oldDeviceTypeList = await oldDb.Ado.GetDataTableAsync(" select LCLX,MC from [futian_user].TJ_LCLXB order by DISP_ORDER asc"); if (oldDeviceTypeList.Rows.Count > 0) { foreach (DataRow row in oldDeviceTypeList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { Guid deviceTypeId = StringConvertGuidHelper.GenerateURLUUID(row["LCLX"].ToString()); var data = new DeviceType(deviceTypeId) { CheckTypeFlag = '0', DisplayName = row["MC"].ToString(), DisplayOrder = oldDeviceTypeList.Rows.IndexOf(row) + 1, SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()) }; await _deviceTypeRepository.InsertAsync(data); var fieldComparison = new FieldComparison { TableName = "device_type", FieldName = "id", NewKeyValue = deviceTypeId.ToString(), OldKeyValue = row["LCLX"].ToString() }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } //处理功能类型 var oldGNLXList = await oldDb.Ado.GetDataTableAsync(" select GNLX from futian_user.TJ_ZHXM_HD where GNLX != '' group by GNLX"); if (oldGNLXList.Rows.Count > 0) { foreach (DataRow row in oldGNLXList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { Guid deviceTypeId = GuidGenerator.Create(); var data = new DeviceType(deviceTypeId) { CheckTypeFlag = '1', DisplayName = row["GNLX"].ToString(), DisplayOrder = oldDeviceTypeList.Rows.IndexOf(row) + 1 + oldDeviceTypeList.Rows.Count, SimpleCode = LanguageConverter.GetPYSimpleCode(row["GNLX"].ToString()) }; await _deviceTypeRepository.InsertAsync(data); await uow.CompleteAsync(); } } } _logger.LogInformation($"仪器类别数据处理完毕,处理数量{oldDeviceTypeList.Rows.Count}"); } else { _logger.LogInformation("仪器类别数据已存在,未处理"); } } #endregion #region 项目相关 /// /// 迁移项目数据 /// /// private async Task TransferItemData() { var count = await _itemRepository.GetCountAsync(); if (count == 0) { var oldItemList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].[TJ_TJXMB] order by DISP_ORDER asc "); if (oldItemList.Rows.Count > 0) { List tempItemList = new List(); var unitList = await _unitRepository.GetListAsync(); foreach (DataRow row in oldItemList.Rows) { var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["LXBH"].ToString().Trim()).FirstOrDefault().NewKeyValue); string mc = row["MC"].ToString(); #region 重复项目跳过 if (tempItemList.Count(f => f.DisplayName == row["MC"].ToString() && f.ItemTypeId == itemTypeId) > 0) { //项目类别下重名了 _logger.LogInformation($"项目【{row["MC"].ToString()}】,Id【{row["TJXM"].ToString()}】已存在,跳过导入"); continue; //mc = mc + "_重"; //_logger.LogInformation($"项目【{row["MC"].ToString()}】,Id【{row["TJXM"].ToString()}】已存在,更改名称"); } #endregion using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { #region 根据临床类型生成二级科室 Guid? deviceTypeId = null; if (!string.IsNullOrWhiteSpace(row["LCLX"].ToString())) { deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["LCLX"].ToString()).FirstOrDefault().NewKeyValue); var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId); var deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value); var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName); if (itemTypeChildEnt == null) { Guid autoItemTypeId = GuidGenerator.Create(); #region 排序值 int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1; #endregion var item_type_data = new ItemType(autoItemTypeId) { DisplayName = deviceTypeEnt.DisplayName, DisplayOrder = displayOrder, SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName), CheckTypeFlag = itemTypeEnt.CheckTypeFlag, GuidTypeId = itemTypeEnt.GuidTypeId, IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem, IsWrap = itemTypeEnt.IsWrap, MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId, ParentId = itemTypeEnt.Id, PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result, IsCheckRequest = itemTypeEnt.IsCheckRequest }; await _itemTypeRepository.InsertAsync(item_type_data); itemTypeId = autoItemTypeId; } else { itemTypeId = itemTypeChildEnt.Id; } } #endregion Guid? unitId = null; if (!string.IsNullOrWhiteSpace(row["DW"].ToString())) { var tempUnit = unitList.FirstOrDefault(f => f.DisplayName == row["DW"].ToString().Trim()); if (tempUnit == null) { //创建单位 Guid newUnitId = GuidGenerator.Create(); var unitEntity = new Unit(newUnitId) { DisplayName = row["DW"].ToString().Trim(), DisplayOrder = unitList.Count + oldItemList.Rows.IndexOf(row) + 1, SimpleCode = LanguageConverter.GetPYSimpleCode(row["DW"].ToString().Trim()) }; await _unitRepository.InsertAsync(unitEntity); unitId = newUnitId; } else { unitId = tempUnit.Id; } } Guid itemId = StringConvertGuidHelper.GenerateURLUUID(row["TJXM"].ToString()); var data = new Item(itemId) { DisplayName = mc, DisplayOrder = oldItemList.Rows.IndexOf(row) + 1, SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), CalculationFunction = "", DefaultResult = row["ZCTS"].ToString(), DiagnosisFunction = "", EnglishShortName = "", InputCheck = "", IsActive = row["QYBZ"].ToString() == "1" ? 'Y' : 'N', IsCalculationItem = 'N', IsContinueProcess = 'N', IsDiagnosisFunction = 'N', IsNameIntoSummary = Convert.ToChar(row["MCJRXJ"]), IsProduceSummary = Convert.ToChar(row["SFXJ"]), ItemTypeId = itemTypeId, LineModeFlag = '0', Price = 0, PriceItemId = null, ReferenceRangeTypeFlag = row["JGLX"].ToString().Trim() == "1" ? '1' : '2', ResultTemplateTypeFlag = '0', UnitId = unitId, DeviceTypeId = deviceTypeId }; await _itemRepository.InsertAsync(data); tempItemList.Add(data); //if (row["reference_range_type"].ToString() == "2" && !string.IsNullOrWhiteSpace(row["reference_range_value"].ToString())) //{ // //增加字符型参考范围到参考范围表 // Guid referenceRangeId = GuidGenerator.Create(); // var referenceRange = new ReferenceRange(referenceRangeId) // { // AgeLowerLimit = 0, // AgeUpperLimit = 200, // CriticalRangeValue = "", // ItemId = itemId, // ForSexId = ForSexFlag.All, // LowerDiagnosisId = null, // ReferenceRangeTypeFlag = ItemReferenceRangeTypeFlag.Character, // UpperDiagnosisId = null, // ReferenceRangeValue = row["reference_range_value"].ToString() // }; // //referenceRanges.Add(referenceRange); // await _referenceRangeRepository.InsertAsync(referenceRange); //} var fieldComparison = new FieldComparison { TableName = "item", FieldName = "id", NewKeyValue = itemId.ToString(), OldKeyValue = row["TJXM"].ToString() }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"项目数据处理完毕,处理数量{oldItemList.Rows.Count}"); } else { _logger.LogInformation("项目数据已存在,未处理"); } } /// /// 迁移组合项目数据 /// /// private async Task TransferAsbitemData() { var count = await _asbitemRepository.GetCountAsync(); if (count == 0) { var oldAsbitemList = await oldDb.Ado.GetDataTableAsync(" select * from futian_user.TJ_ZHXM_HD order by DISP_ORDER asc "); if (oldAsbitemList.Rows.Count > 0) { List tempAsbitemList = new List(); foreach (DataRow row in oldAsbitemList.Rows) { string mc = row["MC"].ToString(); #region 重复组合项目跳过 if (tempAsbitemList.Count(f => f.DisplayName == row["MC"].ToString()) > 0) { //重名了 //mc = mc + "_重"; _logger.LogInformation($"组合项目【{row["MC"].ToString()}】,Id【{row["BH"].ToString()}】已存在,跳过导入"); continue; } #endregion using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { #region 根据仪器类别生成二级科室 var itemTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item_type" && m.OldKeyValue == row["TJLX"].ToString().Trim()).FirstOrDefault().NewKeyValue); Guid? deviceTypeId = null; if (!string.IsNullOrWhiteSpace(row["LCLX"].ToString()) || !string.IsNullOrWhiteSpace(row["GNLX"].ToString())) { var deviceTypeEnt = new DeviceType(); if (!string.IsNullOrWhiteSpace(row["LCLX"].ToString())) { deviceTypeId = Guid.Parse((await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "device_type" && m.OldKeyValue == row["LCLX"].ToString().Trim()).FirstOrDefault().NewKeyValue); deviceTypeEnt = await _deviceTypeRepository.GetAsync(deviceTypeId.Value); } else { deviceTypeEnt = await _deviceTypeRepository.FirstOrDefaultAsync(f => f.DisplayName == row["GNLX"].ToString()); } var itemTypeEnt = await _itemTypeRepository.GetAsync(itemTypeId); var itemTypeChildEnt = await _itemTypeRepository.FirstOrDefaultAsync(m => m.ParentId == itemTypeEnt.Id && m.DisplayName == deviceTypeEnt.DisplayName); if (itemTypeChildEnt == null) { Guid autoItemTypeId = GuidGenerator.Create(); #region 排序值 int displayOrder = (await _itemTypeRepository.CountAsync(m => m.ParentId == itemTypeEnt.Id)) + 1; #endregion var item_type_data = new ItemType(autoItemTypeId) { DisplayName = deviceTypeEnt.DisplayName, DisplayOrder = displayOrder, SimpleCode = LanguageConverter.GetPYSimpleCode(deviceTypeEnt.DisplayName), CheckTypeFlag = itemTypeEnt.CheckTypeFlag, GuidTypeId = itemTypeEnt.GuidTypeId, IsMergeAsbitem = itemTypeEnt.IsMergeAsbitem, IsWrap = itemTypeEnt.IsWrap, MedicalReportTypeId = itemTypeEnt.MedicalReportTypeId, ParentId = itemTypeEnt.Id, PathCode = _itemTypeManager.CreatePathCode(itemTypeEnt.Id).Result, IsCheckRequest = itemTypeEnt.IsCheckRequest }; await _itemTypeRepository.InsertAsync(item_type_data); itemTypeId = autoItemTypeId; } else { itemTypeId = itemTypeChildEnt.Id; } } #endregion Guid asbitemId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString().Trim()); var data = new Asbitem(asbitemId) { DisplayName = mc, DisplayOrder = oldAsbitemList.Rows.IndexOf(row) + 1, SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), DefaultResult = row["ZCXJ"].ToString(), DiagnosisFunction = "", IsActive = row["YXBZ"].ToString() == "1" ? 'Y' : 'N', IsContinueProcess = 'N', IsDiagnosisFunction = 'N', ItemTypeId = itemTypeId, Price = Convert.ToDecimal(row["DJ"]), DeviceTypeId = deviceTypeId, ClinicalMeaning = row["LCYY"].ToString(), ForSexId = ConvertForSex(row["XB"].ToString()), CollectItemTypeId = defaultCollectItemTypeId, IsBeforeEat = row["SFCQ"].ToString() == "0" ? 'Y' : 'N', IsCheck = 'Y', IsItemResultMerger = 'N', IsPictureRotate = 'N', QueueTime = 0, ShortName = row["MC"].ToString().Length > 20 ? "" : row["MC"].ToString(), BarcodeMode = '0', DiseaseScreeningTypeId = null, ForPregnantFlag = 'A', IsWebAppoint = 'N', MaritalStatusId = 'A', Warn = "", IsOutsend = 'N', MedicalCenterId = defaultMedicalCenterId }; await _asbitemRepository.InsertAsync(data); tempAsbitemList.Add(data); #region 指引信息 if (!string.IsNullOrWhiteSpace(row["TSXX"].ToString())) { var asbitemGuideData = new AsbitemGuide { AsbitemId = asbitemId, ForSexId = ForSexFlag.All, Guide = row["TSXX"].ToString(), MedicalCenterId = defaultMedicalCenterId }; await _asbitemGuideRepository.InsertAsync(asbitemGuideData); } #endregion var fieldComparison = new FieldComparison { TableName = "asbitem", FieldName = "id", NewKeyValue = asbitemId.ToString(), OldKeyValue = row["BH"].ToString().Trim() }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"组合项目数据处理完毕,处理数量{oldAsbitemList.Rows.Count}"); } else { _logger.LogInformation("组合项目数据已存在,未处理"); } } /// /// 迁移组合项目明细数据 无字典 /// /// private async Task TransferAsbitemDetailData() { var count = await _asbitemDetailRepository.GetCountAsync(); if (count == 0) { var oldAsbitemDetailList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].[TJ_ZHXM_DT] "); if (oldAsbitemDetailList.Rows.Count > 0) { foreach (DataRow row in oldAsbitemDetailList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { var asbitem_dz = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["BH"].ToString().Trim()).FirstOrDefault(); var item_dz = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item" && m.OldKeyValue == row["TJXM"].ToString().Trim()).FirstOrDefault(); if (asbitem_dz != null && item_dz != null) { Guid asbitemId = Guid.Parse(asbitem_dz.NewKeyValue); Guid itemId = Guid.Parse(item_dz.NewKeyValue); var data = new AsbitemDetail { AsbitemId = asbitemId, ItemId = itemId }; await _asbitemDetailRepository.InsertAsync(data); await uow.CompleteAsync(); } else { _logger.LogInformation($"组合项目明细未找到,asbitem_id=>【{row["BH"].ToString().Trim()}】,item_id=>【{row["TJXM"].ToString().Trim()}】"); } } } } _logger.LogInformation($"组合项目明细数据处理完毕,处理数量{oldAsbitemDetailList.Rows.Count}"); } else { _logger.LogInformation("组合项目明细数据已存在,未处理"); } } /// /// 迁移体检套餐数据 /// /// private async Task TransferMedicalPackageData() { var count = await _medicalPackageRepository.GetCountAsync(); if (count == 0) { var oldMedicalPackageList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].TJ_TC_HD order by DISP_ORDER asc"); if (oldMedicalPackageList.Rows.Count > 0) { foreach (DataRow row in oldMedicalPackageList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { Guid medicalPackageId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString().Trim()); var data = new MedicalPackage(medicalPackageId) { DisplayName = row["MC"].ToString(), DisplayOrder = oldMedicalPackageList.Rows.IndexOf(row) + 1, SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), ForSexId = ConvertForSex(row["XB"].ToString()), IsActive = row["SFQY"].ToString() == "1" ? 'Y' : 'N', Price = Convert.ToDecimal(row["JG"].ToString()), Remark = row["BZ"].ToString(), AgeLowerLimit = 0, AgeUpperLimit = 200, IsBasicRecommend = 'N', IsWebAppoint = 'N', MaritalStatusId = 'A' }; await _medicalPackageRepository.InsertAsync(data); var fieldComparison = new FieldComparison { TableName = "medical_package", FieldName = "id", NewKeyValue = medicalPackageId.ToString(), OldKeyValue = row["BH"].ToString().Trim() }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"体检套餐数据处理完毕,处理数量{oldMedicalPackageList.Rows.Count}"); } else { _logger.LogInformation("体检套餐数据已存在,未处理"); } } /// /// 迁移体检套餐明细数据 无字典 /// /// private async Task TransferMedicalPackageDetailData() { var count = await _medicalPackageDetailRepository.GetCountAsync(); if (count == 0) { var oldMedicalPackageDetailList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].[TJ_TC_DT] "); if (oldMedicalPackageDetailList.Rows.Count > 0) { foreach (DataRow row in oldMedicalPackageDetailList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { var asbitem_dz = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["ZHXM"].ToString().Trim()).FirstOrDefault(); var medical_package_dz = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "medical_package" && m.OldKeyValue == row["TCBH"].ToString().Trim()).FirstOrDefault(); if (asbitem_dz != null && medical_package_dz != null) { Guid asbitemId = Guid.Parse(asbitem_dz.NewKeyValue); Guid MedicalPackageId = Guid.Parse(medical_package_dz.NewKeyValue); var asbitemEnt = await _asbitemRepository.GetAsync(asbitemId); var data = new MedicalPackageDetail { AsbitemId = asbitemId, Amount = 1, MedicalPackageId = MedicalPackageId, Price = asbitemEnt.Price }; await _medicalPackageDetailRepository.InsertAsync(data); await uow.CompleteAsync(); } else { _logger.LogInformation($"套餐明细未找到,asbitem_id=>【{row["ZHXM"].ToString().Trim()}】,medical_package_id=>【{row["TCBH"].ToString().Trim()}】"); } } } } _logger.LogInformation($"体检套餐明细数据处理完毕,处理数量{oldMedicalPackageDetailList.Rows.Count}"); } else { _logger.LogInformation("体检套餐明细数据已存在,未处理"); } } #endregion #region 单位相关 /// /// 迁移体检单位数据 一级 /// /// private async Task TransferTopCustomerOrgData() { var count = await _customerOrgRepository.GetCountAsync(); if (count == 0) { var oldCustomerOrgList = await oldDb.Ado.GetDataTableAsync(" select * from [futian_user].HYDWDMB where len(BH)=4 order by BH asc"); if (oldCustomerOrgList.Rows.Count > 0) { foreach (DataRow row in oldCustomerOrgList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { Guid customerOrgId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); if (row["BH"].ToString() == "0000") { customerOrgId = Guid.Parse("00000000-0000-0000-0000-000000000001"); } #region 备注 导入联系人姓名、电话 string remark = ""; if (!string.IsNullOrWhiteSpace(row["DWFZR"].ToString())) { remark = row["DWFZR"].ToString(); } if (!string.IsNullOrWhiteSpace(row["LXDH"].ToString())) { if (!string.IsNullOrWhiteSpace(remark)) { remark += "|" + row["LXDH"].ToString(); } else { remark = row["LXDH"].ToString(); } } #endregion var data = new CustomerOrg(customerOrgId) { Accounts = "", Address = row["LXDZ"].ToString(), Bank = "", DisplayName = row["MC"].ToString(), DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1, Fax = "", InvoiceName = row["MC"].ToString(), IsActive = 'Y', IsLock = 'N', MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = null, PathCode = _customerOrgManager.CreatePathCode(null).GetAwaiter().GetResult(), PostalCode = row["YZBM"].ToString(), Remark = remark, ShortName = row["MC"].ToString(), SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), Telephone = row["LXDH"].ToString(), CountryOrgCode = row["BH"].ToString(), SalesPerson = "", SalesPersonPhone = "", MedicalTypeId = null }; await _customerOrgRepository.InsertAsync(data); var fieldComparison = new FieldComparison { FieldName = "id", NewKeyValue = customerOrgId.ToString(), OldKeyValue = row["BH"].ToString(), TableName = "customer_org" }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"体检单位一级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}"); } else { _logger.LogInformation("体检单位一级数据已存在,未处理"); } } /// /// 迁移体检单位数据 二级 /// /// private async Task TransferTwoCustomerOrgData() { var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 5).Count(); if (count == 0) { var oldCustomerOrgList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].HYDWDMB where len(BH)=7 order by BH asc"); if (oldCustomerOrgList.Rows.Count > 0) { List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org"); foreach (DataRow row in oldCustomerOrgList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { #region 查找上级ID string oldId = row["BH"].ToString(); string oldParentId = oldId.Substring(0, 4); Guid parentId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault().NewKeyValue); #endregion Guid customerOrgId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); #region 备注 导入联系人姓名、电话 string remark = ""; if (!string.IsNullOrWhiteSpace(row["DWFZR"].ToString())) { remark = row["DWFZR"].ToString(); } if (!string.IsNullOrWhiteSpace(row["LXDH"].ToString())) { if (!string.IsNullOrWhiteSpace(remark)) { remark += "|" + row["LXDH"].ToString(); } else { remark = row["LXDH"].ToString(); } } #endregion var data = new CustomerOrg(customerOrgId) { Accounts = "", Address = row["LXDZ"].ToString(), Bank = "", DisplayName = row["MC"].ToString(), DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1, Fax = "", InvoiceName = row["MC"].ToString(), IsActive = 'Y', IsLock = 'N', MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = parentId, PathCode = _customerOrgManager.CreatePathCode(parentId).GetAwaiter().GetResult(), PostalCode = row["YZBM"].ToString(), Remark = remark, ShortName = row["MC"].ToString(), SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), Telephone = row["LXDH"].ToString(), CountryOrgCode = row["BH"].ToString(), SalesPerson = "", SalesPersonPhone = "", MedicalTypeId = null }; await _customerOrgRepository.InsertAsync(data); var fieldComparison = new FieldComparison { FieldName = "id", NewKeyValue = customerOrgId.ToString(), OldKeyValue = row["BH"].ToString(), TableName = "customer_org" }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"体检单位二级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}"); } else { _logger.LogInformation("体检单位二级数据已存在,未处理"); } } /// /// 迁移体检单位数据 三级 /// /// private async Task TransferThreeCustomerOrgData() { var count = (await _customerOrgRepository.GetQueryableAsync()).Where(m => m.PathCode.Length > 11).Count(); if (count == 0) { var oldCustomerOrgList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].HYDWDMB where len(BH)=10 order by BH asc"); if (oldCustomerOrgList.Rows.Count > 0) { List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org"); foreach (DataRow row in oldCustomerOrgList.Rows) { string oldId = row["BH"].ToString(); string oldParentId = oldId.Substring(0, 7); var parentFirst = fieldComparisonList.Where(m => m.OldKeyValue == oldParentId).FirstOrDefault(); if (parentFirst != null) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { #region 查找上级ID Guid parentId = Guid.Parse(parentFirst.NewKeyValue); #endregion // Guid customerOrgId = GuidGenerator.Create(); Guid customerOrgId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString()); #region 备注 导入联系人姓名、电话 string remark = ""; if (!string.IsNullOrWhiteSpace(row["DWFZR"].ToString())) { remark = row["DWFZR"].ToString(); } if (!string.IsNullOrWhiteSpace(row["LXDH"].ToString())) { if (!string.IsNullOrWhiteSpace(remark)) { remark += "|" + row["LXDH"].ToString(); } else { remark = row["LXDH"].ToString(); } } #endregion var data = new CustomerOrg(customerOrgId) { Accounts = "", Address = row["LXDZ"].ToString(), Bank = "", DisplayName = row["MC"].ToString(), DisplayOrder = oldCustomerOrgList.Rows.IndexOf(row) + 1, Fax = "", InvoiceName = row["MC"].ToString(), IsActive = 'Y', IsLock = 'N', MedicalCenterId = defaultMedicalCenterId, OrgTypeId = defaultOrgTypeId, //默认为私营 ParentId = parentId, PathCode = _customerOrgManager.CreatePathCode(parentId).GetAwaiter().GetResult(), PostalCode = row["YZBM"].ToString(), Remark = remark, ShortName = row["MC"].ToString(), SimpleCode = LanguageConverter.GetPYSimpleCode(row["MC"].ToString()), Telephone = row["LXDH"].ToString(), CountryOrgCode = row["BH"].ToString(), SalesPerson = "", SalesPersonPhone = "", MedicalTypeId = null }; await _customerOrgRepository.InsertAsync(data); var fieldComparison = new FieldComparison { FieldName = "id", NewKeyValue = customerOrgId.ToString(), OldKeyValue = row["BH"].ToString(), TableName = "customer_org" }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } } _logger.LogInformation($"体检单位三级数据处理完毕,处理数量{oldCustomerOrgList.Rows.Count}"); } else { _logger.LogInformation("体检单位三级数据已存在,未处理"); } } /// /// 迁移单位体检次数数据 无字典 /// /// private async Task TransferCustomerOrgRegisterData() { var count = await _customerOrgRegisterRepository.GetCountAsync(); if (count == 0) { var oldCustomerOrgRegisterList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].TJ_DWTJJLB order by DWTJCS asc"); if (oldCustomerOrgRegisterList.Rows.Count > 0) { List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org"); foreach (DataRow row in oldCustomerOrgRegisterList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["DWBH"].ToString()).FirstOrDefault().NewKeyValue); Guid customerOrgRegisterId = GuidGenerator.Create(); if (customerOrgId == GuidFlag.PersonCustomerOrgId) customerOrgRegisterId = GuidFlag.PersonCustomerOrgRegisterId; var data = new CustomerOrgRegister(customerOrgRegisterId) { BeginTime = Convert.ToDateTime(row["KSRQ"].ToString()), CustomerOrgId = customerOrgId, EndTime = !string.IsNullOrWhiteSpace(row["JSRQ"].ToString()) ? Convert.ToDateTime(row["JSRQ"].ToString()) : null, IsComplete = row["WCBZ"].ToString() == "1" ? 'Y' : 'N', MedicalTimes = (short)Convert.ToInt32(row["DWTJCS"].ToString()), RegisterName = "", RegisterNo = "" }; await _customerOrgRegisterRepository.InsertAsync(data); await uow.CompleteAsync(); } } } _logger.LogInformation($"单位体检次数数据处理完毕,处理数量{oldCustomerOrgRegisterList.Rows.Count}"); } else { _logger.LogInformation("单位体检次数数据已存在,未处理"); } } /// /// 迁移单位分组 /// /// private async Task TransferCustomerOrgGroupData() { var count = await _customerOrgGroupRepository.GetCountAsync(); if (count == 0) { var oldCustomerOrgGroupList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].TJ_DWFZ_HD "); if (oldCustomerOrgGroupList.Rows.Count > 0) { List fieldComparisonList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "customer_org"); List customerOrgRegisterList = await _customerOrgRegisterRepository.GetListAsync(); foreach (DataRow row in oldCustomerOrgGroupList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { //新系统单位ID Guid customerOrgId = Guid.Parse(fieldComparisonList.Where(m => m.OldKeyValue == row["DWBH"].ToString().Trim()).FirstOrDefault().NewKeyValue); Guid customerOrgRegisterId = customerOrgRegisterList.Where(m => m.CustomerOrgId == customerOrgId && m.MedicalTimes == (short)Convert.ToInt32(row["DWTJCS"].ToString())).FirstOrDefault().Id; Guid customerOrgGroupId = StringConvertGuidHelper.GenerateURLUUID(row["BH"].ToString().Trim()); var data = new CustomerOrgGroup(customerOrgGroupId) { AgeLowerLimit = 0, AgeUpperLimit = 200, CustomerOrgRegisterId = customerOrgRegisterId, DisplayName = row["FZMC"].ToString(), DisplayOrder = oldCustomerOrgGroupList.Rows.IndexOf(row) + 1, ForSexId = ConvertForSex(row["XB"].ToString()), JobPost = "", JobTitle = "", MaritalStatusId = row["HYZK"].ToString() == "9" ? 'A' : Convert.ToChar(row["HYZK"].ToString()), Price = string.IsNullOrWhiteSpace(row["JG"].ToString()) ? 0 : Convert.ToDecimal(row["JG"].ToString()), Remark = "", CanAddMoney = 0 }; await _customerOrgGroupRepository.InsertAsync(data); var fieldComparison = new FieldComparison { FieldName = "id", NewKeyValue = customerOrgGroupId.ToString(), OldKeyValue = row["BH"].ToString().Trim(), TableName = "customer_org_group" }; await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); } } } _logger.LogInformation($"单位分组数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}"); } else { _logger.LogInformation("单位分组数据已存在,未处理"); } } /// /// 迁移单位分组明细数据 /// /// private async Task TransferCustomerOrgGroupDetailData() { var count = await _customerOrgGroupDetailRepository.GetCountAsync(); if (count == 0) { int pclcount = 200; var oldCustomerOrgGroupList = await oldDb.Ado.GetDataTableAsync("select * from [futian_user].[TJ_DWFZ_DT] "); if (oldCustomerOrgGroupList.Rows.Count > 0) { List tempList = new List(); foreach (DataRow row in oldCustomerOrgGroupList.Rows) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { var customer_org_group_dz = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "customer_org_group" && m.OldKeyValue == row["FZBH"].ToString().Trim()).FirstOrDefault(); var asbitem_dz = (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem" && m.OldKeyValue == row["TJXM"].ToString().Trim()).FirstOrDefault(); if (asbitem_dz != null && customer_org_group_dz != null) { //新系统单位分组ID Guid customerOrgGroupId = Guid.Parse(customer_org_group_dz.NewKeyValue); Guid asbitemId = Guid.Parse(asbitem_dz.NewKeyValue); //decimal price = 0; //if (!decimal.TryParse(row["price"].ToString(), out price)) //{ // price = 0; //} var data = new CustomerOrgGroupDetail { AsbitemId = asbitemId, CustomerOrgGroupId = customerOrgGroupId, Price = 0, Amount = 1 }; tempList.Add(data); if (tempList.Count >= pclcount) { await _customerOrgGroupDetailRepository.InsertManyAsync(tempList); tempList = new List(); } else { if (oldCustomerOrgGroupList.Rows.IndexOf(row) == oldCustomerOrgGroupList.Rows.Count - 1) { await _customerOrgGroupDetailRepository.InsertManyAsync(tempList); } } } await uow.CompleteAsync(); } } } _logger.LogInformation($"单位分组明细数据处理完毕,处理数量{oldCustomerOrgGroupList.Rows.Count}"); } else { _logger.LogInformation("单位分组明细数据已存在,未处理"); } } /// /// 平衡分组明细 /// /// private async Task TransferPHCustomerOrgGroupDetailData() { var customerOrgGroupList = await _customerOrgGroupRepository.GetListAsync(); if (customerOrgGroupList.Count > 0) { var customerOrgGroupDetailList = (from customerOrgGroupDetail in await _customerOrgGroupDetailRepository.GetQueryableAsync() join asbitem in await _asbitemRepository.GetQueryableAsync() on customerOrgGroupDetail.AsbitemId equals asbitem.Id select new { customerOrgGroupDetail, asbitem.Price }).ToList(); foreach (var item in customerOrgGroupList) { //当前分组的明细 var tempCustomerOrgGroupDetailList = customerOrgGroupDetailList.Where(m => m.customerOrgGroupDetail.CustomerOrgGroupId == item.Id).ToList(); if (tempCustomerOrgGroupDetailList.Count > 0) { var fzPrice = item.Price; //分组价格 var detailSumPrice = tempCustomerOrgGroupDetailList.Sum(s => s.Price); //明细汇总价格 decimal bl = Math.Round(fzPrice / detailSumPrice, 2); //折算比例 decimal tempSumZkP = 0M; foreach (var detailItem in tempCustomerOrgGroupDetailList) { var zkP = Math.Round(detailItem.Price * bl, 2); if (tempCustomerOrgGroupDetailList.IndexOf(detailItem) == tempCustomerOrgGroupDetailList.Count - 1) { //最后一个 decimal tempMM = tempSumZkP + zkP; if (tempMM > fzPrice) { //大于分组价格 var cj = tempMM - fzPrice; zkP = zkP - cj; } else if (tempMM < fzPrice) { //大于分组价格 var cj = fzPrice - tempMM; zkP = zkP + cj; } } detailItem.customerOrgGroupDetail.Price = zkP; tempSumZkP += zkP; } await _customerOrgGroupDetailRepository.UpdateManyAsync(tempCustomerOrgGroupDetailList.Select(s => s.customerOrgGroupDetail)); } } _logger.LogInformation($"平衡分组明细,处理数量{customerOrgGroupList.Count}"); } else { _logger.LogInformation("平衡分组明细,未处理"); } } #endregion #region 条码分组相关 ///// ///// 迁移标本类型数据 ///// ///// //private async Task TransferSampleTypeData() //{ // var count = await _sampleTypeRepository.GetCountAsync(); // if (count == 0) // { // var oldSampleTypeList = await oldDb.Ado.GetDataTableAsync("select specimen_type_id,specimen_type_name from specimen_type order by display_order asc"); // if (oldSampleTypeList.Rows.Count > 0) // { // foreach (DataRow row in oldSampleTypeList.Rows) // { // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) // { // //Guid sampleTypeId = GuidGenerator.Create(); // Guid sampleTypeId = StringConvertGuidHelper.GenerateURLUUID(row["specimen_type_id"].ToString()); // var data = new SampleType(sampleTypeId) // { // DisplayName = row["specimen_type_name"].ToString(), // DisplayOrder = oldSampleTypeList.Rows.IndexOf(row) + 1, // SimpleCode = LanguageConverter.GetPYSimpleCode(row["specimen_type_name"].ToString()) // }; // await _sampleTypeRepository.InsertAsync(data); // var fieldComparison = new FieldComparison // { // TableName = "sample_type", // FieldName = "id", // NewKeyValue = sampleTypeId.ToString(), // OldKeyValue = row["specimen_type_id"].ToString() // }; // await _fieldComparisonRepository.InsertAsync(fieldComparison); // await uow.CompleteAsync(); // } // } // } // _logger.LogInformation($"标本类型数据处理完毕,处理数量{oldSampleTypeList.Rows.Count}"); // } // else // { // _logger.LogInformation($"标本类型数据已存在,未处理"); // } //} ///// ///// 迁移条码分组数据 ///// ///// //[RemoteService(false)] //public async Task TransferSampleGroupData() //{ // var count = await _sampleGroupRepository.GetCountAsync(); // if (count == 0) // { // //获取一条条码类型的数据 // Guid defaultSampleTypeId = Guid.Empty; // var sampleTypeEnt = await _sampleTypeRepository.FirstOrDefaultAsync(); // if (sampleTypeEnt != null) // { // defaultSampleTypeId = sampleTypeEnt.Id; // } // if (defaultSampleTypeId != Guid.Empty) // { // var oldSampleGroupList = await oldDb.Ado.GetDataTableAsync("select * from vessels_type order by display_order"); // if (oldSampleGroupList.Rows.Count > 0) // { // foreach (DataRow row in oldSampleGroupList.Rows) // { // using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) // { // #region 转成成新的标本类型ID // Guid newSampleTypeId = defaultSampleTypeId; //默认取其他 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(); // Guid sampleGroupId = StringConvertGuidHelper.GenerateURLUUID(row["vessels_type_id"].ToString()); // 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, // SamplePrintCount = string.IsNullOrWhiteSpace(row["label_num"].ToString()) ? 0 : Convert.ToInt32(row["label_num"].ToString()), // SampleTypeId = newSampleTypeId // }; // await _sampleGroupRepository.InsertAsync(data); // var fieldComparison = new FieldComparison // { // TableName = "sample_group", // FieldName = "id", // NewKeyValue = sampleGroupId.ToString(), // OldKeyValue = row["vessels_type_id"].ToString() // }; // await _fieldComparisonRepository.InsertAsync(fieldComparison); // await uow.CompleteAsync(); // } // } // } // _logger.LogInformation($"条码分组数据处理完毕,处理数量{oldSampleGroupList.Rows.Count}"); // } // else // { // _logger.LogInformation($"条码类型未获取到默认数据,跳过条码分组数据处理"); // } // } // else // { // _logger.LogInformation("条码分组数据已存在,未处理"); // } //} ///// ///// 迁移条码分组明细数据 ///// ///// //[RemoteService(false)] //public async Task TransferSampleGroupDetailData() //{ // var count = await _sampleGroupDetailRepository.GetCountAsync(); // if (count == 0) // { // var oldSampleGroupDetailList = await oldDb.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 // }; // await _sampleGroupDetailRepository.InsertAsync(data); // await uow.CompleteAsync(); // } // } // } // _logger.LogInformation($"条码分组明细数据处理完毕,处理数量{oldSampleGroupDetailList.Rows.Count}"); // } // else // { // _logger.LogInformation("条码分组明细数据已存在,未处理"); // } //} #endregion #region 私有 /// /// 初始化 /// /// private async Task InitData() { #region 发票项目类别 defaultInvoiceItemTypeId = GuidGenerator.Create(); var invoiceItemTypeFirst = await _invoiceItemTypeRepository.FirstOrDefaultAsync(); if (invoiceItemTypeFirst == null) { var tempEntity = new InvoiceItemType(defaultInvoiceItemTypeId) { DisplayName = "检查费", DisplayOrder = 1, SimpleCode = "JCF" }; await _invoiceItemTypeRepository.InsertAsync(tempEntity, true); } else { defaultInvoiceItemTypeId = invoiceItemTypeFirst.Id; } #endregion #region 汇总项目类别 defaultCollectItemTypeId = GuidGenerator.Create(); var collectItemTypeFirst = await _collectItemTypeRepository.FirstOrDefaultAsync(); if (collectItemTypeFirst == null) { var tempEntity = new CollectItemType(defaultCollectItemTypeId) { DisplayName = "检查费", DisplayOrder = 1, SimpleCode = "JCF", InvoiceItemTypeId = defaultInvoiceItemTypeId }; await _collectItemTypeRepository.InsertAsync(tempEntity, true); } else { defaultCollectItemTypeId = collectItemTypeFirst.Id; } #endregion #region 企业性质 defaultOrgTypeId = GuidGenerator.Create(); var customerOrgTypeFirst = await _customerOrgTypeRepository.FirstOrDefaultAsync(); if (customerOrgTypeFirst == null) { var tempEntity = new CustomerOrgType(defaultOrgTypeId) { DisplayName = "其他", DisplayOrder = 1, SimpleCode = "QT" }; await _customerOrgTypeRepository.InsertAsync(tempEntity, true); } else { defaultOrgTypeId = customerOrgTypeFirst.Id; } #endregion #region 默认标本容器 defaultSampleContainerId = GuidGenerator.Create(); var sampleContainerFirst = await _sampleContainerRepository.FirstOrDefaultAsync(); if (sampleContainerFirst == null) { var tempEntity = new SampleContainer(defaultSampleContainerId) { DisplayName = "其他", DisplayOrder = 1, SimpleCode = "QT" }; await _sampleContainerRepository.InsertAsync(tempEntity, true); } else { defaultSampleContainerId = sampleContainerFirst.Id; } #endregion } /// /// 转换老系统适用性别 /// /// /// private char ConvertForSex(string forSexId) { if (forSexId == "1") { return 'M'; } else if (forSexId == "0") { return 'F'; } else { return 'A'; } } #endregion } }