diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index ba374d38..e03f3ae8 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -309,8 +309,9 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return ResultList.ReFailure(ResultCodes.Token_Invalid_Error); + boxBillNos = boxBillNos.ConvertAll(d => d.ToLower()); var res = await _boxRepositories.GetBox(boxBillNos); - var bStrList = res.Select(s => s.BoxBillNo).ToList(); + var bStrList = res.Select(s => s.BoxBillNo.ToLower()).ToList(); var ex = boxBillNos.Except(bStrList).ToList(); if (ex.Count() > 0) return ResultList.ReFailure("箱号" + JsonConvert.SerializeObject(ex) + "不存在", 800000); 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, "一次不能盘多个仓库"); } } diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs index 56c5c5da..ad3cb6b9 100644 --- a/src/WMS.Web.Repositories/BoxRepositories.cs +++ b/src/WMS.Web.Repositories/BoxRepositories.cs @@ -57,7 +57,7 @@ namespace WMS.Web.Repositories /// public async Task> GetBox(List BoxBillNos) { - var list = await _context.Box.Include(x => x.Details).Where(f => BoxBillNos.Contains(f.BoxBillNo)).ToListAsync(); + var list = await _context.Box.Include(x => x.Details).Where(f => BoxBillNos.Contains(f.BoxBillNo.ToLower())).ToListAsync(); var resList = _mapper.Map>(list); var materials_result = await _erpService.BillQueryForMaterial(); diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index 38700bef..d077c138 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -296,7 +296,7 @@ namespace WMS.Web.Repositories CreateTime = s.order.CreateTime.DateToStringSeconds(), OperateTime = s.order.OperateTime.DateToStringSeconds(), Operator = _singleDataService.GetSingleData(SingleAction.Staffs, _loginRepositories.CompanyId, s.order.OperatorId ?? 0), - OutStockTime = s.order.OperateTime.DateToStringSeconds(), + OutStockTime = s.order.OutStockTime.DateToStringSeconds(), OutStock = _singleDataService.GetSingleData(SingleAction.Staffs, _loginRepositories.CompanyId, s.order.OutStockId ?? 0), OutStockBeginTime = s.detail.OutStockBeginTime.DateToStringSeconds(), OutStockEndTime = s.detail.OutStockEndTime.DateToStringSeconds(),