diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 49a317ea..344b5f84 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -3606,6 +3606,11 @@
出库任务单Id
+
+
+ 出库方式 必填;1-box按箱,2-product按产品
+
+
物料Id
diff --git a/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs b/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs
index 7b410eb7..ff690802 100644
--- a/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs
+++ b/src/WMS.Web.Core/Dto/OutStock/SaveOutStockRequest.cs
@@ -15,6 +15,11 @@ namespace WMS.Web.Core.Dto.OutStock
///
[Required(ErrorMessage = "出库单不能为空")]
public int TaskId { get; set; }
+ ///
+ /// 出库方式 必填;1-box按箱,2-product按产品
+ ///
+ [Required(ErrorMessage = "出库方式不能为空")]
+ public int Method { get; set; }
public List Details { get; set; } = new List();
}
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index b7ddaf78..4754d99f 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -7,6 +7,7 @@ using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.Erp;
+using WMS.Web.Core.Dto.Inventory;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Dto.OutStock;
using WMS.Web.Core.Dto.TakeStock;
@@ -34,10 +35,12 @@ namespace WMS.Web.Domain.Services
private readonly IOutStockTaskService _outStockTaskService;
private readonly IErpService _erpService;
private readonly ISerialNumberService _serialNumberService;
+ private readonly IBoxInventoryService _boxInventoryService;
public OutStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories,
- IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService)
+ IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService,
+ IBoxInventoryService boxInventoryService)
{
_mapper = mapper;
_loginService = loginService;
@@ -47,6 +50,7 @@ namespace WMS.Web.Domain.Services
_outStockTaskService = outStockTaskService;
_erpService = erpService;
_serialNumberService = serialNumberService;
+ _boxInventoryService = boxInventoryService;
}
///
/// 出库单
@@ -95,21 +99,50 @@ namespace WMS.Web.Domain.Services
}
entity.Create(loginInfo.UserInfo.StaffId, outStockTask);
-
- //需要填写序列号
- //需要修改库存
- //需要同步金蝶
+ #region 组装库存dto
+ List inventoryList = new List();
+ var boxIds = dto.Details.GroupBy(g => g.BoxId).Select(s => s.Key).ToList();
+ foreach (var boxId in boxIds)
+ {
+ var inventoryDetail = dto.Details.Where(w => w.BoxId == boxId).Select(s => new BoxInventoryGenerateDetailsDto()
+ {
+ MaterialId = s.MaterialId,
+ Qty = s.Qty,
+ SerialNumbers = s.SerialNumbers
+ }).ToList();
+ BoxInventoryGenerateDto inventory = new BoxInventoryGenerateDto()
+ {
+ BoxId = boxId,
+ InventoryInOutMethod = dto.Method,
+ StockCode = outStockTask.Details.First().StockCode,
+ SubStockId = outStockTask.Details.First().SubStockId,
+ Details = inventoryDetail
+ };
+ inventoryList.Add(inventory);
+ }
+ #endregion
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
bool isSuccess = true;
- entity = await _outStockRepositories.Add(entity, false);
-
- if (entity == null) isRollback = true;
- outStockTask = await _outStockTaskRepositories.Edit(outStockTask, false);
- if (outStockTask == null) isRollback = true;
- var res_change = await _serialNumberService.OutStock(entity, loginInfo, false);
- if (!res_change.IsSuccess) isRollback = true;
+ //修改库存
+ var res_Inventory = await _boxInventoryService.HandlBoxInventory(inventoryList, false);
+ if (!res_Inventory.IsSuccess) isRollback = true;
+ if (!isRollback)
+ {
+ entity = await _outStockRepositories.Add(entity, false);
+ if (entity == null) isRollback = true;
+ }
+ if (!isRollback)
+ {
+ outStockTask = await _outStockTaskRepositories.Edit(outStockTask, false);
+ if (outStockTask == null) isRollback = true;
+ }
+ if (!isRollback)
+ {
+ var res_change = await _serialNumberService.OutStock(entity, loginInfo, false);
+ if (!res_change.IsSuccess) isRollback = true;
+ }
//提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess)
@@ -134,10 +167,11 @@ namespace WMS.Web.Domain.Services
foreach (var s in failList)
{
var erp_details = entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.Erp_DetailId).ToList();
- var erpDto = new ErpPushDto() {
+ var erpDto = new ErpPushDto()
+ {
FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(),
Numbers = new List() { s },
- Type="",
+ Type = "",
DetailsId = string.Join(",", erp_details)
};
//下推金蝶