fix 恢复同步逻辑
This commit is contained in:
@@ -3,6 +3,4 @@ namespace Dlhis.Basic.Organization.Services;
|
||||
public interface ISapBusinessTripService : IScopeDependency
|
||||
{
|
||||
Task HandlerBusinessTripsByFactoryAsync(string factory);
|
||||
|
||||
Task HandleDirtyDataAsync(string factory);
|
||||
}
|
||||
@@ -204,74 +204,4 @@ public class SapBusinessTripService : ISapBusinessTripService
|
||||
.Select(x => x.DeviceCode)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task HandleDirtyDataAsync(string factory)
|
||||
{
|
||||
var tripGroup = await GetTripGroupAsync(factory);
|
||||
var deviceCodes = await GetTripGroupUnderDeviceCodesAsync(tripGroup.Code);
|
||||
|
||||
//确保是真实脏数据
|
||||
var yesterday = DateTime.Now.Date.AddDays(-2);
|
||||
try
|
||||
{
|
||||
var dirtyData = await _dbContext.Queryable<BusinessTripEntity>()
|
||||
.Where(x => x.Destination == factory)
|
||||
.Where(x => !SqlFunc.IsNullOrEmpty(x.Destination))
|
||||
.Where(x => x.Status == BusinessTripStatusEnumType.Generated)
|
||||
.Where(x => x.BeginDate < yesterday)
|
||||
.Select(x => new
|
||||
{
|
||||
num = SqlFunc.RowNumber(SqlFunc.Desc(x.BeginDate), x.Code),
|
||||
x.Id, x.Code, x.BeginDate
|
||||
}).MergeTable()
|
||||
.Where(x => x.num == 1)
|
||||
.ToListAsync();
|
||||
|
||||
|
||||
foreach (var item in dirtyData)
|
||||
{
|
||||
try
|
||||
{
|
||||
var currentGainfo = await _dbContext.Queryable<GainfoLeaveEntity>()
|
||||
.Where(x => x.Code == item.Code)
|
||||
.Select(x => new { x.No, x.Code })
|
||||
.SingleAsync();
|
||||
|
||||
if (currentGainfo == null)
|
||||
{
|
||||
continue;
|
||||
// currentGainfo = await _dbContext.Queryable<GainfoEntity>()
|
||||
// .Where(x => x.Code == item.Code)
|
||||
// .Select(x => new { x.No, x.Code })
|
||||
// .SingleAsync();
|
||||
}
|
||||
|
||||
await _dbContext.Updateable<DevicePermissionEntity>()
|
||||
.SetColumns(x => x.IsDeleted == true)
|
||||
.Where(x => x.AssignType == AssignTypeEnumType.User)
|
||||
.Where(x => x.AssignValue == currentGainfo.No)
|
||||
.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group)
|
||||
.Where(x => x.UniqueValue == tripGroup.Code)
|
||||
.Where(x => x.Type == tripGroup.Type)
|
||||
.Where(x => x.TenantId == factory)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
await _dbContext.Updateable<BusinessTripEntity>()
|
||||
.SetColumns(x => x.Status == BusinessTripStatusEnumType.Deleted)
|
||||
.Where(x => x.Id == item.Id)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
await _gainfoPermissionService.ResetPermissionsAsync(currentGainfo.No, DeviceTaskEnumType.Delete, deviceCodes, "出差遗留脏数据删除");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "处理出差遗留脏数据删除失败:工号{code}", item.Code);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
_logger.LogError(e, "处理{factory}遗留出差数据失败:{message}", factory, e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user