From 50d36019fc89cb4241c5b8f4add71e26858525e5 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 12 Dec 2023 15:58:36 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../SaveChangeBoxRecordRequest.cs | 2 +-
.../Services/ChangeMoveBoxService.cs | 19 +++++++++++++++----
src/WMS.Web.Domain/Values/ResultCodes.cs | 1 +
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
index e7e1184a..9f679638 100644
--- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
@@ -13,7 +13,7 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
///
/// 原箱子ID
///
- public int SrcBoxId { get; set; }
+ public int SrcBoxId { get; set; } = 0;
///
/// 目标箱子ID
///
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index fbc6a9b3..f4982290 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -33,11 +33,12 @@ namespace WMS.Web.Domain.Services
private readonly IBoxInventoryService _boxInventoryService;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly ILogger _logger;
+ private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public ChangeMoveBoxService(IMapper mapper, ILoginService loginService,
IChangeBoxRecordRepositories changeBoxRecordRepositories, IBasicsRepositories basbicsRepositories,
IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories,
ISerialNumberService serialNumberService, IBoxInventoryService boxInventoryService, IBoxInventoryRepositories boxInventoryRepositories,
- ILogger logger)
+ ILogger logger, ISerialNumbersRepositories serialNumbersRepositories)
{
_mapper = mapper;
_loginService = loginService;
@@ -49,6 +50,7 @@ namespace WMS.Web.Domain.Services
_boxInventoryService = boxInventoryService;
_boxInventoryRepositories = boxInventoryRepositories;
_logger = logger;
+ _serialNumbersRepositories = serialNumbersRepositories;
}
///
/// 改箱保存
@@ -63,9 +65,18 @@ namespace WMS.Web.Domain.Services
var srcIds = dto.Select(s => s.SrcBoxId).Distinct().ToList();
var destIds = dto.Select(s => s.DestBoxId).Distinct().ToList();
var boxs = await _boxInventoryRepositories.GetList(srcIds);
+ var serialNumbers = dto.SelectMany(s => s.Details).SelectMany(s => s.SerialNumbers).ToList();
+ var serialNumberList = await _serialNumbersRepositories.GetEntityList(serialNumbers);
foreach (var d in dto)
{
- if (d.SrcBoxId == 0) continue;
+ if (d.SrcBoxId == 0)
+ {
+ //没有原箱的情况下需要验证序列号是否有箱子绑定
+ var s = d.Details.SelectMany(s => s.SerialNumbers).ToList();
+ var sCount = serialNumberList.Where(w => s.Contains(w.SerialNumber) && w.BoxId != 0).Count();
+ if (sCount > 0)
+ return Result.ReFailure(ResultCodes.SerialNumbersBoxError);
+ }
var box = boxs.FirstOrDefault(f => f.BoxId == d.SrcBoxId);
//原箱在库存中的话 进行验证
if (box != null)
@@ -74,10 +85,10 @@ namespace WMS.Web.Domain.Services
{
var bDe = box.Details.FirstOrDefault(f => f.MaterialId == bd.MaterialId);
if (bDe == null)
- Result.ReFailure(ResultCodes.BoxMateriaNoData);
+ return Result.ReFailure(ResultCodes.BoxMateriaNoData);
var ex = bd.SerialNumbers.Except(bDe.SerialNumbers).ToList();
if (ex.Count() > 0)
- Result.ReFailure(ResultCodes.BoxInventorySerialNumbersNoData);
+ return Result.ReFailure(ResultCodes.BoxInventorySerialNumbersNoData);
}
}
}
diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs
index c5bb60ec..db952196 100644
--- a/src/WMS.Web.Domain/Values/ResultCodes.cs
+++ b/src/WMS.Web.Domain/Values/ResultCodes.cs
@@ -68,6 +68,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple InventoryDetailsWriteError = (800014, "写入即时库存明细失败!");
public static ValueTuple SerialNumbersNoData = (610000, "序列号不存在");
+ public static ValueTuple SerialNumbersBoxError = (610002, "序列号已经绑定箱");
public static ValueTuple TakeStockStockError = (610001, "一次不能盘多个仓库");
}
}