diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 3434af0d..5332c4bd 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -2426,6 +2426,36 @@
物料库存数量
+
+
+ 即时库存明细:生成dto
+
+
+
+
+ 物料ID
+
+
+
+
+ 仓库
+
+
+
+
+ 仓位ID
+
+
+
+
+ 数量:出入库
+
+
+
+
+ 类型:1为入库,2为出库
+
+
即时库存明细-查询请求对象
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 80212b52..788cce27 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -2283,6 +2283,19 @@
+
+
+ 即时库存-服务接口
+
+
+
+
+ 生成:即时库存明细
+
+
+
+
+
物料收发明细:服务接口
@@ -3422,6 +3435,19 @@
+
+
+ 即时库存-服务
+
+
+
+
+ 生成:即时库存明细
+
+
+
+
+
物料收发明细:服务
diff --git a/src/WMS.Web.Core/Dto/Inventory/InventoryDetailsGenerateDto.cs b/src/WMS.Web.Core/Dto/Inventory/InventoryDetailsGenerateDto.cs
new file mode 100644
index 00000000..6936d7c9
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/Inventory/InventoryDetailsGenerateDto.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.Inventory
+{
+ ///
+ /// 即时库存明细:生成dto
+ ///
+ public class InventoryDetailsGenerateDto
+ {
+ ///
+ /// 物料ID
+ ///
+ public int MaterialId { get; set; }
+
+ ///
+ /// 仓库
+ ///
+ public string StockCode { get; set; }
+
+ ///
+ /// 仓位ID
+ ///
+ public int SubStockId { get; set; }
+
+ ///
+ /// 数量:出入库
+ ///
+ public decimal Qty { get; set; }
+
+ ///
+ /// 类型:1为入库,2为出库
+ ///
+ public int InventoryInOutType { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Domain/IService/IInventoryDetailsService.cs b/src/WMS.Web.Domain/IService/IInventoryDetailsService.cs
new file mode 100644
index 00000000..0b5a88bf
--- /dev/null
+++ b/src/WMS.Web.Domain/IService/IInventoryDetailsService.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.Inventory;
+using WMS.Web.Core.Internal.Results;
+
+namespace WMS.Web.Domain.IService
+{
+ ///
+ /// 即时库存-服务接口
+ ///
+ public interface IInventoryDetailsService
+ {
+ ///
+ /// 生成:即时库存明细
+ ///
+ ///
+ ///
+ ///
+ Task GenerateInventoryDetails(List dtos, bool isTransaction);
+ }
+}
diff --git a/src/WMS.Web.Domain/Mappers/InventoryMapper.cs b/src/WMS.Web.Domain/Mappers/InventoryMapper.cs
index 4bdccbc1..b93becb1 100644
--- a/src/WMS.Web.Domain/Mappers/InventoryMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/InventoryMapper.cs
@@ -41,9 +41,10 @@ namespace WMS.Web.Domain.Mappers
CreateMap()
.ForMember(x => x.OrderType, ops => ops.MapFrom(x => x.OrderType))
.ForMember(x => x.Type, ops => ops.MapFrom(x => x.InventoryInOutType));
+
+ //即时库存明细-映射
+ CreateMap();
-
-
}
}
}
diff --git a/src/WMS.Web.Domain/Services/InventoryDetailsService.cs b/src/WMS.Web.Domain/Services/InventoryDetailsService.cs
new file mode 100644
index 00000000..41d8194e
--- /dev/null
+++ b/src/WMS.Web.Domain/Services/InventoryDetailsService.cs
@@ -0,0 +1,103 @@
+using AutoMapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WMS.Web.Core.Dto.Inventory;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Entitys;
+using WMS.Web.Domain.Infrastructure;
+using WMS.Web.Domain.IService;
+using WMS.Web.Domain.Values;
+
+namespace WMS.Web.Domain.Services
+{
+ ///
+ /// 即时库存-服务
+ ///
+ public class InventoryDetailsService: IInventoryDetailsService
+ {
+ private readonly IMapper _mapper;
+ private readonly IBoxRepositories _boxRepositories;
+ private readonly ISerialNumbersRepositories _serialNumbersRepositories;
+ private readonly IInventoryDetailsRepositories _inventoryDetailsRepositories;
+ public InventoryDetailsService(IMapper mapper, IBoxRepositories boxRepositories,
+ ISerialNumbersRepositories serialNumbersRepositories,
+ IInventoryDetailsRepositories inventoryDetailsRepositories)
+ {
+ _mapper = mapper;
+ _boxRepositories = boxRepositories;
+ _inventoryDetailsRepositories = inventoryDetailsRepositories;
+ _serialNumbersRepositories = serialNumbersRepositories;
+ }
+
+ ///
+ /// 生成:即时库存明细
+ ///
+ ///
+ ///
+ ///
+ public async Task GenerateInventoryDetails(List dtos,bool isTransaction)
+ {
+ //找到物料对应的即时库存明细
+ var materialIds = dtos.Select(x => x.MaterialId).ToList();
+ var stockCodes = dtos.GroupBy(x => x.StockCode).Select(x => x.Key).ToList();
+ var subStockIds = dtos.GroupBy(x => x.SubStockId).Select(x => x.Key).ToList();
+ var inventoryDetails = await _inventoryDetailsRepositories.GetListBy(materialIds, stockCodes, subStockIds);
+
+
+ var add_entitys = new List();
+ var update_entitys = new List();
+
+ //2.遍历
+ foreach (var dto in dtos)
+ {
+ //2.1当前的即时库存明细
+ var currentDetail = inventoryDetails.Where(x => x.MaterialId == dto.MaterialId && x.StockCode == dto.StockCode && x.SubStockId == dto.SubStockId).FirstOrDefault();
+ if (currentDetail == null)
+ {
+ //出库的时候,判断是否有库存,没有就返回错误
+ if (dto.InventoryInOutType == (int)InventoryInOutType.Out)
+ return Result.ReFailure(ResultCodes.InventoryDetailsNoInventoryError);
+
+ var entity = _mapper.Map(dto);
+ add_entitys.Add(entity);
+ }
+ else
+ {
+ var entity = currentDetail;
+ if (dto.InventoryInOutType == (int)InventoryInOutType.In)
+ {
+ //加库存
+ entity.Qty = entity.Qty + dto.Qty;
+ }
+ else
+ {
+ //出库的时候,判断是否有库存,没有就返回错误
+ if (entity.Qty BoxInventoryNoDataError = (800011, "箱库存数据不存在,请稍候再试!");
public static ValueTuple BoxInventoryMaterialNoDataError = (800041, "箱物料库存数据不存在,请稍候再试!");
public static ValueTuple BoxInventoryNoInventoryError = (800012, "箱库存物料数量不足,请核对后再试!");
+ public static ValueTuple InventoryDetailsNoInventoryError = (800012, "物料库存数量不足,请核对后再试!");
public static ValueTuple BoxInventoryHaveInventoryError = (800013, "该箱库存已经存在,请核对后再试!");
public static ValueTuple InventoryInOutDetailsWriteError = (800014, "写入物料收发明细失败!");
+ public static ValueTuple InventoryDetailsWriteError = (800014, "写入即时库存明细失败!");
}
diff --git a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
index ec831592..0acd41d2 100644
--- a/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
+++ b/src/WMS.Web.Repositories/DependencyInjection/AppBuilder.cs
@@ -294,6 +294,7 @@ namespace WMS.Web.Repositories.DependencyInjection
Services.AddTransient();
Services.AddTransient();
Services.AddTransient();
+ Services.AddTransient();
}
}