From 593422e730144a8c25994779f2fe0ce8f066ee15 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Mon, 13 Nov 2023 14:33:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=85=A5=E5=BA=93=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8F=B7=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IService/ISerialNumberService.cs | 3 + .../Services/SerialNumberService.cs | 63 ++++++++++++++++++- .../Values/SerialNumberOperateType.cs | 11 ++++ 3 files changed, 76 insertions(+), 1 deletion(-) 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, + } }