@ -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 . DisplayNam e = = row [ "item_name " ] . ToString ( ) ) ;
var isCZ = fieldComparisonItemList . FirstOrDefault ( f = > f . OldKeyValu e = = 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 . OldKeyValu e = = 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"]}数据已存在,跳过处理");
//}
}
@ -776,11 +832,6 @@ namespace Shentun.Peis.CCTJExportDatas
/// <summary>
/// 处理用户科室存父级的问题
/// </summary>