diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs index ef24724b..5f2ceb76 100644 --- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs +++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs @@ -13,7 +13,6 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord /// /// 原箱子ID /// - [Required(ErrorMessage = "原箱子不能为空")] public int SrcBoxId { get; set; } /// /// 目标箱子ID diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs index 68fb92ea..db52e99c 100644 --- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs @@ -17,7 +17,7 @@ namespace WMS.Web.Domain.IService public interface IChangeMoveBoxService { //改箱保存 - Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo); + Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction=true); //移箱保存 Task MoveBoxSave(SaveMoveBoxRecordRequest dto, LoginInDto loginInfo); diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index a7f8b403..44fb65cb 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -43,23 +43,29 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo) + public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo, bool isTransaction = false) { List boxList = new List(); + //原箱有可能没有 var srcBox = await _boxRepositories.Get(dto.SrcBoxId); var destBox = await _boxRepositories.Get(dto.DestBoxId); - if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData); + //if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData); if (destBox == null) return Result.ReFailure(ResultCodes.BoxNoData); var l = dto.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList(); //原箱移出 - var res = srcBox.Out(l); - if (!res.IsSuccess) return res; + Result res; + if (srcBox != null) + { + res = srcBox.Out(l); + if (!res.IsSuccess) return res; + } //目标箱移入 res = destBox.In(l); if (!res.IsSuccess) return res; - - boxList.Add(srcBox); - boxList.Add(destBox); + if (srcBox != null) + boxList.Add(srcBox); + if (destBox != null) + boxList.Add(destBox); //var entity = _mapper.Map(dto);\ List list = new List(); @@ -72,8 +78,9 @@ namespace WMS.Web.Domain.Services //需要填写序列号 //需要修改库存 - - IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; bool isSuccess = true; isSuccess = await _changeBoxRecordRepositories.AddRange(list, false); @@ -81,12 +88,15 @@ namespace WMS.Web.Domain.Services isSuccess = await _boxRepositories.EditEntityList(boxList, false); if (!isSuccess) isRollback = true; - + //提交事务 - isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); - if (!isSuccess) - return Result.ReFailure(ResultCodes.DateWriteError); + if (isTransaction) + { + isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + if (!isSuccess) + return Result.ReFailure(ResultCodes.DateWriteError); + } return Result.ReSuccess(); }