Browse Source

添加 拆箱数量校验

dev_DY_CC
刘云峰 11 months ago
parent
commit
edf2cad048
  1. 8
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs
  2. 22
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs
  3. 8
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/ISplitPackingRecManager.cs
  4. 13
      be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs
  5. 6
      be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Notes/TransferNotes/TransferNoteAppService.cs

8
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/SplitPackings/ISplitPackingRecAppService.cs

@ -31,9 +31,11 @@ public interface ISplitPackingRecAppService
Task<List<SplitPackingRecDTO>> GetFirstOrDefaultPackingCode(List<string> toPackingCodeList);
/// <summary>
/// 根据to箱码取所有具有相同箱码的拆箱记录
///
/// </summary>
/// <param name="toPackingCode"></param>
/// <param name="fromPackCode">from箱码</param>
/// <param name="inputQty">数量</param>
/// <returns></returns>
Task<List<SplitPackingRecDTO>> GetSamePoNumberListByToPackingCode(string toPackingCode);
Task<bool> CheckSplitNum(string fromPackCode, decimal inputQty);
}

22
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/SplitPackings/SplitPackingRecAppService.cs

@ -128,5 +128,27 @@ public class SplitPackingRecAppService :
return ret;
}
/// <summary>
///
/// </summary>
/// <param name="fromPackCode">from箱码</param>
/// <param name="inputQty">数量</param>
/// <returns></returns>
[HttpGet("check-split-num")]
public async Task<bool> CheckSplitNum(string fromPackCode, decimal inputQty)
{
var lst = await _splitPackingRecManager.GetAllByFromPackingCode(fromPackCode).ConfigureAwait(false);
var originObj = lst.FirstOrDefault(itm => itm.FromPackingCode == fromPackCode && itm.OprType == OprTypeEnum.Other);
if (originObj == null)
{
throw new UserFriendlyException($"[CheckSplitNum]拆箱记录表没有数据:fromPackCode={fromPackCode},OprType={OprTypeEnum.Other}");
}
var splitLst = lst.Where(itm => itm.FromPackingCode == fromPackCode && itm.OprType == OprTypeEnum.SplitBox);
decimal splitSum = splitLst.Sum(itm => itm.ToQty);
decimal overplusQty = originObj.FromQty - splitSum;
return overplusQty >= inputQty;
}
}

8
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/ISplitPackingRecManager.cs

@ -26,4 +26,12 @@ public interface ISplitPackingRecManager : IDomainService
Task<SplitPackingRec> GetTopPackingCode(string packingCode);
Task<SplitPackingRec> GetSplitPackingCode(string packingCode);
Task<List<SplitPackingRec>> GetFirstOrDefaultPackingCode(List<string> toPackingCodeList);
/// <summary>
/// 根据from箱码取所有记录
/// </summary>
/// <param name="fromPackingCode"></param>
/// <returns></returns>
Task<List<SplitPackingRec>> GetAllByFromPackingCode(string fromPackingCode);
}

13
be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/SplitPackings/SplitPackingRecManager.cs

@ -267,4 +267,17 @@ public class SplitPackingRecManager : DomainService, ISplitPackingRecManager
//}
}
/// <summary>
/// 根据from箱码取所有记录
/// </summary>
/// <param name="fromPackingCode"></param>
/// <returns></returns>
public async Task<List<SplitPackingRec>> GetAllByFromPackingCode(string fromPackingCode)
{
List<SplitPackingRec> lst = await _repository.GetListAsync(
itm => itm.FromPackingCode ==fromPackingCode)
.ConfigureAwait(false);
return lst;
}
}

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

@ -414,9 +414,15 @@ public class TransferNoteAppService : SfsStoreWithDetailsAppServiceBase
/// <returns></returns>
private async Task<bool> WriteSplitPackingRec(TransferNoteEditInput transferNoteEditInput, SplitPacking_UpdateJobDetailInput updateJobDetailInput = null)
{
List<SplitPackingRecEditInput> recLst = new List<SplitPackingRecEditInput>();
foreach (var inputDetail in transferNoteEditInput.Details)
{
bool qtyEnough = await _splitPackingRecAppService.CheckSplitNum(inputDetail.FromPackingCode, inputDetail.Qty).ConfigureAwait(false);
if (qtyEnough == false)
{
throw new UserFriendlyException($"[WriteSplitPackingRec]拆箱记录表数量不足:FromPackingCode={inputDetail.FromPackingCode},Qty={inputDetail.Qty}");
}
SplitPackingRecEditInput packRec = new SplitPackingRecEditInput();
packRec.OprType = OprTypeEnum.SplitBox;

Loading…
Cancel
Save