diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 9b17d53e..4d989864 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1157,12 +1157,17 @@ 入库单号/采购单号 - + - 移箱 + 操作(绑定箱信息) 目标箱号 + + + 解绑 + + 出库 diff --git a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs index 01f87500..8ec98788 100644 --- a/src/WMS.Web.Domain/Entitys/SerialNumbers.cs +++ b/src/WMS.Web.Domain/Entitys/SerialNumbers.cs @@ -70,14 +70,21 @@ namespace WMS.Web.Domain.Entitys public string InStockBillNo { get; set; } /// - /// 移箱 + /// 操作(绑定箱信息) /// /// 目标箱号 - public void Operate(int destBoxId) + public void Bind(int destBoxId) { this.BoxId = destBoxId; } /// + /// 解绑 + /// + public void UnBind() + { + this.BoxId = 0; + } + /// /// 出库 /// /// 出库单号 diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index e555e8e0..9b82ac6e 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -61,7 +61,7 @@ namespace WMS.Web.Domain.Services { var destBox = changeBoxRecords.FirstOrDefault(f => f.SerialNumbers.Contains(entity.SerialNumber)); //修改序列号和箱绑定关系 - entity.Operate(destBox.DestBoxId); + entity.Bind(destBox.DestBoxId); var box = boxList.FirstOrDefault(f => f.Id == destBox.DestBoxId); //记录序列号操作日志 @@ -124,7 +124,7 @@ namespace WMS.Web.Domain.Services foreach (var entity in entityList) { //修改序列号和箱绑定关系 - entity.Operate(moveBoxRecord.BoxId); + entity.Bind(moveBoxRecord.BoxId); //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() @@ -371,10 +371,18 @@ namespace WMS.Web.Domain.Services if (isTransaction) _transaction = _transactionRepositories.GetTransaction(); bool isRollback = false; + bool isSuccess = true; List sList = new List(); foreach (var entity in entityList) { var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId); + var detail = backRecord.Details.FirstOrDefault(w => w.SerialNumbers.Contains(entity.SerialNumber)); + + if (backRecord.Type == BackRecordType.InstockOff) + entity.UnBind(); + else + entity.Bind(detail.BoxId); + //记录序列号操作日志 SerialNumberOperate op = new SerialNumberOperate() @@ -392,22 +400,26 @@ namespace WMS.Web.Domain.Services }; if (backRecord.Type == BackRecordType.OutstockOn) { - var subStockId = backRecord.Details.FirstOrDefault(w => w.SerialNumbers.Contains(entity.SerialNumber))?.SubStockId ?? 0; + var subStockId = detail?.SubStockId ?? 0; var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, subStockId); op.Remark += "\r\n" + "仓位:" + srcSubStock; } sList.Add(op); } + + isSuccess = await _serialNumbersRepositories.EditEntityList(entityList, false); //序列号操作记录 var res = await this.SerialNumberOperate(sList, false); //提交事务 if (isTransaction) { + if (!isSuccess) isRollback = true; if (!res.Success) isRollback = true; - var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); } + if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError); return Result.ReSuccess();