箱库存变更方法
This commit is contained in:
@@ -59,7 +59,7 @@ namespace WMS.Web.Api.Controllers
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
return await _backRecordService.BackShelf(dto, loginInfo);
|
||||
return await _backRecordService.BackShelf(dto, BackRecordType.OutstockOn, loginInfo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -74,7 +74,7 @@ namespace WMS.Web.Api.Controllers
|
||||
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
|
||||
if (loginInfo == null || loginInfo.UserInfo == null)
|
||||
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
|
||||
return await _backRecordService.BackShelf(dto, loginInfo);
|
||||
return await _backRecordService.BackShelf(dto, BackRecordType.InstockOff, loginInfo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -205,6 +205,11 @@
|
||||
数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.StockCode">
|
||||
<summary>
|
||||
仓库code
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordDetailsRequest.SubStockId">
|
||||
<summary>
|
||||
仓位ID
|
||||
@@ -220,11 +225,6 @@
|
||||
保存出入库回退上下架:请求对象
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordRequest.BackRecordType">
|
||||
<summary>
|
||||
类型:1为入库回退下架,2为出库回退上架
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.BackRecord.SaveBackRecordRequest.Details">
|
||||
<summary>
|
||||
明细
|
||||
@@ -1945,6 +1945,56 @@
|
||||
保存入库单-请求对象
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto">
|
||||
<summary>
|
||||
出入库回退上下架-箱库存处理对象
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto.BackRecordType">
|
||||
<summary>
|
||||
类型:1为入库回退下架,2为出库回退上架
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto.BoxId">
|
||||
<summary>
|
||||
箱ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto.StockCode">
|
||||
<summary>
|
||||
仓库编码
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto.SubStockId">
|
||||
<summary>
|
||||
仓位ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto.Details">
|
||||
<summary>
|
||||
明细
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Core.Dto.Inventory.BoxInventoryBackDetailsGenerateDto">
|
||||
<summary>
|
||||
出入库回退上下架明细-箱库存处理对象
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackDetailsGenerateDto.MaterialId">
|
||||
<summary>
|
||||
物料ID
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackDetailsGenerateDto.Qty">
|
||||
<summary>
|
||||
数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Core.Dto.Inventory.BoxInventoryBackDetailsGenerateDto.SerialNumbers">
|
||||
<summary>
|
||||
序列号集
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Core.Dto.Inventory.BoxInventoryChangeGenerateDto">
|
||||
<summary>
|
||||
改箱-使用
|
||||
|
||||
@@ -80,6 +80,11 @@
|
||||
数量
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.BackRecordDetails.StockCode">
|
||||
<summary>
|
||||
仓库code
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:WMS.Web.Domain.Entitys.BackRecordDetails.SubStockId">
|
||||
<summary>
|
||||
仓位ID
|
||||
@@ -1836,11 +1841,12 @@
|
||||
出入库回退上下架:服务接口
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.IService.IBackRecordService.BackShelf(WMS.Web.Core.Dto.BackRecord.SaveBackRecordRequest,WMS.Web.Core.Dto.Login.LoginInDto)">
|
||||
<member name="M:WMS.Web.Domain.IService.IBackRecordService.BackShelf(WMS.Web.Core.Dto.BackRecord.SaveBackRecordRequest,WMS.Web.Domain.Values.BackRecordType,WMS.Web.Core.Dto.Login.LoginInDto)">
|
||||
<summary>
|
||||
回退上下架
|
||||
</summary>
|
||||
<param name="dto"></param>
|
||||
<param name="type"></param>
|
||||
<param name="loginInfo"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
@@ -2841,11 +2847,12 @@
|
||||
出入库回退上下架:服务接口
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.BackRecordService.BackShelf(WMS.Web.Core.Dto.BackRecord.SaveBackRecordRequest,WMS.Web.Core.Dto.Login.LoginInDto)">
|
||||
<member name="M:WMS.Web.Domain.Services.BackRecordService.BackShelf(WMS.Web.Core.Dto.BackRecord.SaveBackRecordRequest,WMS.Web.Domain.Values.BackRecordType,WMS.Web.Core.Dto.Login.LoginInDto)">
|
||||
<summary>
|
||||
回退上下架
|
||||
</summary>
|
||||
<param name="dto"></param>
|
||||
<param name="type"></param>
|
||||
<param name="loginInfo"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
@@ -3084,6 +3091,14 @@
|
||||
<param name="isTransaction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:WMS.Web.Domain.Services.InventoryService.GenerateBackBox(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.BoxInventoryBackGenerateDto},System.Boolean)">
|
||||
<summary>
|
||||
入库回退上下架-箱库存的变更
|
||||
</summary>
|
||||
<param name="dtoDatas"></param>
|
||||
<param name="isTransaction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:WMS.Web.Domain.Services.OutStockService">
|
||||
<summary>
|
||||
出库服务
|
||||
|
||||
@@ -25,6 +25,13 @@ namespace WMS.Web.Core.Dto.BackRecord
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "数量不能为空")]
|
||||
public decimal Qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓库code
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "仓库不能为空")]
|
||||
public string StockCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓位ID
|
||||
/// </summary>
|
||||
|
||||
@@ -10,12 +10,6 @@ namespace WMS.Web.Core.Dto.BackRecord
|
||||
/// </summary>
|
||||
public class SaveBackRecordRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 类型:1为入库回退下架,2为出库回退上架
|
||||
/// </summary>
|
||||
[Required(ErrorMessage = "回退类型不能为空")]
|
||||
public int BackRecordType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 明细
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace WMS.Web.Core.Dto.Inventory
|
||||
{
|
||||
/// <summary>
|
||||
/// 出入库回退上下架-箱库存处理对象
|
||||
/// </summary>
|
||||
public class BoxInventoryBackGenerateDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 类型:1为入库回退下架,2为出库回退上架
|
||||
/// </summary>
|
||||
public int BackRecordType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 箱ID
|
||||
/// </summary>
|
||||
public int BoxId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓库编码
|
||||
/// </summary>
|
||||
public string StockCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 仓位ID
|
||||
/// </summary>
|
||||
public int SubStockId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 明细
|
||||
/// </summary>
|
||||
public List<BoxInventoryBackDetailsGenerateDto> Details { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 出入库回退上下架明细-箱库存处理对象
|
||||
/// </summary>
|
||||
public class BoxInventoryBackDetailsGenerateDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 物料ID
|
||||
/// </summary>
|
||||
public int MaterialId { get; set; }
|
||||
/// <summary>
|
||||
/// 数量
|
||||
/// </summary>
|
||||
public decimal Qty { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序列号集
|
||||
/// </summary>
|
||||
public List<string> SerialNumbers { get; set; } = new List<string>();
|
||||
}
|
||||
}
|
||||
@@ -19,21 +19,6 @@ namespace WMS.Web.Core.Dto.Inventory
|
||||
/// </summary>
|
||||
public int TargetBoxId { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 仓库编码:目标仓库
|
||||
///// </summary>
|
||||
//public string StockCode { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 仓位:目标仓位
|
||||
///// </summary>
|
||||
//public int SubStockId { get; set; }
|
||||
|
||||
///// <summary>
|
||||
///// 出入库类型:有个枚举的
|
||||
///// </summary>
|
||||
//public int InventoryInOutType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 明细
|
||||
/// </summary>
|
||||
|
||||
@@ -33,6 +33,10 @@ namespace WMS.Web.Domain.Entitys
|
||||
/// </summary>
|
||||
public decimal Qty { get; set; }
|
||||
/// <summary>
|
||||
/// 仓库code
|
||||
/// </summary>
|
||||
public string StockCode { get; set; }
|
||||
/// <summary>
|
||||
/// 仓位ID
|
||||
/// </summary>
|
||||
public int SubStockId { get; set; }
|
||||
|
||||
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
|
||||
using WMS.Web.Core.Dto.BackRecord;
|
||||
using WMS.Web.Core.Dto.Login;
|
||||
using WMS.Web.Core.Internal.Results;
|
||||
using WMS.Web.Domain.Values;
|
||||
|
||||
namespace WMS.Web.Domain.IService
|
||||
{
|
||||
@@ -17,8 +18,9 @@ namespace WMS.Web.Domain.IService
|
||||
/// 回退上下架
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="loginInfo"></param>
|
||||
/// <returns></returns>
|
||||
Task<Result> BackShelf(SaveBackRecordRequest dto, LoginInDto loginInfo);
|
||||
Task<Result> BackShelf(SaveBackRecordRequest dto, BackRecordType type, LoginInDto loginInfo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,10 @@ namespace WMS.Web.Domain.Mappers
|
||||
//移箱映射
|
||||
CreateMap<BoxInventoryMoveGenerateDto, BoxInventory>();
|
||||
CreateMap<BoxDetails, BoxInventoryDetails>() ;
|
||||
|
||||
//出入库回退上下架映射
|
||||
CreateMap<BoxInventoryBackGenerateDto, BoxInventory>();
|
||||
CreateMap<BoxInventoryBackDetailsGenerateDto, BoxInventoryDetails>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,16 +40,17 @@ namespace WMS.Web.Domain.Services
|
||||
/// 回退上下架
|
||||
/// </summary>
|
||||
/// <param name="dto"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="loginInfo"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> BackShelf(SaveBackRecordRequest dto, LoginInDto loginInfo)
|
||||
public async Task<Result> BackShelf(SaveBackRecordRequest dto, BackRecordType type, LoginInDto loginInfo)
|
||||
{
|
||||
IDbContextTransaction _transaction = _basicsRepositories.GetTransaction();
|
||||
bool isRollback = false;
|
||||
bool isTransaction = false;
|
||||
|
||||
var entity = new BackRecord();
|
||||
entity.Type = (BackRecordType)dto.BackRecordType;
|
||||
entity.Type = type;
|
||||
entity.Details = _mapper.Map<List<BackRecordDetails>>(dto.Details);
|
||||
entity.Create(loginInfo.UserInfo.StaffId);
|
||||
entity = await _backRecordRepositories.Add(entity, isTransaction);
|
||||
|
||||
@@ -231,5 +231,100 @@ namespace WMS.Web.Domain.Services
|
||||
}
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 入库回退上下架-箱库存的变更
|
||||
/// </summary>
|
||||
/// <param name="dtoDatas"></param>
|
||||
/// <param name="isTransaction"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<Result> GenerateBackBox(List<BoxInventoryBackGenerateDto> dtoDatas, bool isTransaction)
|
||||
{
|
||||
//1.判断来源数据是否存在
|
||||
if (dtoDatas != null || dtoDatas.Count == 0)
|
||||
return Result.ReFailure(ResultCodes.InventoryNoSourceError);
|
||||
|
||||
var update_entitys = new List<BoxInventory>();
|
||||
var add_entitys = new List<BoxInventory>();
|
||||
|
||||
//2.获取“箱库存集合”
|
||||
var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
|
||||
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
|
||||
var boxs = await _boxRepositories.GetEntityList(boxIds);
|
||||
var serialNumbers = await _serialNumbersRepositories.GetEntityListByBoxIds(boxIds);
|
||||
//3.遍历:dto
|
||||
foreach (var dto in dtoDatas)
|
||||
{
|
||||
//上架
|
||||
if (dto.BackRecordType == (int)BackRecordType.OutstockOn)
|
||||
{
|
||||
//3.1上架的时候:箱一定是不存在于箱库存当中的,有则返回提示“已有箱库存,不需要再扫上架”
|
||||
var ishave = boxInventorys.Where(x => x.BoxId == dto.BoxId).Any();
|
||||
if (ishave)
|
||||
return Result.ReFailure(ResultCodes.BoxInventoryHaveInventoryError);
|
||||
//3.1.1取箱信息
|
||||
var box = boxs.Where(x => x.Id == dto.BoxId).FirstOrDefault();
|
||||
if (box == null)
|
||||
return Result.ReFailure(ResultCodes.BoxNoData);
|
||||
//3.1.2去箱对应的序列号信息
|
||||
var box_serialNumbers = serialNumbers.Where(x => x.BoxId == dto.BoxId).Select(x => new { x.MaterialId, x.SerialNumber }).ToList();
|
||||
|
||||
//3.2组装要新增的箱库存信息:箱和明细和序列号
|
||||
var addEntity = _mapper.Map<BoxInventory>(dto);
|
||||
addEntity.Details = _mapper.Map<List<BoxInventoryDetails>>(box.Details);
|
||||
|
||||
add_entitys.Add(addEntity);
|
||||
|
||||
|
||||
}//下架
|
||||
else
|
||||
{
|
||||
//3.1下架的时候:箱一定是存在于箱库存当中的,没有则返回提示“箱不存在于库存,请扫其它箱”
|
||||
var boxInventory = boxInventorys.Where(x => x.BoxId == dto.BoxId).FirstOrDefault();
|
||||
if (boxInventory==null)
|
||||
return Result.ReFailure(ResultCodes.BoxInventoryNoDataError);
|
||||
//3.2创建更新对象
|
||||
var update_entity = new BoxInventory();
|
||||
update_entity.Details = new List<BoxInventoryDetails>();
|
||||
|
||||
//3.3遍历dto明细
|
||||
foreach (var dtoItem in dto.Details)
|
||||
{
|
||||
//找到原来的箱库存对应要改变的物料:这个一定是存在的,不存在就有问题
|
||||
var updateDetail = boxInventory.Details.Where(x => x.MaterialId == dtoItem.MaterialId).FirstOrDefault();
|
||||
if (updateDetail == null)
|
||||
return Result.ReFailure(ResultCodes.BoxInventoryNoDataError);
|
||||
//箱物料的库存数量不足;小于要拿出来的数量
|
||||
if (updateDetail.Qty < dtoItem.Qty)
|
||||
return Result.ReFailure(ResultCodes.BoxInventoryNoInventoryError);
|
||||
|
||||
var update_entity_det = new BoxInventoryDetails();
|
||||
update_entity_det.SerialNumbers = new List<string>();
|
||||
update_entity_det.Qty = updateDetail.Qty - dtoItem.Qty;
|
||||
|
||||
//先把现有的序列号复制过来
|
||||
update_entity_det.SerialNumbers = updateDetail.SerialNumbers;
|
||||
//再移除要改箱的序列号;最后就是原箱库存的新序列号
|
||||
update_entity_det.SerialNumbers.RemoveAll(x => dtoItem.SerialNumbers.Contains(x));
|
||||
|
||||
update_entity.Details.Add(update_entity_det);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var isSuccess = true;
|
||||
//4.数据库更新操作:更新和添加
|
||||
if (add_entitys.Count != 0)
|
||||
{
|
||||
isSuccess = await _boxInventoryRepositories.AddRange(add_entitys, isTransaction);
|
||||
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
|
||||
}
|
||||
if (update_entitys.Count != 0)
|
||||
{
|
||||
isSuccess = await _boxInventoryRepositories.UpdateRange(update_entitys, isTransaction);
|
||||
if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError);
|
||||
}
|
||||
return Result.ReSuccess();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user