diff --git a/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs b/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs index 4033d0e6..e111d1f2 100644 --- a/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs +++ b/src/WMS.Web.Api/Controllers/ChangeBoxRecordController.cs @@ -95,7 +95,7 @@ namespace WMS.Web.Api.Controllers if (loginInfo == null || loginInfo.UserInfo == null) return Result.ReFailure(ResultCodes.Token_Invalid_Error); - return await _changeMoveBoxService.ChangeBoxSave(new List() { dto }, loginInfo); + return await _changeMoveBoxService.ChangeBoxSave(new List() { dto }, loginInfo, true, true, true); } } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 46770c59..7ea7e2d6 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -475,6 +475,11 @@ 目标箱子ID + + + 目标箱号 + + 目标箱仓位或重新上架选择仓位 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index f04efdd9..e2b8dc40 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -3814,7 +3814,7 @@ 改箱 移箱服务 - + 改箱保存 @@ -3822,6 +3822,13 @@ + + + 自动生成箱信息 + + + + 移箱保存 diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs index 42a762b4..d9614741 100644 --- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs +++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs @@ -23,12 +23,15 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord /// /// 目标箱子ID /// - [Required(ErrorMessage = "目标箱子不能为空")] public int DestBoxId { get; set; } /// + /// 目标箱号 + /// + [Required(ErrorMessage = "目标箱号不能为空")] + public string DestBoxBillNo { get; set; } + /// /// 目标箱仓位或重新上架选择仓位 /// - [Required(ErrorMessage = "仓位不能为空")] public int SubStockId { get; set; } = 0; /// /// 明细 diff --git a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs index 3a0b6016..69a30b2e 100644 --- a/src/WMS.Web.Core/Dto/OpsBoxResponse.cs +++ b/src/WMS.Web.Core/Dto/OpsBoxResponse.cs @@ -67,7 +67,7 @@ namespace WMS.Web.Core.Dto /// 序列号生成时间 /// [JsonProperty("barCreateTime")] - public DateTime? BarCreateTime { get; set; } + public DateTime? BarCreateTime { get; set; } = DateTime.Now; /// /// 序列号生成用户 /// diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs index 1a65d8c9..efe25e22 100644 --- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs @@ -18,7 +18,7 @@ namespace WMS.Web.Domain.IService public interface IChangeMoveBoxService { //改箱保存 - Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction=true,bool IsInventory=true); + Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction=true,bool IsInventory=true,bool IsPDA=false); //移箱保存 Task MoveBoxSave(List dto, bool IsUp, LoginInDto loginInfo); //出库回退 diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 6e79ceb6..32c1debf 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.ChangeBoxRecord; using WMS.Web.Core.Dto.Inventory; using WMS.Web.Core.Dto.Login; @@ -35,11 +36,12 @@ namespace WMS.Web.Domain.Services private readonly IBoxInventoryRepositories _boxInventoryRepositories; private readonly ILogger _logger; private readonly ISerialNumbersRepositories _serialNumbersRepositories; + private readonly IBoxService _boxService; public ChangeMoveBoxService(IMapper mapper, ILoginService loginService, IChangeBoxRecordRepositories changeBoxRecordRepositories, IBasicsRepositories basbicsRepositories, IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories, ISerialNumberService serialNumberService, IBoxInventoryService boxInventoryService, IBoxInventoryRepositories boxInventoryRepositories, - ILogger logger, ISerialNumbersRepositories serialNumbersRepositories) + ILogger logger, ISerialNumbersRepositories serialNumbersRepositories, IBoxService boxService) { _mapper = mapper; _loginService = loginService; @@ -52,6 +54,7 @@ namespace WMS.Web.Domain.Services _boxInventoryRepositories = boxInventoryRepositories; _logger = logger; _serialNumbersRepositories = serialNumbersRepositories; + _boxService = boxService; } /// /// 改箱保存 @@ -59,13 +62,33 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction = false, bool IsInventory = true) + public async Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction = false, bool IsInventory = true, bool IsPDA = false) { _logger.LogInformation($"改箱:{JsonConvert.SerializeObject(dto)} 操作人:{loginInfo.UserInfo.StaffId}"); + if (IsPDA) + { + var d = dto.First(); + var dBox = await _boxRepositories.GetByNo(d.DestBoxBillNo); + if (dBox == null) + { + var res = await CreateBox(d); + if (!res.IsSuccess) return res; + dBox = await _boxRepositories.GetByNo(d.DestBoxBillNo); + dto.First().DestBoxId = dBox.Id; + } + else + { + var destInventoryBoxs = await _boxInventoryRepositories.Get(dBox.Id); + dto.First().DestBoxId = dBox.Id; + if (destInventoryBoxs != null) + dto.First().SubStockId = destInventoryBoxs.SubStockId; + } + } //1.有原箱时 需要判断 物料对应的序列号是否存在 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) @@ -187,6 +210,33 @@ namespace WMS.Web.Domain.Services } return Result.ReSuccess(); } + /// + /// 自动生成箱信息 + /// + /// + /// + private async Task CreateBox(SaveChangeBoxRecordRequest dto) + { + List list = new List(); + OpsBoxResponse response = new OpsBoxResponse() { BoxBillNo = dto.DestBoxBillNo }; + foreach (var d in dto.Details) + { + List s = new List(); + foreach (var sd in d.SerialNumbers) + { + s.Add(new OpsSerialNumbersResponse() { SerialNumber = sd }); + } + OpsBoxDetailsResponse dr = new OpsBoxDetailsResponse() + { + MaterialId = d.MaterialId, + Qty = d.Qty, + SerialNumbers = s + }; + } + list.Add(response); + return await _boxService.Sync(list); + } + /// /// 移箱保存 ///