采购入库-变更库存

This commit is contained in:
tongfei
2023-11-16 17:37:19 +08:00
parent ec486c1dbd
commit 815b2f6b21
8 changed files with 99 additions and 22 deletions

View File

@@ -1780,11 +1780,6 @@
采购上架-请求对象
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.PurchaseShelfRequest.BoxIds">
<summary>
箱IDS
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.PurchaseShelfRequest.Details">
<summary>
明细
@@ -1800,6 +1795,11 @@
单据ID(等同-入库任务单ID)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockDetailsRequest.BoxId">
<summary>
箱ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockDetailsRequest.SourceBillNo">
<summary>
来源单号
@@ -1815,11 +1815,6 @@
组织
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockDetailsRequest.MaterialId">
<summary>
物料Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockDetailsRequest.StockCode">
<summary>
仓库编码
@@ -1830,6 +1825,11 @@
仓位ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockDetailsRequest.MaterialId">
<summary>
物料Id
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStock.SaveInStockDetailsRequest.Qty">
<summary>
入库数量

View File

@@ -530,6 +530,11 @@
任务单ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.InStockDetails.BoxId">
<summary>
箱ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.InStockDetails.SourceBillNo">
<summary>
来源单号

View File

@@ -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
{
/// <summary>
/// 箱IDS
/// </summary>
public List<int> BoxIds { get; set; } = new List<int>();
/// <summary>
/// 明细

View File

@@ -16,6 +16,12 @@ namespace WMS.Web.Core.Dto.InStock
[Required(ErrorMessage = "任务单ID不能为空")]
public int TaskId { get; set; }
/// <summary>
/// 箱ID
/// </summary>
[Required(ErrorMessage = "箱ID不能为空")]
public int BoxId { get; set; }
/// <summary>
/// 来源单号
///</summary>
@@ -33,12 +39,6 @@ namespace WMS.Web.Core.Dto.InStock
[Required(ErrorMessage = "组织不能为空")]
public int OrgId { get; set; }
/// <summary>
/// 物料Id
///</summary>
[Required(ErrorMessage = "物料不能为空")]
public int MaterialId { get; set; }
/// <summary>
/// 仓库编码
///</summary>
@@ -50,6 +50,12 @@ namespace WMS.Web.Core.Dto.InStock
[Required(ErrorMessage = " 仓位不能为空")]
public int SubStockId { get; set; }
/// <summary>
/// 物料Id
///</summary>
[Required(ErrorMessage = "物料不能为空")]
public int MaterialId { get; set; }
/// <summary>
/// 入库数量
///</summary>

View File

@@ -32,7 +32,7 @@ namespace WMS.Web.Core.Dto.Inventory
/// <summary>
/// 明细
/// </summary>
public List<BoxInventoryBackDetailsGenerateDto> Details { get; set; }
public List<BoxInventoryBackDetailsGenerateDto> Details { get; set; } = new List<BoxInventoryBackDetailsGenerateDto>();
}
/// <summary>

View File

@@ -25,6 +25,11 @@ namespace WMS.Web.Domain.Entitys
/// </summary>
public int TaskId { get; set; }
/// <summary>
/// 箱ID
/// </summary>
public int BoxId { get; set; }
/// <summary>
/// 来源单号
/// </summary>

View File

@@ -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

View File

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