diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 03db77d9..4677cb03 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -207,7 +207,12 @@
- 所属箱号ID
+ 扫的箱号ID
+
+
+
+
+ 序列号所属箱不能为空
diff --git a/src/WMS.Web.Core/Dto/BackRecord/SaveBackRecordDetailsRequest.cs b/src/WMS.Web.Core/Dto/BackRecord/SaveBackRecordDetailsRequest.cs
index c81bff60..6f373a44 100644
--- a/src/WMS.Web.Core/Dto/BackRecord/SaveBackRecordDetailsRequest.cs
+++ b/src/WMS.Web.Core/Dto/BackRecord/SaveBackRecordDetailsRequest.cs
@@ -11,10 +11,17 @@ namespace WMS.Web.Core.Dto.BackRecord
public class SaveBackRecordDetailsRequest
{
///
- /// 所属箱号ID
+ /// 扫的箱号ID
///
[Required(ErrorMessage = "箱号不能为空")]
public int BoxId { get; set; }
+
+ ///
+ /// 序列号所属箱不能为空
+ ///
+ [Required(ErrorMessage = "序列号所属箱不能为空")]
+ public int SerialNumberBoxId { get; set; }
+
///
/// 物料ID
///
diff --git a/src/WMS.Web.Domain/Services/BackRecordService.cs b/src/WMS.Web.Domain/Services/BackRecordService.cs
index 3c61d86e..e2d44638 100644
--- a/src/WMS.Web.Domain/Services/BackRecordService.cs
+++ b/src/WMS.Web.Domain/Services/BackRecordService.cs
@@ -6,6 +6,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.BackRecord;
+using WMS.Web.Core.Dto.ChangeBoxRecord;
using WMS.Web.Core.Dto.Inventory;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
@@ -28,17 +29,23 @@ namespace WMS.Web.Domain.Services
private readonly ISerialNumberService _serialNumberService;
private readonly IBackRecordRepositories _backRecordRepositories;
private readonly IBoxInventoryService _boxInventoryService;
+ private readonly IChangeMoveBoxService _changeMoveBoxService;
+ private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public BackRecordService(IMapper mapper, ILoginService loginService,
IBasicsRepositories basicsRepositories,
IBoxInventoryService boxInventoryService,
ISerialNumberService serialNumberService,
+ IChangeMoveBoxService changeMoveBoxService,
+ ISerialNumbersRepositories serialNumbersRepositories,
IBackRecordRepositories backRecordRepositories)
{
_mapper = mapper;
_loginService = loginService;
+ _changeMoveBoxService = changeMoveBoxService;
_serialNumberService = serialNumberService;
_boxInventoryService = boxInventoryService;
_basicsRepositories = basicsRepositories;
+ _serialNumbersRepositories = serialNumbersRepositories;
_backRecordRepositories = backRecordRepositories;
}
@@ -62,16 +69,16 @@ namespace WMS.Web.Domain.Services
var entity = new BackRecord();
entity.Type = type;
entity.Details = _mapper.Map>(dto.Details);
- entity.Details.ForEach(x =>
+ entity.Details.ForEach(x =>
{
- var stock= stocks.Where(t => t.Code == x.StockCode).FirstOrDefault();
+ var stock = stocks.Where(t => t.Code == x.StockCode).FirstOrDefault();
if (stock != null)
x.OrgCode = stock.ErpOrgCode;
});
entity.Create(loginInfo.UserInfo.StaffId);
entity = await _backRecordRepositories.Add(entity, isTransaction);
-
+
if (entity == null)
return Result.ReFailure(ResultCodes.DateWriteError);
@@ -80,6 +87,52 @@ namespace WMS.Web.Domain.Services
if (!serialNumber_result.IsSuccess)
return serialNumber_result;
+ #region 需要改箱操作
+ //获取目标箱和原箱信息
+ var current_box_about = dto.Details.GroupBy(x => new { x.BoxId, x.SubStockId, x.StockCode }).Select(x => new { x.Key.BoxId, x.Key.SubStockId, x.Key.StockCode }).ToList();
+ var current_sernub_box = dto.Details.GroupBy(x => x.SerialNumberBoxId).Select(x => x.Key).ToList();
+
+ //要改箱的数据集合
+ var ganenrateChangeBoxs = new List();
+
+ //遍历组装:改箱dto的头部集合
+ foreach (var boxAbout in current_box_about)
+ {
+ foreach (var serBoxId in current_sernub_box)
+ {
+ if (boxAbout.BoxId != serBoxId)
+ {
+ var changeBox = new SaveChangeBoxRecordRequest();
+ changeBox.SrcBoxId = serBoxId;
+ changeBox.DestBoxId = boxAbout.BoxId;
+ changeBox.SubStockId = boxAbout.SubStockId;
+ ganenrateChangeBoxs.Add(changeBox);
+ }
+ }
+ }
+
+ //遍历组装明细:改箱dto的明细集合
+ foreach (var detItem in dto.Details)
+ {
+ ganenrateChangeBoxs.ForEach(x =>
+ {
+ if (x.SrcBoxId == detItem.SerialNumberBoxId && x.DestBoxId == detItem.BoxId)
+ {
+ var changeBoxRD = new SaveChangeBoxRecordDetailsRequest();
+ changeBoxRD.MaterialId = detItem.MaterialId;
+ changeBoxRD.Qty = detItem.Qty;
+ changeBoxRD.SerialNumbers = detItem.SerialNumbers;
+ x.Details.Add(changeBoxRD);
+ }
+ });
+ }
+
+ //改箱保存操作:这里不需要在改箱的操作-进行库存的变更(因为会有问题),下面会去更新库存的
+ var changeBoxSave_Result = await _changeMoveBoxService.ChangeBoxSave(ganenrateChangeBoxs, loginInfo, isTransaction,false);
+ if (!changeBoxSave_Result.IsSuccess)
+ return changeBoxSave_Result;
+ #endregion
+
//保存成功后:变更库存
var entitys = new List();
entitys.Add(entity);