using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService;
using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.Services
{
///
/// 任务单的箱收货记录服务
///
public class InStockTaskBoxService: IInStockTaskBoxService
{
private readonly IInStockTaskBoxRepositories _inStockTaskBoxRepositories;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly ILogger _logger;
public InStockTaskBoxService(IInStockTaskBoxRepositories inStockTaskBoxRepositories, IBoxInventoryRepositories boxInventoryRepositories, ILogger logger)
{
_logger = logger;
_inStockTaskBoxRepositories = inStockTaskBoxRepositories;
_boxInventoryRepositories = boxInventoryRepositories;
}
///
/// 解绑-收货的箱子
///
///
///
///
public async Task UnBind(List boxIds, bool isTransaction = true)
{
var delete_ids = new List();
var t_boxIds = boxIds.Distinct().ToList();
var list= await _inStockTaskBoxRepositories.GetListBy(t_boxIds);
var boxInvetList = await _boxInventoryRepositories.GetList(t_boxIds);
foreach (var item in list)
{
var isHave= boxInvetList.Where(x => x.BoxId == item.BoxId).Any();
if (!isHave)
delete_ids.Add(item.Id);
}
if (delete_ids.Count != 0)
{
var isSuccess= await _inStockTaskBoxRepositories.DeleteRange(delete_ids, isTransaction);
if (!isSuccess)
return Result.ReFailure(ResultCodes.DateWriteError);
}
return Result.ReSuccess();
}
}
}