改箱生成新箱时支持多条记录

This commit is contained in:
18942506660
2024-06-21 13:43:09 +08:00
parent d67f7941b9
commit b26f09fbbd
2 changed files with 13 additions and 7 deletions

View File

@@ -82,7 +82,7 @@ namespace WMS.Web.Domain.Services
//if (d.DestBoxBillNo.Substring(0, 3) != "CTN")
// return Result.ReFailure(ResultCodes.BoxBillNoError);
var res = await CreateBox(d);
var res = await CreateBox(dto);
if (!res.IsSuccess) return res;
dBox = await _boxRepositories.GetByNo(d.DestBoxBillNo);
dto.ForEach(f => f.DestBoxId = dBox.Id);
@@ -240,22 +240,28 @@ namespace WMS.Web.Domain.Services
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
private async Task<Result> CreateBox(SaveChangeBoxRecordRequest dto)
private async Task<Result> CreateBox(List<SaveChangeBoxRecordRequest> dto)
{
//增加一个空箱子
List<OpsBoxResponse> list = new List<OpsBoxResponse>();
OpsBoxResponse response = new OpsBoxResponse() { BoxBillNo = dto.DestBoxBillNo };
foreach (var d in dto.Details)
OpsBoxResponse response = new OpsBoxResponse() { BoxBillNo = dto.First().DestBoxBillNo };
var details = dto.SelectMany(s => s.Details);
var materialNumberList= details.GroupBy(g => g.MaterialNumber).Select(s => s.Key).ToList();
foreach (var m in materialNumberList)
{
var qty = details.Where(w => w.MaterialNumber.Equals(m)).Sum(s => s.Qty);
var serialNumbers = details.Where(w => w.MaterialNumber.Equals(m)).SelectMany(s => s.SerialNumbers);
List<OpsSerialNumbersResponse> s = new List<OpsSerialNumbersResponse>();
foreach (var sd in d.SerialNumbers)
foreach (var sd in serialNumbers)
{
s.Add(new OpsSerialNumbersResponse() { SerialNumber = sd });
}
OpsBoxDetailsResponse dr = new OpsBoxDetailsResponse()
{
MaterialNumber = d.MaterialNumber,
Qty = d.Qty,
MaterialNumber = m,
Qty = qty,
SerialNumbers = s
};
response.Details.Add(dr);