|
@ -1,9 +1,14 @@ |
|
|
using System.Threading.Tasks; |
|
|
using System.Threading.Tasks; |
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
using Microsoft.AspNetCore.Authorization; |
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
|
|
using Win_in.Sfs.Wms.Inventory.Application.Contracts; |
|
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
|
using Win_in.Sfs.Wms.Store.Application.Contracts; |
|
|
using Win_in.Sfs.Wms.Store.Domain; |
|
|
using Win_in.Sfs.Wms.Store.Domain; |
|
|
using Win_in.Sfs.Wms.Store.Domain.Shared; |
|
|
using Win_in.Sfs.Wms.Store.Domain.Shared; |
|
|
|
|
|
using System.Linq; |
|
|
|
|
|
using Volo.Abp; |
|
|
|
|
|
using Win_in.Sfs.Wms.Inventory.Domain.Acl.Location; |
|
|
|
|
|
using Win_in.Sfs.Shared.Domain.Shared; |
|
|
|
|
|
|
|
|
namespace Win_in.Sfs.Wms.Store.Application; |
|
|
namespace Win_in.Sfs.Wms.Store.Application; |
|
|
|
|
|
|
|
@ -25,11 +30,16 @@ public class NoOkConvertOkNoteAppService : |
|
|
INoOkConvertOkNoteAppService |
|
|
INoOkConvertOkNoteAppService |
|
|
{ |
|
|
{ |
|
|
private readonly INoOkConvertOkNoteManager _nOOkConvertOKNoteManager; |
|
|
private readonly INoOkConvertOkNoteManager _nOOkConvertOKNoteManager; |
|
|
|
|
|
private readonly IBalanceAppService _balanceAppService; |
|
|
|
|
|
private readonly ILocationAclService _locationAclService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public NoOkConvertOkNoteAppService( |
|
|
public NoOkConvertOkNoteAppService( |
|
|
INoOkConvertOkNoteRepository repository, INoOkConvertOkNoteManager nOOkConvertOkNoteManager) : base(repository) |
|
|
INoOkConvertOkNoteRepository repository, INoOkConvertOkNoteManager nOOkConvertOkNoteManager, IBalanceAppService balanceAppService, ILocationAclService locationAclService) : base(repository) |
|
|
{ |
|
|
{ |
|
|
_nOOkConvertOKNoteManager = nOOkConvertOkNoteManager; |
|
|
_nOOkConvertOKNoteManager = nOOkConvertOkNoteManager; |
|
|
|
|
|
_balanceAppService = balanceAppService; |
|
|
|
|
|
_locationAclService = locationAclService; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// <summary>
|
|
@ -40,7 +50,20 @@ public class NoOkConvertOkNoteAppService : |
|
|
[HttpPost("")] |
|
|
[HttpPost("")] |
|
|
//[Authorize(NoOkConvertOkNotePermissions.Create)]
|
|
|
//[Authorize(NoOkConvertOkNotePermissions.Create)]
|
|
|
public override async Task<NoOkConvertOkNoteDTO> CreateAsync(NoOkConvertOkNoteEditInput input) |
|
|
public override async Task<NoOkConvertOkNoteDTO> CreateAsync(NoOkConvertOkNoteEditInput input) |
|
|
{ |
|
|
{ |
|
|
|
|
|
#region 判断隔离库中是否有库存
|
|
|
|
|
|
var locationInfo = await _locationAclService.GetFirstByTypeAsync(EnumLocationType.HOLD).ConfigureAwait(false); |
|
|
|
|
|
|
|
|
|
|
|
var packingCodeLst = input.Details.Select(itm => itm.ToPackingCode).ToList(); |
|
|
|
|
|
var balanceLst = await _balanceAppService.GetListByPackingCodesAsync(packingCodeLst).ConfigureAwait(false); |
|
|
|
|
|
bool allOK = (balanceLst.Count == packingCodeLst.Count |
|
|
|
|
|
&& balanceLst.All(itm => itm.LocationCode.ToUpper() == locationInfo.Code && itm.Status == EnumInventoryStatus.NOK)); |
|
|
|
|
|
if (allOK == false) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new UserFriendlyException("隔离库中不存在如下箱码(或者其中之一)" + string.Join(",", packingCodeLst)); |
|
|
|
|
|
} |
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
var createEntity = ObjectMapper.Map<NoOkConvertOkNoteEditInput, NoOkConvertOkNote>(input); |
|
|
var createEntity = ObjectMapper.Map<NoOkConvertOkNoteEditInput, NoOkConvertOkNote>(input); |
|
|
|
|
|
|
|
|
var entity = await _nOOkConvertOKNoteManager.CreateAsync(createEntity).ConfigureAwait(false); |
|
|
var entity = await _nOOkConvertOKNoteManager.CreateAsync(createEntity).ConfigureAwait(false); |
|
|