Browse Source

加方法,拆箱,预计出表存在数据时不允许办理

dev_DY_CC
刘云峰 1 year ago
parent
commit
6c468f0d6b
  1. 6
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/ExpectOuts/IExpectOutAppService.cs
  2. 33
      be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs
  3. 12
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs
  4. 48
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

6
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application.Contracts/ExpectOuts/IExpectOutAppService.cs

@ -37,4 +37,10 @@ public interface IExpectOutAppService
/// <returns></returns>
Task<List<ExpectOutDTO>> SaveDetail_SplitPackingAsync(SplitPacking_UpdateDetailInput input);
/// <summary>
/// 根据任务号、箱码、数量、库位取预计出列表
/// </summary>
/// <returns></returns>
Task<List<ExpectOutDTO>> GetListByJobNumberAsync(SplitPacking_UpdateDetailInput input);
}

33
be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/ExpectOuts/ExpectOutAppService.cs

@ -189,12 +189,16 @@ public class ExpectOutAppService
[HttpPost("save-detail-split-packing")]
public virtual async Task<List<ExpectOutDTO>> SaveDetail_SplitPackingAsync(SplitPacking_UpdateDetailInput input)
{
var obj = await _repository.FindAsync(p => p.JobNumber == input.Number && p.PackingCode == input.FromPackingCode && p.Qty == input.FromQty && p.LocationCode == input.FromLocationCode).ConfigureAwait(false);
if (obj == null)
var lst = await ListByJobNumberAsync(input).ConfigureAwait(false);
if (lst == null || lst.Count == 0)
{
throw new UserFriendlyException($"预计出表没有数据:JobNumber={input.Number}|PackingCode={input.FromPackingCode}|Qty={input.FromQty}|LocationCode={input.FromLocationCode}");
}
if (lst.Count > 1)
{
throw new UserFriendlyException($"预计出表取到多条数据,应该取到一条数据:JobNumber={input.Number}|PackingCode={input.FromPackingCode}|Qty={input.FromQty}|LocationCode={input.FromLocationCode}");
}
var obj = lst[0];
//插入目标箱
var newObj = CommonHelper.CloneObj(obj);
newObj.SetId(GuidGenerator.Create());
@ -204,13 +208,28 @@ public class ExpectOutAppService
//修改源箱
obj.Qty = input.FromQty - input.ToQty;
var updRet = await _repository.UpdateAsync(obj).ConfigureAwait(false);
List<ExpectOut> lst = new List<ExpectOut>();
lst.Add(insRet);
lst.Add(updRet);
var ret = ObjectMapper.Map<List<ExpectOut>, List<ExpectOutDTO>>(lst);
List<ExpectOut> list = new List<ExpectOut>();
list.Add(insRet);
list.Add(updRet);
var ret = ObjectMapper.Map<List<ExpectOut>, List<ExpectOutDTO>>(list);
return ret;
}
/// <summary>
/// 根据任务号、箱码、数量、库位取预计出列表
/// </summary>
/// <returns></returns>
[HttpPost("get-list-by-job-number")]
public virtual async Task<List<ExpectOutDTO>> GetListByJobNumberAsync(SplitPacking_UpdateDetailInput input)
{
var lst = await ListByJobNumberAsync(input).ConfigureAwait(false);
var ret = ObjectMapper.Map<List<ExpectOut>, List<ExpectOutDTO>>(lst);
return ret;
}
private async Task<List<ExpectOut>> ListByJobNumberAsync(SplitPacking_UpdateDetailInput input)
{
return await _repository.GetListAsync(p => p.JobNumber == input.Number && p.PackingCode == input.FromPackingCode && p.Qty == input.FromQty && p.LocationCode == input.FromLocationCode).ConfigureAwait(false);
}
}

12
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application.Contracts/Notes/TransferNotes/Inputs/SplitPacking_UpdateJobDetailInput.cs

