优化同步

This commit is contained in:
tongfei
2023-12-26 10:39:29 +08:00
parent bcfcd9b5d3
commit 44971d1507
6 changed files with 99 additions and 18 deletions

View File

@@ -77,16 +77,21 @@ namespace WMS.Web.Domain.Services
/// <param name="dto"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
public Task<Result> Sync(OperateRequest dto, LoginInDto loginInfo)
public Task<Result> Sync(OperateRequest dto, LoginInDto loginInfo, bool isRepeatSync = true)
{
Task.Run(async () =>
var list = _inStockRepositories.GetList(dto.Ids).GetAwaiter().GetResult();
var isSuccess = true;
if (isRepeatSync)
{
var scope = _serviceScopeFactory.CreateScope();
var sc_inStockRepositories = scope.ServiceProvider.GetRequiredService<IInStockRepositories>();
var list = await sc_inStockRepositories.GetList(dto.Ids);
list = list.Where(w => w.SuccessSync == SyncStatus.Fail).ToList();
list.ForEach(f => f.RepeatSync());
isSuccess = _inStockRepositories.UpdateRange(list, true).GetAwaiter().GetResult();
}
Task.Run(async () =>
{
foreach (var entity in list)
{
var res = await this.PurchaseInStock(entity, loginInfo, scope);
var res = await this.PurchaseInStock(entity, loginInfo);
if (!res.IsSuccess)
_logger.LogError($"入库单同步失败:{res.Message}");
}
@@ -144,7 +149,7 @@ namespace WMS.Web.Domain.Services
{
OperateRequest oRequest = new OperateRequest();
oRequest.Ids.Add(entity.Id);
await Sync(oRequest, loginInfo);
await Sync(oRequest, loginInfo,false);
}
return Result.ReSuccess();
}
@@ -732,13 +737,14 @@ namespace WMS.Web.Domain.Services
/// <param name="entity"></param>
/// <param name="loginInfo"></param>
/// <returns></returns>
private async Task<Result> PurchaseInStock(InStock entity, LoginInDto loginInfo, IServiceScope scope)
private async Task<Result> PurchaseInStock(InStock entity, LoginInDto loginInfo)
{
var scope = _serviceScopeFactory.CreateScope();
var sc_InStockRepositories = scope.ServiceProvider.GetRequiredService<IInStockRepositories>();
if (entity.Type != InstockType.Purchase) return Result.ReSuccess();
if (entity.SuccessSync == SyncStatus.Success) return Result.ReSuccess();
var erpDetails = entity.ErpDetails.Where(w => w.SuccessSync == SyncStatus.Fail).ToList();
var erpDetails = entity.ErpDetails.Where(w => w.SuccessSync == SyncStatus.SyncIng).ToList();
foreach (var s in erpDetails)
{
var erp_details = entity.ErpDetails