Browse Source

执行 kitting任务

dev_DY_CC
郑勃旭 1 year ago
parent
commit
ef6aa5d4b8
  1. 18
      be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType - 复制.cs
  2. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/DTOs/KittingIssueJobDTO.cs
  3. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/Inputs/KittingIssueJobEditInput.cs
  4. 1
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/DTOs/KittingIssueNoteDTO.cs
  5. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteEditInput.cs
  6. 2
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteImportInput.cs
  7. 191
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs
  8. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJob.cs
  9. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/KittingIssueNotes/KittingIssueNote.cs
  10. 9
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/KittingIssueJobAutoMapperProfile.cs
  11. 4
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/KittingIssueJobEventHandler.cs
  12. 3
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/KittingIssueRequestEventHandler.cs

18
be/Modules/Shared/src/Win_in.Sfs.Shared.Domain.Shared/Enums/Store/EnumIssueRequestType - 复制.cs

@ -0,0 +1,18 @@
using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
public enum EnumIssueSendType
{
None = 0,
/// <summary>
/// 按数量
/// </summary>
[Display(Name = "按数量")] QtyType = 1,
/// <summary>
/// 按箱数
/// </summary>
[Display(Name = "按箱数")] BoxQtyType = 2
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/DTOs/KittingIssueJobDTO.cs

@ -34,4 +34,6 @@ public class KittingIssueJobDTO : SfsJobDTOBase<KittingIssueJobDetailDTO>
/// </summary>
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Jobs/IssueJobs/KittingIssueJobs/Inputs/KittingIssueJobEditInput.cs

@ -64,5 +64,7 @@ public class KittingIssueJobEditInput : SfsJobCreateUpdateInputBase, ISfsJobCrea
/// </summary>
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
#endregion
}

1
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/DTOs/KittingIssueNoteDTO.cs

@ -44,4 +44,5 @@ public class KittingIssueNoteDTO : SfsStoreDTOBase<KittingIssueNoteDetailDTO>, I
[Display(Name = "确认时间")]
public DateTime? ConfirmTime { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteEditInput.cs

@ -52,5 +52,7 @@ public class KittingIssueNoteEditInput : SfsStoreCreateOrUpdateInputBase
/// </summary>
[Display(Name = "使用在途库")]
public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
#endregion
}

2
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/IssueNotes/KittingIssueNotes/Inputs/KittingIssueNoteImportInput.cs

@ -31,4 +31,6 @@ public class KittingIssueNoteImportInput : SfsStoreImportInputBase, IHasJobNumbe
[Display(Name = "使用在途库")]
[Required(ErrorMessage = "{0}是必填项")]
public bool UseOnTheWayLocation { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
}

191
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJobAppService.cs