@ -2,16 +2,20 @@ using System.ComponentModel.DataAnnotations;
namespace Win_in.Sfs.Wms.Store.Application.Contracts;
/// <summary>
///
/// </summary>
public class SplitPacking_UpdateJobDetailInput
public class SplitPacking_UpdateJobDetailInputBase
{
/// <summary>
/// 主表number
/// </summary>
[Required(ErrorMessage = "{0}是必填项")]
public string Number { get; set; }
}
/// <summary>
///
/// </summary>
public class SplitPacking_UpdateJobDetailInput : SplitPacking_UpdateJobDetailInputBase
{
/// <summary>
/// 子表from标签
/// </summary>

48
be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

@ -445,15 +445,15 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
[HttpPost("split-packing-inspect")]
public async Task<TransferNoteDTO> SplitPacking_InspectAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInput updateJobDetailInput)
{
SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
newInput.Number = updateJobDetailInput.Number;
newInput.FromPackingCode = updateJobDetailInput.FromPackingCode;
newInput.FromQty = updateJobDetailInput.FromQty;
newInput.ToPackingCode = updateJobDetailInput.ToPackingCode;
newInput.ToQty = updateJobDetailInput.ToQty;
newInput.FromLocationCode = transferNoteEditInput.Details[0].FromLocationCode;
newInput.ToLocationCode = transferNoteEditInput.Details[0].ToLocationCode;
var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
//SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
//newInput.Number = updateJobDetailInput.Number;
//newInput.FromPackingCode = updateJobDetailInput.FromPackingCode;
//newInput.FromQty = updateJobDetailInput.FromQty;
//newInput.ToPackingCode = updateJobDetailInput.ToPackingCode;
//newInput.ToQty = updateJobDetailInput.ToQty;
//newInput.FromLocationCode = transferNoteEditInput.Details[0].FromLocationCode;
//newInput.ToLocationCode = transferNoteEditInput.Details[0].ToLocationCode;
//var expectOutRet = await _expectOutAppService.SaveDetail_SplitPackingAsync(newInput).ConfigureAwait(false);
var jobRet = await _inspectJobAppService.SaveDetail_SplitPackingAsync(updateJobDetailInput).ConfigureAwait(false);
var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false); //库存操作
return ret;
@ -482,9 +482,31 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
return ret;
}
/// <summary>
/// 拆箱,预计出表存在数据时不允许办理
/// </summary>
/// <param name="transferNoteEditInput"></param>
/// <param name="updateJobDetailInputBase"></param>
/// <returns></returns>
[HttpPost("split-packing-check-expect-out")]
public async Task<TransferNoteDTO> SplitPackingCheckExpectOutAsync(TransferNoteEditInput transferNoteEditInput, [FromQuery] SplitPacking_UpdateJobDetailInputBase updateJobDetailInputBase)
{
var detailObj = transferNoteEditInput.Details[0];
SplitPacking_UpdateDetailInput newInput = new SplitPacking_UpdateDetailInput();
newInput.Number = updateJobDetailInputBase.Number;
newInput.FromPackingCode = detailObj.FromPackingCode;
newInput.FromQty = detailObj.Qty;
newInput.ToPackingCode = detailObj.ToPackingCode;
newInput.ToQty = detailObj.Qty;
newInput.FromLocationCode = detailObj.FromLocationCode;
newInput.ToLocationCode = detailObj.ToLocationCode;
var expectOutLst = await _expectOutAppService.GetListByJobNumberAsync(newInput).ConfigureAwait(false);
if (expectOutLst.Count > 0)
{
throw new UserFriendlyException($"预计出表存在数据,不允许办理拆箱:JobNumber={newInput.Number}|PackingCode={newInput.FromPackingCode}|Qty={newInput.FromQty}|LocationCode={newInput.FromLocationCode}");
}
var ret = await SplitPackingAsync(transferNoteEditInput).ConfigureAwait(false);
return ret;
}
}

Loading…
Cancel
Save