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

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> </summary>
</member> </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>
生成:即时库存明细 生成:即时库存明细
</summary> </summary>
@@ -5794,7 +5794,7 @@
即时库存-服务 即时库存-服务
</summary> </summary>
</member> </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>
生成:即时库存明细 生成:即时库存明细
</summary> </summary>

View File

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

View File

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

View File

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

View File

@@ -42,7 +42,7 @@ namespace WMS.Web.Domain.Services
/// <param name="dtos"></param> /// <param name="dtos"></param>
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <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(); var orgCodes = dtos.Select(x => x.OrgCode).ToList();
@@ -86,10 +86,28 @@ namespace WMS.Web.Domain.Services
else else
{ {
//出库的时候,判断是否有库存,没有就返回错误 //出库的时候,判断是否有库存,没有就返回错误
if (entity.Qty<dto.Qty) if (isPanDian == "1")
return Result.ReFailure(ResultCodes.InventoryDetailsNoInventoryError); {
//减库存 if (entity.Qty < dto.Qty)
entity.Qty = 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); update_entitys.Add(entity);
} }