diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 466de104..0cd86929 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -2464,6 +2464,21 @@
+
+
+ 生成dto
+
+
+
+
+
+
+
+
+
+
+
+
出库服务
@@ -3341,19 +3356,23 @@
-
+
改箱-箱库存的变更
+
+
-
+
移箱-箱库存的变更
+
+
@@ -3672,6 +3691,21 @@
+
+
+ 生成dto
+
+
+
+
+
+
+
+
+
+
+
+
出库服务
@@ -4859,6 +4893,26 @@
组装拆卸出库
+
+
+ 改箱
+
+
+
+
+ 移箱
+
+
+
+
+ 出入库回退单
+
+
+
+
+ 盘点单
+
+
出库状态
diff --git a/src/WMS.Web.Core/Dto/Inventory/InventoryInOutDetailsGenerateDto.cs b/src/WMS.Web.Core/Dto/Inventory/InventoryInOutDetailsGenerateDto.cs
index df64e86d..2d3f2d55 100644
--- a/src/WMS.Web.Core/Dto/Inventory/InventoryInOutDetailsGenerateDto.cs
+++ b/src/WMS.Web.Core/Dto/Inventory/InventoryInOutDetailsGenerateDto.cs
@@ -47,10 +47,6 @@ namespace WMS.Web.Core.Dto.Inventory
/// 数量:出入库
///
public decimal Qty { get; set; }
- /////
- ///// 结存
- /////
- //public decimal SurplusQty { get; set; }
///
/// 类型:1为入库,2为出库
diff --git a/src/WMS.Web.Domain/IService/IInventoryInOutDetailsService.cs b/src/WMS.Web.Domain/IService/IInventoryInOutDetailsService.cs
index 350dd5ec..01f70b2b 100644
--- a/src/WMS.Web.Domain/IService/IInventoryInOutDetailsService.cs
+++ b/src/WMS.Web.Domain/IService/IInventoryInOutDetailsService.cs
@@ -4,6 +4,7 @@ using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.Inventory;
using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.IService
{
@@ -19,5 +20,20 @@ namespace WMS.Web.Domain.IService
///
///
Task GenerateInOrOutDetails(List dtos, bool isTransaction);
+
+ ///
+ /// 生成dto
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ InventoryInOutDetailsGenerateDto GenerateDto(int boxId, int materialId, string orgCode, string stockCode, int subStockId, OrderType orderType, string billNo, decimal qty, InventoryInOutType inventoryInOutType);
}
}
diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs
index 66e1bdce..e9b5a71c 100644
--- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs
+++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs
@@ -21,10 +21,12 @@ namespace WMS.Web.Domain.Services
private readonly IMapper _mapper;
private readonly IBoxRepositories _boxRepositories;
private readonly IInventoryDetailsService _inventoryDetailsService;
+ private readonly IInventoryInOutDetailsService _inventoryInOutDetailsService;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
public BoxInventoryService(IMapper mapper, IBoxRepositories boxRepositories,
IInventoryDetailsService inventoryDetailsService,
+ IInventoryInOutDetailsService inventoryInOutDetailsService,
ISerialNumbersRepositories serialNumbersRepositories,
IBoxInventoryRepositories boxInventoryRepositories)
{
@@ -33,6 +35,7 @@ namespace WMS.Web.Domain.Services
_inventoryDetailsService = inventoryDetailsService;
_serialNumbersRepositories = serialNumbersRepositories;
_boxInventoryRepositories = boxInventoryRepositories;
+ _inventoryInOutDetailsService = inventoryInOutDetailsService;
}
@@ -86,7 +89,49 @@ namespace WMS.Web.Domain.Services
}
});
//4.开始处理
- return await this.ExeChangeBox(generateDtos, isTransaction);
+ var result= await this.ExeChangeBox(generateDtos, sourceBoxInventorys, targetBoxInventorys, isTransaction);
+ if (!result.IsSuccess)
+ return result;
+
+ //5.物料收发明细dtos
+ var InventoryInOutDetailsGenerateDtoList = new List();
+
+ //5.1遍历
+ foreach (var item in dtoDatas)
+ {
+ //5.2组装:原箱物料收发明细;有箱库存就需要创建物料收发明细;
+ var sour = sourceBoxInventorys.Where(x => x.BoxId == item.SrcBoxId).FirstOrDefault();
+ if (sour != null)
+ {
+ var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
+ item.SrcBoxId, item.MaterialId,
+ sour.OrgCode, sour.StockCode,
+ sour.SubStockId, OrderType.ChangeBox,
+ item.BillNo, item.Qty, InventoryInOutType.Out);
+ InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
+ }
+ //5.3组装:目标箱物料收发明细;有箱库存就需要创建物料收发明细;
+ var tagBox = targetBoxInventorys.Where(x => x.BoxId == item.DestBoxId).FirstOrDefault();
+ if (tagBox != null)
+ {
+ var inventoryInOutDet=_inventoryInOutDetailsService.GenerateDto(
+ item.DestBoxId, item.MaterialId,
+ item.DestBoxOrgCode, item.DestStockCode,
+ item.DestSubStockId, OrderType.ChangeBox,
+ item.BillNo, item.Qty, InventoryInOutType.In);
+ InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
+ }
+ }
+
+ //5.提交物料收发明细:新增
+ if (InventoryInOutDetailsGenerateDtoList.Count != 0)
+ {
+ var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList,isTransaction);
+ if (!inout_result.IsSuccess)
+ return inout_result;
+ }
+ return Result.ReSuccess();
+
}
///
@@ -101,6 +146,9 @@ namespace WMS.Web.Domain.Services
if (dtoDatas == null || dtoDatas.Count == 0)
return Result.ReFailure(ResultCodes.InventoryNoSourceError);
+ //物料收发明细dtos
+ var InventoryInOutDetailsGenerateDtoList = new List();
+
//2.箱库存集合
var boxIds = dtoDatas.Where(x => x.BoxId != 0 && x.Type == MoveBoxType.Down).GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
var boxInventorys = await _boxInventoryRepositories.GetList(boxIds);
@@ -112,6 +160,7 @@ namespace WMS.Web.Domain.Services
var generateDtoList = new List();
foreach (var item in dtoDatas)
{
+ //2.2.1箱库存dto-组装
var generateDto = new BoxInventoryMoveGenerateDto();
generateDto.BoxId = item.BoxId;
generateDto.OrgCode = item.OrgCode;
@@ -120,9 +169,43 @@ namespace WMS.Web.Domain.Services
generateDto.InventoryInOutType = item.Type == MoveBoxType.Down ? (int)InventoryInOutType.Out : (int)InventoryInOutType.In;
generateDtoList.Add(generateDto);
+ //2.2.2物料收发明dto-组装
+ var SubStockId = item.Type == MoveBoxType.Up ? item.DestSubStockId : item.SrcSubStockId;
+ InventoryInOutType InOutType = item.Type == MoveBoxType.Down ? InventoryInOutType.Out : InventoryInOutType.In;
+ var ishave = boxInventorys.Where(x => x.BoxId == item.BoxId).Any();
+ //上架-箱是不存在库存的情况下,生成物料收发明细
+ //或者
+ //下架-箱库存是存在的情况下,生成物料收发明细
+ if ((!ishave && item.Type == MoveBoxType.Up) || (ishave && item.Type == MoveBoxType.Down))
+ {
+ //5.1.1取箱信息
+ var box = boxs.Where(x => x.Id == item.BoxId).FirstOrDefault();
+ foreach (var boxDet in box.Details)
+ {
+ var inventoryInOutDet = _inventoryInOutDetailsService.GenerateDto(
+ item.BoxId, boxDet.MaterialId,
+ item.OrgCode, item.StockCode,
+ SubStockId, OrderType.MoveBox,
+ item.BillNo, item.Qty, InOutType);
+ InventoryInOutDetailsGenerateDtoList.Add(inventoryInOutDet);
+ }
+ }
+
}
//4.开始处理
- return await this.ExeMoveBox(generateDtoList, isTransaction);
+ var result= await this.ExeMoveBox(generateDtoList, boxInventorys, boxs, isTransaction);
+ if (!result.IsSuccess)
+ return result;
+
+ //5.提交物料收发明细:新增
+ if (InventoryInOutDetailsGenerateDtoList.Count != 0)
+ {
+ var inout_result = await _inventoryInOutDetailsService.GenerateInOrOutDetails(InventoryInOutDetailsGenerateDtoList, isTransaction);
+ if (!inout_result.IsSuccess)
+ return inout_result;
+ }
+
+ return Result.ReSuccess();
}
///
@@ -425,13 +508,16 @@ namespace WMS.Web.Domain.Services
//提交处理
return await this.ExeOutStockBox(generateDtoList, isTransaction);
}
+
///
/// 改箱-箱库存的变更
///
///
+ ///
+ ///
///
///
- private async Task ExeChangeBox(List dtoDatas, bool isTransaction)
+ private async Task ExeChangeBox(List dtoDatas,List sourceBoxInventorys, List targetBoxInventorys, bool isTransaction)
{
//1.判断来源数据是否存在
if (dtoDatas == null || dtoDatas.Count == 0)
@@ -441,16 +527,6 @@ namespace WMS.Web.Domain.Services
var add_entitys = new List();
var InventoryDetailsGenerateDto = new List();
- var boxIds = dtoDatas.GroupBy(x => x.BoxId).Select(x => x.Key).ToList();
- var targetBoxIds = dtoDatas.GroupBy(x => x.TargetBoxId).Select(x => x.Key).ToList();
-
- //2.原来箱库存集合
- var sourceBoxInventorys = await _boxInventoryRepositories.GetList(boxIds);
-
- //2.1目标箱库存集合
- var targetBoxInventorys = await _boxInventoryRepositories.GetList(targetBoxIds);
-
-
foreach (var dto in dtoDatas)
{
#region 原箱库存-库存处理
@@ -487,7 +563,6 @@ namespace WMS.Web.Domain.Services
inventoryDet.InventoryInOutType = (int)InventoryInOutType.Out;
//2.2.2即时库存:修改箱库存的集合
InventoryDetailsGenerateDto.Add(inventoryDet);
-
}
//2.2.1箱库存:修改箱库存的集合
update_entitys.Add(sour_update_entity);
@@ -573,9 +648,11 @@ namespace WMS.Web.Domain.Services
/// 移箱-箱库存的变更
///
///
+ ///
+ ///
///
///
- private async Task ExeMoveBox(List dtoDatas, bool isTransaction)
+ private async Task ExeMoveBox(List dtoDatas, List boxInventorys,List boxs, bool isTransaction)
{
//1.判断来源数据是否存在
if (dtoDatas == null || dtoDatas.Count == 0)
@@ -587,8 +664,6 @@ namespace WMS.Web.Domain.Services
//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
diff --git a/src/WMS.Web.Domain/Services/InventoryInOutDetailsService.cs b/src/WMS.Web.Domain/Services/InventoryInOutDetailsService.cs
index 0b7c481b..5e5fe10d 100644
--- a/src/WMS.Web.Domain/Services/InventoryInOutDetailsService.cs
+++ b/src/WMS.Web.Domain/Services/InventoryInOutDetailsService.cs
@@ -79,5 +79,33 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
+
+ ///
+ /// 生成dto
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public InventoryInOutDetailsGenerateDto GenerateDto(int boxId,int materialId,string orgCode,string stockCode,int subStockId, OrderType orderType,string billNo,decimal qty, InventoryInOutType inventoryInOutType)
+ {
+ var item = new InventoryInOutDetailsGenerateDto();
+ item.BoxId = boxId;
+ item.MaterialId = materialId;
+ item.OrgCode = orgCode;
+ item.StockCode = stockCode;
+ item.SubStockId = subStockId;
+ item.OrderType = (int)orderType;
+ item.OrderBillNo = billNo;
+ item.Qty = qty;
+ item.InventoryInOutType = (int)inventoryInOutType;
+ return item;
+ }
}
}
diff --git a/src/WMS.Web.Domain/Values/OrderType.cs b/src/WMS.Web.Domain/Values/OrderType.cs
index 813c49e6..0252bfe9 100644
--- a/src/WMS.Web.Domain/Values/OrderType.cs
+++ b/src/WMS.Web.Domain/Values/OrderType.cs
@@ -60,5 +60,25 @@ namespace WMS.Web.Domain.Values
///
[EnumRemark("组装拆卸出库")]
Assembled_Out = 10,
+ ///
+ /// 改箱
+ ///
+ [EnumRemark("改箱单")]
+ ChangeBox = 11,
+ ///
+ /// 移箱
+ ///
+ [EnumRemark("移箱单")]
+ MoveBox = 12,
+ ///
+ /// 出入库回退单
+ ///
+ [EnumRemark("出入库回退单")]
+ Back = 13,
+ ///
+ /// 盘点单
+ ///
+ [EnumRemark("盘点单")]
+ Take = 14,
}
}