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);
}