Browse Source

data

master
wxd 2 weeks ago
parent
commit
ed39e17115
  1. 107
      src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs

107
src/Shentun.Peis.Application/CCTJExportDatas/CCTJLMPAppService.cs

@ -55,6 +55,7 @@ namespace Shentun.Peis.CCTJExportDatas
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
private readonly CustomerOrgManager _customerOrgManager;
private readonly IRepository<UserItemType> _userItemTypeRepository;
private readonly IRepository<AsbitemDetail> _asbitemDetailRepository;
public CCTJLMPAppService(
IRepository<Item, Guid> itemRepository,
@ -69,7 +70,8 @@ namespace Shentun.Peis.CCTJExportDatas
IRepository<AsbitemGuide> asbitemGuideRepository,
IRepository<CustomerOrg, Guid> customerOrgRepository,
CustomerOrgManager customerOrgManager,
IRepository<UserItemType> userItemTypeRepository)
IRepository<UserItemType> userItemTypeRepository,
IRepository<AsbitemDetail> 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
/// <param name="ItemIdFrom"></param>
/// <param name="ItemIdTo"></param>
/// <returns></returns>
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
/// <param name="AsbitemIdFrom"></param>
/// <param name="AsbitemIdTo"></param>
/// <returns></returns>
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
}
/// <summary>
/// 同步体检单位数据 一级
@ -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
/// <summary>
/// 处理用户科室存父级的问题
/// </summary>

Loading…
Cancel
Save