diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index 4d30257f..04fda4d8 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -46,7 +46,6 @@ namespace WMS.Web.Api.Controllers [Route("hj")] public async Task TestHJ() { - await _outStockTaskService.Sync(null); //var t=await _outStockTaskRepositories.Get(1); // t.Details[0].Remark = "sdf"; // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 729db243..3eae5e82 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -3973,17 +3973,12 @@ - 盘点前数量(wms系统数量) + 盘点前数量(wms系统数量)库存数量 - 盘点实际数量(实际仓库数量) - - - - - 盘点数量 + 盘点实际数量(实际仓库数量)此次仓库盘点数量 diff --git a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs index 1220bd07..d8009517 100644 --- a/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs +++ b/src/WMS.Web.Core/Dto/TakeStock/SaveTakeStockRequest.cs @@ -35,21 +35,16 @@ namespace WMS.Web.Core.Dto.TakeStock /// public int Erp_SubStockId { get; set; } /// - /// 盘点前数量(wms系统数量) + /// 盘点前数量(wms系统数量)库存数量 /// [Required(ErrorMessage = "盘点前数量不能为空")] public decimal BeforeQty { get; set; } /// - /// 盘点实际数量(实际仓库数量) + /// 盘点实际数量(实际仓库数量)此次仓库盘点数量 /// [Required(ErrorMessage = "盘点实际数量不能为空")] public decimal AfterQty { get; set; } /// - /// 盘点数量 - /// - [Required(ErrorMessage = "盘点数量不能为空")] - public decimal FinalQty { get; set; } - /// /// 备注 /// public string Remark { get; set; } diff --git a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs index f8b928e6..79c4343a 100644 --- a/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs +++ b/src/WMS.Web.Domain/Mappers/TakeStockMapper.cs @@ -13,9 +13,11 @@ namespace WMS.Web.Domain.Mappers public TakeStockMapper() { CreateMap() - .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss)); + .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) >0? TakeStockType.Profit: TakeStockType.Loss)) + .ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty))); CreateMap() - .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss)); + .ForMember(x => x.ResultType, ops => ops.MapFrom(x => (x.AfterQty - x.BeforeQty) > 0 ? TakeStockType.Profit : TakeStockType.Loss)) + .ForMember(x => x.FinalQty, ops => ops.MapFrom(x => Math.Abs(x.AfterQty - x.BeforeQty))); } } } diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index 7839c036..e271a6b6 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.Erp.TakeStock; +using WMS.Web.Core.Dto.Inventory; using WMS.Web.Core.Dto.Login; using WMS.Web.Core.Dto.TakeStock; using WMS.Web.Core.Internal.Results; @@ -36,10 +37,12 @@ namespace WMS.Web.Domain.Services private readonly ISingleDataService _singleDataService; private readonly IErpService _erpService; private readonly ILogger _logger; + private readonly IBoxInventoryService _boxInventoryService; public TakeStockService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, ITakeStockRepositories takeStockRepositories, ILoginRepositories loginRepositories, - ISingleDataService singleDataService, IErpService erpService, ILogger logger) + ISingleDataService singleDataService, IErpService erpService, ILogger logger, + IBoxInventoryService boxInventoryService) { _mapper = mapper; _loginService = loginService; @@ -49,6 +52,7 @@ namespace WMS.Web.Domain.Services _singleDataService = singleDataService; _erpService = erpService; _logger = logger; + _boxInventoryService = boxInventoryService; } /// /// 保存 @@ -62,17 +66,45 @@ namespace WMS.Web.Domain.Services foreach (var entity in list) entity.Create(loginInfo.UserInfo.StaffId); - //需要填写序列号 - //需要修改库存 + #region 组装库存dto + List inventoryList = new List(); + foreach (var entity in list) + { + var inventoryDetail = new List() + { + new BoxInventoryGenerateDetailsDto() + { + MaterialId=entity.MaterialId, + Qty=entity.FinalQty + } + }; + BoxInventoryGenerateDto inventory = new BoxInventoryGenerateDto() + { + BoxId = entity.BoxId, + InventoryInOutMethod = 2,//盘点单按产品修改库存 + InventoryInOutType = entity.ResultType == TakeStockType.Profit ? 1 : 2, + StockCode = entity.StockCode, + SubStockId = entity.SubStockId, + Details = inventoryDetail + }; + inventoryList.Add(inventory); + } + #endregion IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); - bool isRollback = false; + Result res_Rollback = Result.ReSuccess(); bool isSuccess = true; - isSuccess = await _takeStockRepositories.AddRange(list, false); - if (!isSuccess) isRollback = true; + var res_Inventory = await _boxInventoryService.HandlBoxInventory(inventoryList, false); + if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory; + if (res_Rollback.IsSuccess) + { + isSuccess = await _takeStockRepositories.AddRange(list, false); + if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError); + } //提交事务 - isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + isSuccess = _transactionRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction); + if (!res_Rollback.IsSuccess) return res_Rollback; if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);