@ -11,10 +11,12 @@ using Microsoft.AspNetCore.Mvc;
using SQLitePCL;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.ObjectMapping;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Basedata.Domain.Shared;
using Win_in.Sfs.Shared.Domain;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Wms.Store.Application.Contracts;
using Win_in.Sfs.Wms.Store.Domain;
using Win_in.Sfs.Wms.Store.Domain.Shared;
@ -32,14 +34,16 @@ public class KittingIssueJobAppService
private readonly IKittingIssueJobManager _kittingIssueJobManager;
private readonly ILocationAppService _locationAppService;
private readonly ITransferLibJobAppService _transferLibJobAppService;
private readonly IKittingIssueNoteAppService _kittingIssueNoteAppService;
public KittingIssueJobAppService(
IKittingIssueJobRepository repository, IKittingIssueJobManager kittingIssueJobManager,
ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService) : base(repository, kittingIssueJobManager)
ILocationAppService locationAppService, ITransferLibJobAppService transferLibJobAppService, IKittingIssueNoteAppService kittingIssueNoteAppService) : base(repository, kittingIssueJobManager)
{
_kittingIssueJobManager = kittingIssueJobManager;
_locationAppService = locationAppService;
_transferLibJobAppService = transferLibJobAppService;
_kittingIssueNoteAppService = kittingIssueNoteAppService;
}
[HttpPost("add-many")]
@ -48,6 +52,7 @@ public class KittingIssueJobAppService
foreach (var input in inputs)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false);
}
return await base.CreateManyAsync(inputs).ConfigureAwait(false);
@ -57,56 +62,24 @@ public class KittingIssueJobAppService
public override async Task<KittingIssueJobDTO> CreateAsync(KittingIssueJobEditInput input)
{
await CheckMinRowAndSetStatusAsync(input).ConfigureAwait(false);
await CheckDimensionalStorehouseAsync(input).ConfigureAwait(false);
return await base.CreateAsync(input).ConfigureAwait(false);
}
/// <summary>
/// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task CheckMinRowAndSetStatusAsync(KittingIssueJobEditInput input)
[HttpPost("invalid")]
public override async Task CancelAsync(Guid id)
{
var jobDetailInputdetail = input.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false);
if (loctionDto.Type==EnumLocationType.RAW&&loctionDto.RowCode != 1)
var injectionJob = await _repository.GetAsync(id).ConfigureAwait(false);
if (injectionJob == null)
{
input.JobStatus = EnumJobStatus.Wait;
jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
throw new UserFriendlyException($"未找到ID为 {id} 的任务");
}
await _kittingIssueJobManager.CancelAsync(injectionJob).ConfigureAwait(false);
}
[HttpPost("cancel-by-request/{injectionNumber}")]
public virtual async Task CancelByMaterialRequestAsync(string injectionNumber)
{
@ -118,18 +91,6 @@ public class KittingIssueJobAppService
}
}
[HttpPost("invalid")]
public override async Task CancelAsync(Guid id)
{
var injectionJob = await _repository.GetAsync(id).ConfigureAwait(false);
if (injectionJob == null)
{
throw new UserFriendlyException($"未找到ID为 {id} 的任务");
}
await _kittingIssueJobManager.CancelAsync(injectionJob).ConfigureAwait(false);
}
[HttpPost("by-request-number/{requestNumber}")]
public virtual async Task<List<KittingIssueJobDTO>> GetByRequestNumberAsync(string requestNumber)
{
@ -138,6 +99,11 @@ public class KittingIssueJobAppService
return ObjectMapper.Map<List<KittingIssueJob>, List<KittingIssueJobDTO>>(entitys);
}
/// <summary>
/// 库移回调
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
[HttpPost("Do-Call-Back")]
public async Task DoTransferLibCallbackAsync(TransferLibJobDTO dto)
{
@ -182,4 +148,121 @@ public class KittingIssueJobAppService
return;
}
/// <summary>
/// 执行任务明细
/// </summary>
/// <returns></returns>
[HttpPost("ExecuteDetail/{masterId}")]
public async Task ExecuteDetailAsync(Guid masterId,Guid detailId, KittingIssueJobDetailDTO issueJobDetailDto)
{
var kittingIssueJob= await _repository.GetAsync(masterId).ConfigureAwait(false);
var kittingIssueJobDto=ObjectMapper.Map<KittingIssueJob, KittingIssueJobDTO>(kittingIssueJob);
kittingIssueJobDto.Details = new List<KittingIssueJobDetailDTO>() { issueJobDetailDto };
var kittingIssueNoteEditInput=await BuildKittingIssueNoteAsync(kittingIssueJobDto).ConfigureAwait(false);
await _kittingIssueNoteAppService.CreateAsync(kittingIssueNoteEditInput).ConfigureAwait(false);
kittingIssueJobDto = ObjectMapper.Map<KittingIssueJob, KittingIssueJobDTO>(kittingIssueJob);
if (kittingIssueJob.EnumIssueSendType == EnumIssueSendType.QtyType)//按箱叫料 因为任务只有1箱 所以可以直接完成
{
await CompleteAsync(masterId, kittingIssueJobDto).ConfigureAwait(false);
}
else
{
var detail = kittingIssueJob.Details.First(p=>p.Id==issueJobDetailDto.Id);
if (issueJobDetailDto.HandledToQty >= detail.RequestQty)
{
await CompleteAsync(masterId, kittingIssueJobDto).ConfigureAwait(false);
}
}
await _kittingIssueNoteAppService.CreateAsync(kittingIssueNoteEditInput).ConfigureAwait(false);
}
#region 私有
/// <summary>
/// 创建补料记录实体
/// </summary>
/// <param name="kittingIssueJobDto"></param>
/// <returns></returns>
private async Task<KittingIssueNoteEditInput> BuildKittingIssueNoteAsync(KittingIssueJobDTO kittingIssueJobDto)
{
var kittingIssueNoteCreateInput = ObjectMapper.Map<KittingIssueJobDTO, KittingIssueNoteEditInput>(kittingIssueJobDto);
kittingIssueNoteCreateInput.JobNumber = kittingIssueJobDto.Number;
await Task.CompletedTask.ConfigureAwait(false);
return kittingIssueNoteCreateInput;
}
/// <summary>
/// 判断是不是在最底层 如果不是则把状态变更为等待 并把库移推荐的From和To赋值
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task CheckMinRowAndSetStatusAsync(KittingIssueJobEditInput input)
{
var jobDetailInputdetail = input.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false);
if (loctionDto.Type == EnumLocationType.RAW && loctionDto.RowCode != 1)
{
input.JobStatus = EnumJobStatus.Wait;
jobDetailInputdetail.TransferLibFromArriveDate = jobDetailInputdetail.RecommendFromArriveDate;
jobDetailInputdetail.TransferLibFromContainerCode = jobDetailInputdetail.RecommendFromContainerCode;
jobDetailInputdetail.TransferLibFromExpireDate = jobDetailInputdetail.RecommendFromExpireDate;
jobDetailInputdetail.TransferLibFromLocationArea = jobDetailInputdetail.RecommendFromLocationArea;
jobDetailInputdetail.TransferLibFromLocationCode = jobDetailInputdetail.RecommendFromLocationCode;
jobDetailInputdetail.TransferLibFromLocationErpCode = jobDetailInputdetail.RecommendFromLocationErpCode;
jobDetailInputdetail.TransferLibFromLocationGroup = jobDetailInputdetail.RecommendFromLocationGroup;
jobDetailInputdetail.TransferLibFromLot = jobDetailInputdetail.RecommendFromLot;
jobDetailInputdetail.TransferLibFromPackingCode = jobDetailInputdetail.RecommendFromPackingCode;
jobDetailInputdetail.TransferLibFromProduceDate = jobDetailInputdetail.RecommendFromProduceDate;
jobDetailInputdetail.TransferLibFromQty = jobDetailInputdetail.RecommendFromQty;
jobDetailInputdetail.TransferLibFromSupplierBatch = jobDetailInputdetail.RecommendFromSupplierBatch;
jobDetailInputdetail.TransferLibFromWarehouseCode = jobDetailInputdetail.RecommendFromWarehouseCode;
jobDetailInputdetail.TransferLibToArriveDate = jobDetailInputdetail.RecommendToArriveDate;
jobDetailInputdetail.TransferLibToContainerCode = jobDetailInputdetail.RecommendToContainerCode;
jobDetailInputdetail.TransferLibToExpireDate = jobDetailInputdetail.RecommendToExpireDate;
jobDetailInputdetail.TransferLibToLocationArea = jobDetailInputdetail.RecommendToLocationArea;
jobDetailInputdetail.TransferLibToLocationCode = jobDetailInputdetail.RecommendToLocationCode;
jobDetailInputdetail.TransferLibToLocationErpCode = jobDetailInputdetail.RecommendToLocationErpCode;
jobDetailInputdetail.TransferLibToLocationGroup = jobDetailInputdetail.RecommendToLocationGroup;
jobDetailInputdetail.TransferLibToLot = jobDetailInputdetail.RecommendToLot;
jobDetailInputdetail.TransferLibToPackingCode = jobDetailInputdetail.RecommendToPackingCode;
jobDetailInputdetail.TransferLibToProduceDate = jobDetailInputdetail.RecommendToProduceDate;
jobDetailInputdetail.TransferLibToQty = jobDetailInputdetail.RecommendToQty;
jobDetailInputdetail.TransferLibToSupplierBatch = jobDetailInputdetail.RecommendToSupplierBatch;
jobDetailInputdetail.TransferLibToWarehouseCode = jobDetailInputdetail.RecommendToWarehouseCode;
}
}
/// <summary>
/// 判断是不是在立体库
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
private async Task CheckDimensionalStorehouseAsync(KittingIssueJobEditInput input)
{
var jobDetailInputdetail = input.Details.FirstOrDefault();
var loctionDto = await _locationAppService.GetByCodeAsync(jobDetailInputdetail.RecommendFromLocationCode)
.ConfigureAwait(false);
if (loctionDto.Type == EnumLocationType.DimensionalStorehouse)
{
input.JobStatus = EnumJobStatus.Wait;
//todo 调用立库接口
}
}
#endregion
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Jobs/IssueJobs/KittingIssueJobs/KittingIssueJob.cs

