修改盘点报物料库存不足的问题。

This commit is contained in:
2025-05-28 15:42:20 +08:00
parent a17ed1650c
commit 82df2ce27d
6 changed files with 41 additions and 21 deletions

View File

@@ -3983,7 +3983,7 @@
即时库存-服务接口
</summary>
</member>
<member name="M:WMS.Web.Domain.IService.IInventoryDetailsService.GenerateInventoryDetails(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.InventoryDetailsGenerateDto},System.Boolean)">
<member name="M:WMS.Web.Domain.IService.IInventoryDetailsService.GenerateInventoryDetails(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.InventoryDetailsGenerateDto},System.Boolean,System.String)">
<summary>
生成:即时库存明细
</summary>
@@ -5794,7 +5794,7 @@
即时库存-服务
</summary>
</member>
<member name="M:WMS.Web.Domain.Services.InventoryDetailsService.GenerateInventoryDetails(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.InventoryDetailsGenerateDto},System.Boolean)">
<member name="M:WMS.Web.Domain.Services.InventoryDetailsService.GenerateInventoryDetails(System.Collections.Generic.List{WMS.Web.Core.Dto.Inventory.InventoryDetailsGenerateDto},System.Boolean,System.String)">
<summary>
生成:即时库存明细
</summary>

View File

@@ -18,7 +18,7 @@ namespace WMS.Web.Domain.IService
/// <param name="dtos"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<Result> GenerateInventoryDetails(List<InventoryDetailsGenerateDto> dtos, bool isTransaction);
Task<Result> GenerateInventoryDetails(List<InventoryDetailsGenerateDto> dtos, bool isTransaction,string isPandian);
/// <summary>
/// 获取即时库存明细汇总

View File

@@ -888,7 +888,7 @@ namespace WMS.Web.Domain.Services
invDetGenDtos.AddRange(invDetGenDtos_out);
if (invDetGenDtos.Count != 0)
{
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction,"0");
if (!InventoryDetailsGenerate_result.IsSuccess)
return InventoryDetailsGenerate_result;
}
@@ -1035,7 +1035,7 @@ namespace WMS.Web.Domain.Services
if (invDetGenDtos.Count != 0)
{
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction, "0");
if (!InventoryDetailsGenerate_result.IsSuccess)
return InventoryDetailsGenerate_result;
}
@@ -1305,7 +1305,7 @@ namespace WMS.Web.Domain.Services
invDetGenDtos.AddRange(invDetGenDtos_out);
if (invDetGenDtos.Count != 0)
{
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction, "0");
if (!InventoryDetailsGenerate_result.IsSuccess)
return InventoryDetailsGenerate_result;
}
@@ -1514,7 +1514,7 @@ namespace WMS.Web.Domain.Services
invDetGenDtos.AddRange(invDetGenDtos_out);
if (invDetGenDtos.Count != 0)
{
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction, "0");
if (!InventoryDetailsGenerate_result.IsSuccess)
return InventoryDetailsGenerate_result;
}
@@ -1565,7 +1565,8 @@ namespace WMS.Web.Domain.Services
inventoryDet.OrgCode = item.OrgCode;
inventoryDet.StockCode = item.StockCode;
inventoryDet.SubStockCode = item.SubStockCode;
inventoryDet.Qty = current_sers_info.Count;
//inventoryDet.Qty = current_sers_info.Count;
inventoryDet.Qty = current_sers_infoCount.Count;
inventoryDet.InventoryInOutType = (int)InventoryInOutType.Out;
//3.2.2即时库存:修改的集合
InventoryDetailsGenerateDto1.Add(inventoryDet);
@@ -1612,7 +1613,7 @@ namespace WMS.Web.Domain.Services
}
if (InventoryDetailsGenerateDto1.Count != 0)
{
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto1, isTransaction);
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto1, isTransaction, "1");
if (!InventoryDetailsGenerate_result.IsSuccess)
return InventoryDetailsGenerate_result;
}
@@ -1811,7 +1812,7 @@ namespace WMS.Web.Domain.Services
_logger.LogInformation($"入库对应即时库存:{JsonConvert.SerializeObject(invDetGenDtos)} 操作时间:{DateTime.Now.ToString()}");
if (invDetGenDtos.Count != 0)
{
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
var InventoryDetailsGenerate_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction, "0");
if (!InventoryDetailsGenerate_result.IsSuccess)
return InventoryDetailsGenerate_result;
}
@@ -1964,7 +1965,7 @@ namespace WMS.Web.Domain.Services
}).ToList();
if (invDetGenDtos.Count != 0)
{
var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction);
var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(invDetGenDtos, isTransaction, "0");
if (!inventoryDetails_result.IsSuccess)
return inventoryDetails_result;
}
@@ -2099,7 +2100,7 @@ namespace WMS.Web.Domain.Services
//5.即时库存:变更处理
if (InventoryDetailsGenerateDto.Count != 0)
{
var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction);
var inventoryDetails_result = await _inventoryDetailsService.GenerateInventoryDetails(InventoryDetailsGenerateDto, isTransaction, "0");
if (!inventoryDetails_result.IsSuccess)
return inventoryDetails_result;
}

