diff --git a/src/WMS.Web.Domain/IService/ISerialNumberService.cs b/src/WMS.Web.Domain/IService/ISerialNumberService.cs index 93d45628..3682f1a7 100644 --- a/src/WMS.Web.Domain/IService/ISerialNumberService.cs +++ b/src/WMS.Web.Domain/IService/ISerialNumberService.cs @@ -22,6 +22,9 @@ namespace WMS.Web.Domain.IService Task OutStock(OutStock outStock, LoginInDto loginInfo, bool isTransaction = true); /// 入库 Task InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true); + /// 出入库回退 + Task BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true); + /// /// 序列号操作记录 /// diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index a6e44aa0..1b0bf97d 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -326,7 +326,7 @@ namespace WMS.Web.Domain.Services OperateTime = DateTime.Now, OperateType = InStockTypeConvert(inStock.Type), OperateUser = userName, - Remark = "来源单号:" + inStock.Details.First().SourceBillNo + Remark = "来源单号:" + inStock.Details.First().SourceBillNo + "\r\n" + "入库单号:" + inStock.BillNo + "\r\n" + "仓位号:" + "" }; @@ -347,6 +347,67 @@ namespace WMS.Web.Domain.Services if (!isSuccess) return Result.ReFailure(ResultCodes.DateWriteError); if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError); + return Result.ReSuccess(); + } + /// + /// 出入库回退 + /// + /// + /// + /// + /// + public async Task BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true) + { + //获取序列号信息 + var serialNumbers = new List();// inStock.Details.SelectMany(s => s.SerialNumbers).ToList(); + var entityList = await _serialNumbersRepositories.GetEntityList(serialNumbers); + var boxIds = entityList.Select(s => s.BoxId).ToList(); + var boxList = await _boxRepositories.GetEntityList(boxIds); + var userName = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, loginInfo.UserInfo.StaffId); + + IDbContextTransaction _transaction = null; + if (isTransaction) + _transaction = _transactionRepositories.GetTransaction(); + bool isRollback = false; + List sList = new List(); + foreach (var entity in entityList) + { + var box = boxList.FirstOrDefault(f => f.Id == entity.BoxId); + + //记录序列号操作日志 + SerialNumberOperate op = new SerialNumberOperate() + { + MaterialId = entity.MaterialId, + SerialNumber = entity.SerialNumber, + OrgId = box.OrgId, + SupplierId = box.SupplierId, + OperateTime = DateTime.Now, + OperateType = backRecord.Type == BackRecordType.InstockOff ? + SerialNumberOperateType.BackRecord_Off : SerialNumberOperateType.BackRecord_On, + OperateUser = userName, + Remark = "单号:" + backRecord.BillNo + + "\r\n" + "箱号:" + box.BoxBillNo + }; + if (backRecord.Type == BackRecordType.OutstockOn) + { + var subStockId = backRecord.Details.FirstOrDefault(w => w.SerialNumbers.Contains(entity.SerialNumber))?.SubStockId ?? 0; + var srcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, subStockId); + op.Remark += "\r\n" + "仓位:" + srcSubStock; + } + sList.Add(op); + } + //序列号操作记录 + var res = await this.SerialNumberOperate(sList, false); + //提交事务 + if (isTransaction) + { + if (!res.Success) isRollback = true; + var isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction); + if (!isSuccess) + return Result.ReFailure(ResultCodes.DateWriteError); + } + if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError); + return Result.ReSuccess(); } } diff --git a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs index 17c69ce4..34d8f68d 100644 --- a/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs +++ b/src/WMS.Web.Domain/Values/SerialNumberOperateType.cs @@ -83,5 +83,16 @@ namespace WMS.Web.Domain.Values /// [EnumRemark("组装拆卸入库")] Assembled_In = 14, + /// + /// 入库回退下架 + /// + [EnumRemark("入库回退下架")] + BackRecord_Off = 15, + /// + /// 出库回退上架 + /// + [EnumRemark("出库回退上架")] + BackRecord_On = 16, + } }