diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs
index a381663f..2c8f391e 100644
--- a/src/WMS.Web.Domain/Entitys/Box.cs
+++ b/src/WMS.Web.Domain/Entitys/Box.cs
@@ -146,5 +146,19 @@ namespace WMS.Web.Domain.Entitys
return Result.ReSuccess();
}
+ ///
+ /// 出库
+ ///
+ ///
+ ///
+ ///
+ public Result OutStock(int materialId, decimal qty)
+ {
+ var d = this.Details.FirstOrDefault(f => f.MaterialId == materialId);
+ if (d != null)
+ d.Qty = (d.Qty - qty) > 0 ? (d.Qty - qty) : 0;
+
+ return Result.ReSuccess();
+ }
}
}
diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
index efe25e22..52daf3c2 100644
--- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs
@@ -25,6 +25,8 @@ namespace WMS.Web.Domain.IService
Task ChangeBox_BackRecord(BackRecord BackRecord, LoginInDto loginInfo, bool isTransaction = true);
//非采购入库
Task ChangeBox_InStock(InStock InStocks, LoginInDto loginInfo, bool isTransaction = true);
+ //出库
+ Task ChangeBox_OutStock(OutStock outStock, bool isTransaction = true);
}
}
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index 43d0f269..44fdf1a1 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -427,5 +427,47 @@ namespace WMS.Web.Domain.Services
return await ChangeBoxSave(dtoList, loginInfo, isTransaction, false);
}
+ ///
+ /// 出库
+ ///
+ ///
+ ///
+ ///
+ public async Task ChangeBox_OutStock(OutStock outStock, bool isTransaction = true)
+ {
+ if (outStock.Method == InventoryInOutMethod.Box) return Result.ReSuccess();
+ List dtoList = new List();
+ var boxDetails = outStock.Details.SelectMany(s => s.BoxsDetails);
+ var boxIds = boxDetails.Select(s => s.BoxId).Distinct().ToList();
+ var boxs = await _boxRepositories.GetEntityList(boxIds);
+ foreach (var d in outStock.Details)
+ {
+ foreach (var db in d.BoxsDetails)
+ {
+ var box = boxs.FirstOrDefault(f => f.Id == db.BoxId);
+ if (box == null) continue;
+ box.OutStock(d.MaterialId, db.Qty);
+ }
+ }
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _basbicsRepositories.GetTransaction();
+ Result res_Rollback = Result.ReSuccess();
+ bool isSuccess = true;
+ if (res_Rollback.IsSuccess)
+ {
+ isSuccess = await _boxRepositories.EditEntityList(boxs, false);
+ if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError);
+ }
+ //提交事务
+ if (isTransaction)
+ {
+ isSuccess = _basbicsRepositories.CommitTransaction(res_Rollback.IsSuccess ? false : true, _transaction);
+ if (!res_Rollback.IsSuccess) return res_Rollback;
+ if (!isSuccess)
+ return Result.ReFailure(ResultCodes.DateWriteError);
+ }
+ return Result.ReSuccess();
+ }
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs
index e25d90e9..fc4b3d81 100644
--- a/src/WMS.Web.Domain/Services/OutStockService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockService.cs
@@ -48,13 +48,15 @@ namespace WMS.Web.Domain.Services
private readonly ISingleDataService _singleDataService;
private readonly IServiceScopeFactory _serviceScopeFactory;
private readonly IInStockTaskBoxService _inStockTaskService;
+ private readonly IChangeMoveBoxService _changeMoveBoxService;
public OutStockService(IMapper mapper, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories,
IOutStockTaskService outStockTaskService, IErpService erpService, ISerialNumberService serialNumberService,
IBoxInventoryService boxInventoryService, IInventoryInOutDetailsService inventoryInOutDetailsService,
IBoxInventoryRepositories boxInventoryRepositories, ILogger logger, IBoxRepositories boxRepositories,
- ISingleDataService singleDataService, IServiceScopeFactory serviceScopeFactory, IInStockTaskBoxService inStockTaskService)
+ ISingleDataService singleDataService, IServiceScopeFactory serviceScopeFactory, IInStockTaskBoxService inStockTaskService,
+ IChangeMoveBoxService changeMoveBoxService)
{
_mapper = mapper;
_loginService = loginService;
@@ -72,6 +74,7 @@ namespace WMS.Web.Domain.Services
_singleDataService = singleDataService;
_serviceScopeFactory = serviceScopeFactory;
_inStockTaskService = inStockTaskService;
+ _changeMoveBoxService = changeMoveBoxService;
}
///
/// 出库单
@@ -195,6 +198,11 @@ namespace WMS.Web.Domain.Services
if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory;
}
if (res_Rollback.IsSuccess)
+ {
+ var res_changeMoveBox = await _changeMoveBoxService.ChangeBox_OutStock(entity, false);
+ if (!res_changeMoveBox.IsSuccess) res_Rollback = res_changeMoveBox;
+ }
+ if (res_Rollback.IsSuccess)
{
boxIds = entity.Details.SelectMany(s => s.BoxsDetails).Select(s => s.BoxId).ToList();
var res_InStockTask = await _inStockTaskService.UnBind(boxIds, false);