diff --git a/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs b/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs index a242782..0e312f9 100644 --- a/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs +++ b/src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs @@ -55,6 +55,7 @@ namespace Shentun.Peis.CCTJExportDatas private readonly IRepository _customerOrgRepository; private readonly CustomerOrgManager _customerOrgManager; private readonly IRepository _userItemTypeRepository; + private readonly IRepository _asbitemDetailRepository; public CCTJLMPAppService( IRepository itemRepository, @@ -69,7 +70,8 @@ namespace Shentun.Peis.CCTJExportDatas IRepository asbitemGuideRepository, IRepository customerOrgRepository, CustomerOrgManager customerOrgManager, - IRepository userItemTypeRepository) + IRepository userItemTypeRepository, + IRepository asbitemDetailRepository) { _itemRepository = itemRepository; _unitOfWorkManager = unitOfWorkManager; @@ -84,6 +86,7 @@ namespace Shentun.Peis.CCTJExportDatas _customerOrgRepository = customerOrgRepository; _customerOrgManager = customerOrgManager; _userItemTypeRepository = userItemTypeRepository; + _asbitemDetailRepository = asbitemDetailRepository; } @@ -94,20 +97,32 @@ namespace Shentun.Peis.CCTJExportDatas /// /// /// - public async Task SyncItem(string ItemIdFrom, string ItemIdTo) + public async Task SyncItem() { - if (string.IsNullOrWhiteSpace(ItemIdFrom) || string.IsNullOrWhiteSpace(ItemIdTo)) + var fieldComparisonItemList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "item"); + + #region 检测是否有手动增加的项目 + + var query = (from item in await _itemRepository.GetQueryableAsync() + join fieldComparison in (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "item") on item.Id.ToString() equals fieldComparison.NewKeyValue into fieldComparisonTemp + from fieldComparisonEmptyHave in fieldComparisonTemp.DefaultIfEmpty() + where fieldComparisonEmptyHave == null + select item.DisplayName).ToList(); + + if (query.Any()) { - _logger.LogInformation($"同步项目数据方法,参数不正确"); + throw new UserFriendlyException($"存在手动添加的项目:【{string.Join(",", query)}】"); } - var oldItemList = await oldDb.Ado.GetDataTableAsync($"select * from item where item_id>'{ItemIdFrom}' and item_id<'{ItemIdTo}' order by display_order "); + #endregion + + var oldItemList = await oldDb.Ado.GetDataTableAsync($"select * from item order by display_order "); if (oldItemList.Rows.Count > 0) { foreach (DataRow row in oldItemList.Rows) { - var isCZ = await _itemRepository.FirstOrDefaultAsync(f => f.DisplayName == row["item_name"].ToString()); + var isCZ = fieldComparisonItemList.FirstOrDefault(f => f.OldKeyValue == row["item_id"].ToString()); if (isCZ == null) { @@ -238,12 +253,14 @@ namespace Shentun.Peis.CCTJExportDatas await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); + + _logger.LogInformation($"添加项目=>{row["item_name"]}"); } } - else - { - _logger.LogInformation($"项目{row["item_name"]}数据已存在,跳过处理"); - } + //else + //{ + // _logger.LogInformation($"项目{row["item_name"]}数据已存在,跳过处理"); + //} } _logger.LogInformation($"同步项目数据处理完毕,处理数量{oldItemList.Rows.Count}"); @@ -263,19 +280,32 @@ namespace Shentun.Peis.CCTJExportDatas /// /// /// - public async Task SyncAsbitem(string AsbitemIdFrom, string AsbitemIdTo) + public async Task SyncAsbitem() { - if (string.IsNullOrWhiteSpace(AsbitemIdFrom) || string.IsNullOrWhiteSpace(AsbitemIdTo)) + var fieldComparisonAsbitemList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "asbitem"); + var fieldComparisonItemList = await _fieldComparisonRepository.GetListAsync(m => m.TableName == "item"); + + #region 检测是否有手动增加的项目 + + var query = (from asbitem in await _asbitemRepository.GetQueryableAsync() + join fieldComparison in (await _fieldComparisonRepository.GetQueryableAsync()).Where(m => m.TableName == "asbitem") on asbitem.Id.ToString() equals fieldComparison.NewKeyValue into fieldComparisonTemp + from fieldComparisonEmptyHave in fieldComparisonTemp.DefaultIfEmpty() + where fieldComparisonEmptyHave == null + select asbitem.DisplayName).ToList(); + + if (query.Any()) { - _logger.LogInformation($"同步组合项目数据方法,参数不正确"); + throw new UserFriendlyException($"存在手动添加的组合项目:【{string.Join(",", query)}】"); } - var oldAsbitemList = await oldDb.Ado.GetDataTableAsync($"select * from asbitem where asbitem_id>'{AsbitemIdFrom}' and asbitem_id<'{AsbitemIdTo}' order by display_order "); + #endregion + + var oldAsbitemList = await oldDb.Ado.GetDataTableAsync($"select * from asbitem order by display_order "); if (oldAsbitemList.Rows.Count > 0) { foreach (DataRow row in oldAsbitemList.Rows) { - var isCZ = await _asbitemRepository.FirstOrDefaultAsync(f => f.DisplayName == row["asbitem_name"].ToString()); + var isCZ = fieldComparisonAsbitemList.FirstOrDefault(f => f.OldKeyValue == row["asbitem_id"].ToString()); if (isCZ == null) { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) @@ -390,6 +420,30 @@ namespace Shentun.Peis.CCTJExportDatas #endregion + + #region 组合项目明细 + + var oldAsbitemDetailList = await oldDb.Ado.GetDataTableAsync($"select * from asbitem_detail where asbitem_id={row["asbitem_id"].ToString()}"); + if (oldAsbitemDetailList.Rows.Count > 0) + { + foreach (DataRow oldAsbitemDetail in oldAsbitemDetailList.Rows) + { + + var oldItem = fieldComparisonItemList.FirstOrDefault(f => f.OldKeyValue == oldAsbitemDetail["item_id"].ToString()); + + var dataDetail = new AsbitemDetail + { + AsbitemId = asbitemId, + ItemId = Guid.Parse(oldItem.NewKeyValue) + }; + + await _asbitemDetailRepository.InsertAsync(dataDetail); + + } + } + + #endregion + var fieldComparison = new FieldComparison { TableName = "asbitem", @@ -401,12 +455,14 @@ namespace Shentun.Peis.CCTJExportDatas await _fieldComparisonRepository.InsertAsync(fieldComparison); await uow.CompleteAsync(); + + _logger.LogInformation($"添加组合项目=>{row["asbitem_name"]}"); } } - else - { - _logger.LogInformation($"组合项目{row["asbitem_name"]}数据已存在,跳过处理"); - } + //else + //{ + // _logger.LogInformation($"组合项目{row["asbitem_name"]}数据已存在,跳过处理"); + //} } @@ -421,7 +477,7 @@ namespace Shentun.Peis.CCTJExportDatas } - + /// /// 同步体检单位数据 一级 @@ -445,7 +501,7 @@ namespace Shentun.Peis.CCTJExportDatas { using (var uow = _unitOfWorkManager.Begin(requiresNew: true, isTransactional: true)) { - // Guid customerOrgId = GuidGenerator.Create(); + // Guid customerOrgId = GuidGenerator.Create(); Guid customerOrgId = StringConvertGuidHelper.GenerateURLUUID(row["org_id"].ToString()); if (row["org_id"].ToString() == "00000") { @@ -567,7 +623,7 @@ namespace Shentun.Peis.CCTJExportDatas var isCZ = await _customerOrgRepository.FirstOrDefaultAsync(f => f.ParentId == parentId && f.DisplayName == row["org_name"].ToString()); if (isCZ == null) { - // Guid customerOrgId = GuidGenerator.Create(); + // Guid customerOrgId = GuidGenerator.Create(); Guid customerOrgId = StringConvertGuidHelper.GenerateURLUUID(row["org_id"].ToString()); #region 备注 导入联系人姓名、电话 string remark = ""; @@ -685,7 +741,7 @@ namespace Shentun.Peis.CCTJExportDatas var isCZ = await _customerOrgRepository.FirstOrDefaultAsync(f => f.ParentId == parentId && f.DisplayName == row["org_name"].ToString()); if (isCZ == null) { - // Guid customerOrgId = GuidGenerator.Create(); + // Guid customerOrgId = GuidGenerator.Create(); Guid customerOrgId = StringConvertGuidHelper.GenerateURLUUID(row["org_id"].ToString()); #region 备注 导入联系人姓名、电话 string remark = ""; @@ -776,11 +832,6 @@ namespace Shentun.Peis.CCTJExportDatas - - - - - /// /// 处理用户科室存父级的问题 ///