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

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