From 01c12e0bddf821d9a4c28b7be6a7da6470ece0bd Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Thu, 14 Dec 2023 14:19:16 +0800
Subject: [PATCH] =?UTF-8?q?=E9=9D=9E=E9=87=87=E8=B4=AD=E4=B8=8A=E6=9E=B6?=
=?UTF-8?q?=E6=94=B9=E7=AE=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Services/ChangeMoveBoxService.cs | 67 ++++++++++++++++++-
1 file changed, 65 insertions(+), 2 deletions(-)
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index 03215e6a..7bb9c8e6 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -314,9 +314,72 @@ namespace WMS.Web.Domain.Services
///
///
///
- public Task ChangeBox_InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true)
+ public async Task ChangeBox_InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true)
{
- throw new NotImplementedException();
+ List dtoList = new List();
+ //目标箱
+ var destIds = inStock.Details.GroupBy(g => g.BoxId);
+ var serialNumbers = inStock.Details.SelectMany(s => s.SerialNumbers).ToList();
+ var serialNumberList = await _serialNumbersRepositories.GetEntityList(serialNumbers);
+ foreach (var detail in inStock.Details)
+ {
+ if (detail.Qty == 0) continue;
+ var detailClone = detail.Clone();
+ //处理序列号
+ var sList = serialNumberList.Where(w => detailClone.SerialNumbers.Contains(w.SerialNumber)).ToList();
+ foreach (var s in sList)
+ {
+ //原箱和目标箱一样不处理
+ if (s.BoxId == detailClone.BoxId)
+ {
+ detailClone.Qty = detailClone.Qty - 1;
+ detailClone.SerialNumbers.Remove(s.SerialNumber);
+ continue;
+ }
+
+ var d = dtoList.FirstOrDefault(f => f.DestBoxId == detailClone.BoxId && f.SrcBoxId == s.BoxId);
+ if (d == null)
+ {
+ d = new SaveChangeBoxRecordRequest(0, detail.BoxId);
+ d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detail.MaterialId, 1, s.SerialNumber));
+ }
+ else
+ {
+ var dtoDetail = d.Details.FirstOrDefault(f => f.MaterialId == detail.MaterialId);
+ if (dtoDetail == null)
+ d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detail.MaterialId, 1, s.SerialNumber));
+ else
+ {
+ dtoDetail.Qty += 1;
+ dtoDetail.SerialNumbers.Add(s.SerialNumber);
+ }
+ }
+ detailClone.Qty = detailClone.Qty - 1;
+ detailClone.SerialNumbers.Remove(s.SerialNumber);
+ }
+
+ //处理非序列号的数据
+ if (detailClone.Qty <= 0) continue;
+ var dto = dtoList.FirstOrDefault(f => f.DestBoxId == detail.BoxId && f.SrcBoxId == 0);
+ if (dto == null)
+ {
+ dto = new SaveChangeBoxRecordRequest(0, detailClone.BoxId);
+ dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers));
+ }
+ else
+ {
+ var dtoDetail = dto.Details.FirstOrDefault(f => f.MaterialId == detailClone.MaterialId);
+ if (dtoDetail == null)
+ dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers));
+ else
+ {
+ dtoDetail.Qty += detailClone.Qty;
+ dtoDetail.SerialNumbers.AddRange(detailClone.SerialNumbers);
+ }
+ }
+ }
+
+ return await ChangeBoxSave(dtoList, loginInfo, isTransaction, false);
}
}
}