diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 1edd4132..49a317ea 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1780,11 +1780,6 @@ 采购上架-请求对象 - - - 箱IDS - - 明细 @@ -1800,6 +1795,11 @@ 单据ID(等同-入库任务单ID) + + + 箱ID + + 来源单号 @@ -1815,11 +1815,6 @@ 组织 - - - 物料Id - - 仓库编码 @@ -1830,6 +1825,11 @@ 仓位ID + + + 物料Id + + 入库数量 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 108987b1..8fd2d917 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -530,6 +530,11 @@ 任务单ID + + + 箱ID + + 来源单号 diff --git a/src/WMS.Web.Core/Dto/InStock/PurchaseShelfRequest.cs b/src/WMS.Web.Core/Dto/InStock/PurchaseShelfRequest.cs index f91e5f30..f85c0b4d 100644 --- a/src/WMS.Web.Core/Dto/InStock/PurchaseShelfRequest.cs +++ b/src/WMS.Web.Core/Dto/InStock/PurchaseShelfRequest.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Text; namespace WMS.Web.Core.Dto.InStock @@ -10,10 +11,6 @@ namespace WMS.Web.Core.Dto.InStock public class PurchaseShelfRequest { - /// - /// 箱IDS - /// - public List BoxIds { get; set; } = new List(); /// /// 明细 diff --git a/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs b/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs index deee7715..ab10a30c 100644 --- a/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs +++ b/src/WMS.Web.Core/Dto/InStock/SaveInStockDetailsRequest.cs @@ -16,6 +16,12 @@ namespace WMS.Web.Core.Dto.InStock [Required(ErrorMessage = "任务单ID不能为空")] public int TaskId { get; set; } + /// + /// 箱ID + /// + [Required(ErrorMessage = "箱ID不能为空")] + public int BoxId { get; set; } + /// /// 来源单号 /// @@ -33,12 +39,6 @@ namespace WMS.Web.Core.Dto.InStock [Required(ErrorMessage = "组织不能为空")] public int OrgId { get; set; } - /// - /// 物料Id - /// - [Required(ErrorMessage = "物料不能为空")] - public int MaterialId { get; set; } - /// /// 仓库编码 /// @@ -50,6 +50,12 @@ namespace WMS.Web.Core.Dto.InStock [Required(ErrorMessage = " 仓位不能为空")] public int SubStockId { get; set; } + /// + /// 物料Id + /// + [Required(ErrorMessage = "物料不能为空")] + public int MaterialId { get; set; } + /// /// 入库数量 /// diff --git a/src/WMS.Web.Core/Dto/Inventory/BoxInventoryBackGenerateDto.cs b/src/WMS.Web.Core/Dto/Inventory/BoxInventoryBackGenerateDto.cs index fe2c41a4..38cae510 100644 --- a/src/WMS.Web.Core/Dto/Inventory/BoxInventoryBackGenerateDto.cs +++ b/src/WMS.Web.Core/Dto/Inventory/BoxInventoryBackGenerateDto.cs @@ -32,7 +32,7 @@ namespace WMS.Web.Core.Dto.Inventory /// /// 明细 /// - public List Details { get; set; } + public List Details { get; set; } = new List(); } /// diff --git a/src/WMS.Web.Domain/Entitys/InStockDetails.cs b/src/WMS.Web.Domain/Entitys/InStockDetails.cs index a6243364..5c07233f 100644 --- a/src/WMS.Web.Domain/Entitys/InStockDetails.cs +++ b/src/WMS.Web.Domain/Entitys/InStockDetails.cs @@ -25,6 +25,11 @@ namespace WMS.Web.Domain.Entitys /// public int TaskId { get; set; } + /// + /// 箱ID + /// + public int BoxId { get; set; } + /// /// 来源单号 /// diff --git a/src/WMS.Web.Domain/Services/BackRecordService.cs b/src/WMS.Web.Domain/Services/BackRecordService.cs index 0f2019f5..07252ae3 100644 --- a/src/WMS.Web.Domain/Services/BackRecordService.cs +++ b/src/WMS.Web.Domain/Services/BackRecordService.cs @@ -2,9 +2,11 @@ using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto.BackRecord; +using WMS.Web.Core.Dto.Inventory; using WMS.Web.Core.Dto.Login; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; @@ -25,13 +27,16 @@ namespace WMS.Web.Domain.Services public readonly IBasicsRepositories _basicsRepositories; private readonly ISerialNumberService _serialNumberService; private readonly IBackRecordRepositories _backRecordRepositories; + private readonly IBoxInventoryService _boxInventoryService; public BackRecordService(IMapper mapper, ILoginService loginService, IBasicsRepositories basicsRepositories, + IBoxInventoryService boxInventoryService, ISerialNumberService serialNumberService, IBackRecordRepositories backRecordRepositories) { _mapper = mapper; _loginService = loginService; + _boxInventoryService = boxInventoryService; _basicsRepositories = basicsRepositories; _backRecordRepositories = backRecordRepositories; } @@ -66,6 +71,32 @@ namespace WMS.Web.Domain.Services var serialNumber_result = await _serialNumberService.BackRecord(entity, loginInfo, isTransaction); if (!serialNumber_result.IsSuccess) return serialNumber_result; + + //保存成功后:变更库存 + var boxInventoryBackGenerateDto = dto.Details.GroupBy(x =>new { x.BoxId,x.StockCode,x.SubStockId}).Select(x => new BoxInventoryBackGenerateDto() + { + BoxId=x.Key.BoxId, + StockCode=x.Key.StockCode, + SubStockId=x.Key.SubStockId, + InventoryInOutType= type== BackRecordType.OutstockOn? (int)InventoryInOutType.In:(int)InventoryInOutType.Out, + }).ToList(); + foreach (var item in dto.Details) + { + var current= boxInventoryBackGenerateDto.Where(x => x.BoxId == item.BoxId).FirstOrDefault(); + if (current != null) + { + var detail = new BoxInventoryBackDetailsGenerateDto(); + detail.MaterialId = item.MaterialId; + detail.Qty = item.Qty; + detail.SerialNumbers = item.SerialNumbers; + current.Details.Add(detail); + } + } + + var boxInventoryResult= await _boxInventoryService.GenerateBackBox(boxInventoryBackGenerateDto, isTransaction); + if (!boxInventoryResult.IsSuccess) + return boxInventoryResult; + return Result.ReSuccess(); } else diff --git a/src/WMS.Web.Domain/Services/InStockService.cs b/src/WMS.Web.Domain/Services/InStockService.cs index 8b78af00..67f3bacb 100644 --- a/src/WMS.Web.Domain/Services/InStockService.cs +++ b/src/WMS.Web.Domain/Services/InStockService.cs @@ -10,6 +10,7 @@ using WMS.Web.Core.Dto.ChangeBoxRecord; using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.InStock; using WMS.Web.Core.Dto.InStockTask; +using WMS.Web.Core.Dto.Inventory; using WMS.Web.Core.Dto.Login; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; @@ -32,17 +33,19 @@ namespace WMS.Web.Domain.Services private readonly ISerialNumberService _serialNumberService; private readonly IChangeMoveBoxService _changeMoveBoxService; private readonly IBoxRepositories _boxRepositories; + private readonly IBoxInventoryService _boxInventoryService; private readonly IBasicsRepositories _basicsRepositories; private readonly IInStockRepositories _inStockRepositories; private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly IErpBasicDataExtendService _erpBasicDataExtendService; - public InStockService(IMapper mapper, IErpService erpService, ISerialNumberService serialNumberService, ILoginService loginService, IBoxRepositories boxRepositories, + public InStockService(IMapper mapper, IErpService erpService, IBoxInventoryService boxInventoryService,ISerialNumberService serialNumberService, ILoginService loginService, IBoxRepositories boxRepositories, IBasicsRepositories basicsRepositories, IErpBasicDataExtendService erpBasicDataExtendService, IChangeMoveBoxService changeMoveBoxService, IInStockRepositories inStockRepositories, IInStockTaskRepositories inStockTaskRepositories) { _mapper = mapper; _erpService = erpService; _loginService = loginService; + _boxInventoryService = boxInventoryService; _serialNumberService = serialNumberService; _boxRepositories = boxRepositories; _changeMoveBoxService = changeMoveBoxService; @@ -202,6 +205,33 @@ namespace WMS.Web.Domain.Services var serialNumber_result= await _serialNumberService.InStock(entity, loginInfo, isTransaction); if (!serialNumber_result.IsSuccess) return serialNumber_result; + + //保存成功后:变更箱库存 + var boxInventoryGenerateDto = entity.Details.GroupBy(x => new { x.BoxId, x.StockCode, x.SubStockId }).Select(x => new BoxInventoryGenerateDto() + { + InventoryInOutMethod= (int)InventoryInOutMethod.Box, + InventoryInOutType=(int)InventoryInOutType.In, + BoxId=x.Key.BoxId, + StockCode=x.Key.StockCode, + SubStockId=x.Key.SubStockId + }).ToList(); + + foreach (var item in dto.Details) + { + var current = boxInventoryGenerateDto.Where(x => x.BoxId == item.BoxId).FirstOrDefault(); + if (current != null) + { + var detail = new BoxInventoryGenerateDetailsDto(); + detail.MaterialId = item.MaterialId; + detail.Qty = item.Qty; + detail.SerialNumbers = item.SerialNumbers; + current.Details.Add(detail); + } + } + var boxInventoryResult = await _boxInventoryService.HandlBoxInventory(boxInventoryGenerateDto, isTransaction); + if (!boxInventoryResult.IsSuccess) + return boxInventoryResult; + return Result.ReSuccess(); } else @@ -340,7 +370,10 @@ namespace WMS.Web.Domain.Services } var isSuccess = await _inStockTaskRepositories.UpdateRange(entitys, isTransaction); if (isSuccess) + { + return Result.ReSuccess(); + } else return Result.ReFailure(ResultCodes.DateWriteError); }