@ -22,27 +22,23 @@ public class KittingIssueJob : SfsJobAggregateRootBase<KittingIssueJobDetail>
/// <summary>
/// 生产线
/// </summary>
[IgnoreUpdate]
public string ProdLine { get; set; }
/// <summary>
/// 要料单号
/// </summary>
[IgnoreUpdate]
public string KittingRequestNumber { get; set; }
/// <summary>
/// 使用在途库
/// </summary>
[Display(Name = "使用在途库")]
[IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; }
/// <summary>
/// 任务明细
/// </summary>
[IgnoreUpdate]
public override List<KittingIssueJobDetail> Details { get; set; } = new List<KittingIssueJobDetail>();
public EnumIssueSendType EnumIssueSendType { get; set; }
}

6
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Domain/Notes/IssueNotes/KittingIssueNotes/KittingIssueNote.cs

@ -21,10 +21,8 @@ public class KittingIssueNote : SfsStoreAggregateRootBase<KittingIssueNoteDetail
/// <summary>
/// 明细列表
/// </summary>
[IgnoreUpdate]
public override List<KittingIssueNoteDetail> Details { get; set; } = new List<KittingIssueNoteDetail>();
[IgnoreUpdate]
public string RequestNumber { get; set; }
/// <summary>
/// 叫料类型
@ -35,14 +33,12 @@ public class KittingIssueNote : SfsStoreAggregateRootBase<KittingIssueNoteDetail
/// <summary>
/// 使用在途库
/// </summary>
[IgnoreUpdate]
public bool UseOnTheWayLocation { get; set; }
/// <summary>
/// 确认时间
/// </summary>
[Display(Name = "确认时间")]
[IgnoreUpdate]
public DateTime? ConfirmTime { get; set; }
/// <summary>
@ -51,6 +47,8 @@ public class KittingIssueNote : SfsStoreAggregateRootBase<KittingIssueNoteDetail
[Display(Name = "已确认")]
public bool Confirmed { get; set; }
public EnumIssueSendType EnumIssueSendType { get; set; }
public void Confirm(DateTime confirmTime)
{

9
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/AutoMapperProfiles/Jobs/KittingIssueJobAutoMapperProfile.cs

@ -33,5 +33,14 @@ public partial class StoreEventAutoMapperProfile : Profile
;
CreateMap<KittingIssueJobDetail, KittingIssueNoteDetailInput>()
;
CreateMap<KittingIssueJobDTO, KittingIssueNoteEditInput>()
.ForMember(x => x.RequestNumber, y => y.MapFrom(d => d.KittingRequestNumber))
.Ignore(x => x.Confirmed)
.Ignore(x => x.JobNumber)
.Ignore(x => x.ActiveDate)
;
CreateMap<KittingIssueJobDetailDTO, KittingIssueNoteDetailInput>()
;
}
}