View File

@@ -96,17 +96,18 @@ namespace WMS.Web.Domain.Services
var boxs = await _boxInventoryRepositories.GetList(srcIds);
var destIds_boxs = await _boxInventoryRepositories.GetList(destIds);
var serialNumbers = dto.SelectMany(s => s.Details).SelectMany(s => s.SerialNumbers).ToList();
var TwoserialNumbers = dto.SelectMany(s => s.Details).SelectMany(s => s.TwoSerialNumbers).ToList();
var serialNumbers = dto.SelectMany(s => s.Details).SelectMany(s => s.SerialNumbers).Distinct().ToList();
var TwoserialNumbers = dto.SelectMany(s => s.Details).SelectMany(s => s.TwoSerialNumbers).Distinct().ToList();
serialNumbers.AddRange(TwoserialNumbers);
serialNumbers.Sort();
var serialNumberList = await _serialNumbersRepositories.GetEntityList(serialNumbers);
foreach (var d in dto)
{
if (d.SrcBoxId == 0)
{
//没有原箱的情况下需要验证序列号是否有箱子绑定
var s = d.Details.SelectMany(s => s.SerialNumbers).ToList();
var s = d.Details.SelectMany(s => s.SerialNumbers).Distinct().ToList();
var sCount = serialNumberList.Where(w => s.Contains(w.SerialNumber) && w.BoxId != 0).Count();
if (sCount > 0)
return Result.ReFailure(ResultCodes.SerialNumbersBoxError);
@@ -119,7 +120,7 @@ namespace WMS.Web.Domain.Services
else
{
//有原箱的情况下验证序列号和原箱是否一致(排除没有绑定箱的老ops条码数据)
var s = d.Details.SelectMany(s => s.SerialNumbers).ToList();
var s = d.Details.SelectMany(s => s.SerialNumbers).Distinct().ToList();
var boxCount = serialNumberList.Where(w => !(w.BoxId == 0 && w.Creator == "ops")).Where(w => s.Contains(w.SerialNumber)).GroupBy(s => s.BoxId).Select(s => s.Key).ToList();
if (boxCount.Count() > 1 || (boxCount.Count() == 1 && boxCount[0] != d.SrcBoxId))
return Result.ReFailure(ResultCodes.SerialNumbersSrcBoxError);

View File

@@ -42,7 +42,7 @@ namespace WMS.Web.Domain.Services
/// <param name="dtos"></param>
/// <param name="isTransaction"></param>
/// <returns></returns>
public async Task<Result> GenerateInventoryDetails(List<InventoryDetailsGenerateDto> dtos,bool isTransaction)
public async Task<Result> GenerateInventoryDetails(List<InventoryDetailsGenerateDto> dtos,bool isTransaction,string isPanDian)
{
//找到物料对应的即时库存明细
var orgCodes = dtos.Select(x => x.OrgCode).ToList();
@@ -86,10 +86,28 @@ namespace WMS.Web.Domain.Services
else
{
//出库的时候,判断是否有库存,没有就返回错误
if (entity.Qty<dto.Qty)
return Result.ReFailure(ResultCodes.InventoryDetailsNoInventoryError);
//减库存
entity.Qty = entity.Qty - dto.Qty;
if (isPanDian == "1")
{
if (entity.Qty < dto.Qty)
{
entity.Qty = 0;
}
else
{
// return Result.ReFailure(ResultCodes.InventoryDetailsNoInventoryError);
//减库存
entity.Qty = entity.Qty - dto.Qty;
}
}
else
{
if (entity.Qty < dto.Qty)
return Result.ReFailure(ResultCodes.InventoryDetailsNoInventoryError);
//减库存
entity.Qty = entity.Qty - dto.Qty;
}
}
update_entitys.Add(entity);
}