4
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Jobs/KittingIssueJobEventHandler.cs

@ -41,9 +41,7 @@ public class KittingIssueJobEventHandler :
[UnitOfWork]
public virtual async Task HandleEventAsync(SfsCompletedEntityEventData<KittingIssueJob> eventData)
{
var entity = eventData.Entity;
var kittingIssueNote = await BuildKittingIssueNoteAsync(entity).ConfigureAwait(false);
await _kittingIssueNoteAppService.CreateAsync(kittingIssueNote).ConfigureAwait(false);
await Task.CompletedTask.ConfigureAwait(false);
}
/// <summary>

3
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Event/Requests/KittingIssueRequestEventHandler.cs

@ -8,6 +8,7 @@ using Volo.Abp;
using Volo.Abp.EventBus;
using Win_in.Sfs.Basedata.Application.Contracts;
using Win_in.Sfs.Shared.Domain.Shared;
using Win_in.Sfs.Shared.Domain.Shared.Enums.Store;
using Win_in.Sfs.Shared.Event;
using Win_in.Sfs.Wms.Inventory.Application.Contracts;
using Win_in.Sfs.Wms.Store.Application.Contracts;
@ -200,6 +201,7 @@ public class KittingIssueRequestEventHandler
job.WarehouseCode = requestDetailInput.ToWarehouseCode;
job.Worker = kittingIssueRequest.Worker;
job.KittingRequestNumber = kittingIssueRequest.Number;
job.EnumIssueSendType = EnumIssueSendType.QtyType;
await Task.CompletedTask.ConfigureAwait(false);
@ -406,6 +408,7 @@ public class KittingIssueRequestEventHandler
job.WarehouseCode = kittingIssueRequestDetail.ToWarehouseCode;
job.Worker = kittingIssueRequest.Worker;
job.KittingRequestNumber = kittingIssueRequest.Number;
job.EnumIssueSendType = EnumIssueSendType.BoxQtyType;
job.Details.Add(await BuildKittingIssueJobDetailWithBoxQtyTypeAsync(kittingIssueRequestDetail, balanceDtos)
.ConfigureAwait(false));

Loading…
Cancel
Save