From 008640be068507050922e4babdae2265f6b61ec1 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Wed, 6 Mar 2024 10:33:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=AE=B1=E5=BA=93=E5=AD=98?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E7=AE=B1=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/WMS.Web.Domain/Entitys/Box.cs | 33 +- src/WMS.Web.Domain/IService/IBoxService.cs | 2 + .../IService/IChangeMoveBoxService.cs | 12 +- src/WMS.Web.Domain/Services/BoxService.cs | 41 +++ .../Services/ChangeMoveBoxService.cs | 312 +++++++++--------- .../Services/OutStockService.cs | 10 +- 6 files changed, 243 insertions(+), 167 deletions(-) diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs index 2c8f391e..72ec86a1 100644 --- a/src/WMS.Web.Domain/Entitys/Box.cs +++ b/src/WMS.Web.Domain/Entitys/Box.cs @@ -4,6 +4,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Text; using WMS.Web.Core; +using WMS.Web.Core.Help; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Values; @@ -129,7 +130,7 @@ namespace WMS.Web.Domain.Entitys } else d.Qty = d.Qty + qty; - + return Result.ReSuccess(); } /// @@ -158,6 +159,36 @@ namespace WMS.Web.Domain.Entitys if (d != null) d.Qty = (d.Qty - qty) > 0 ? (d.Qty - qty) : 0; + return Result.ReSuccess(); + } + /// + /// 箱库存同步箱信息 + /// + /// + /// + public Result BoxInventory(BoxInventory inventory) + { + var detailClone = this.Details.Clone(); + foreach (var d in detailClone) + { + //如果箱信息存在 箱库存不存在 删除箱信息数据 + var inventoryDetail = inventory.Details.FirstOrDefault(f => f.MaterialId == d.MaterialId); + if (inventoryDetail == null) + { + var boxDetail = this.Details.FirstOrDefault(f => f.Id == d.Id); + this.Details.Remove(boxDetail); + } + } + //箱库存存在 箱信息不存在 添加 + foreach (var d in inventory.Details) + { + var md = this.Details.FirstOrDefault(w => w.MaterialId == d.MaterialId); + if (md == null) + this.Details.Add(new BoxDetails() { MaterialId = d.MaterialId, Qty = md.Qty }); + else + md.Qty = d.Qty; + } + return Result.ReSuccess(); } } diff --git a/src/WMS.Web.Domain/IService/IBoxService.cs b/src/WMS.Web.Domain/IService/IBoxService.cs index 4707fa2f..ae90f69d 100644 --- a/src/WMS.Web.Domain/IService/IBoxService.cs +++ b/src/WMS.Web.Domain/IService/IBoxService.cs @@ -13,5 +13,7 @@ namespace WMS.Web.Domain.IService { // 同步老Ops箱信息 Task Sync(List list = null); + // 箱库存同步箱信息 + Task BoxInventorySync(List list, bool isTransaction = true); } } diff --git a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs index 52daf3c2..d4cd553f 100644 --- a/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/IService/IChangeMoveBoxService.cs @@ -21,12 +21,12 @@ namespace WMS.Web.Domain.IService Task ChangeBoxSave(List dto, LoginInDto loginInfo, bool isTransaction=true,bool IsInventory=true,bool IsPDA=false); //移箱保存 Task MoveBoxSave(List dto, bool IsUp, LoginInDto loginInfo); - //出库回退 - 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); + ////出库回退 + //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/BoxService.cs b/src/WMS.Web.Domain/Services/BoxService.cs index 582f11fc..1088a847 100644 --- a/src/WMS.Web.Domain/Services/BoxService.cs +++ b/src/WMS.Web.Domain/Services/BoxService.cs @@ -31,12 +31,14 @@ namespace WMS.Web.Domain.Services private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories; private readonly ISerialNumbersRepositories _serialNumbersRepositories; private readonly ILogger _Logger; + public readonly IBasicsRepositories _basbicsRepositories; public BoxService(IMapper mapper, ILoginService loginService, IBasicsRepositories transactionRepositories, IBoxRepositories boxRepositories, IOpsService opsService, ISerialNumberService serialNumberService, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories, ISerialNumbersRepositories serialNumbersRepositories, + IBasicsRepositories basbicsRepositories, ILogger Logger) { _mapper = mapper; @@ -48,6 +50,7 @@ namespace WMS.Web.Domain.Services _erpOpsSyncDateRepositories = erpOpsSyncDateRepositories; _serialNumbersRepositories = serialNumbersRepositories; _Logger = Logger; + _basbicsRepositories = basbicsRepositories; } public async Task Sync(List list) @@ -127,5 +130,43 @@ namespace WMS.Web.Domain.Services return Result.ReSuccess(); } + /// + /// 箱库存同步箱信息 + /// + /// + /// + /// + public async Task BoxInventorySync(List list, bool isTransaction = true) + { + if (list.Count() == 0) return Result.ReSuccess(); + + var boxIds = list.Select(s => s.BoxId).Distinct().ToList(); + var boxs = await _boxRepositories.GetEntityList(boxIds); + foreach (var db in list) + { + var box = boxs.FirstOrDefault(f => f.Id == db.BoxId); + if (box == null) continue; + box.BoxInventory(db); + } + 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/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs index 44fdf1a1..b6fd8905 100644 --- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs +++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs @@ -311,163 +311,165 @@ namespace WMS.Web.Domain.Services return Result.ReSuccess(); } - /// - /// 出入库回退改箱 - /// - /// - /// - /// - /// - public async Task ChangeBox_BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true) - { - if (backRecord.Method == InventoryInOutMethod.Box) return Result.ReSuccess(); - List dtoList = new List(); - var boxIds = backRecord.Details.Select(s => s.BoxId).Distinct().ToList(); - var boxs = await _boxRepositories.GetEntityList(boxIds); - foreach (var d in backRecord.Details) - { - var box = boxs.FirstOrDefault(f => f.Id == d.BoxId); - if (box == null) continue; - if (backRecord.Type == BackRecordType.InstockOff) - box.BackRecordDown(d.MaterialId, d.Qty); - else - box.BackRecordUp(d.MaterialId, d.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(); - } - /// - /// 非采购入库 - /// - /// - /// - /// - /// - public async Task ChangeBox_InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true) - { - List dtoList = new List(); - //目标箱 - var destIds = inStock.Details.GroupBy(g => g.BoxId); - var serialNumbers = inStock.Details.SelectMany(s => s.SerialNumbers).ToList(); - var serialNumberList = await _serialNumbersRepositories.GetEntityList(serialNumbers); - foreach (var detail in inStock.Details) - { - if (detail.Qty == 0) continue; - var detailClone = detail.Clone(); - //处理序列号 - var sList = serialNumberList.Where(w => detailClone.SerialNumbers.Contains(w.SerialNumber)).ToList(); - foreach (var s in sList) - { - //原箱和目标箱一样不处理 - if (s.BoxId == detailClone.BoxId) - { - detailClone.Qty = detailClone.Qty - 1; - detailClone.SerialNumbers.Remove(s.SerialNumber); - continue; - } + #region 删除代码 + ///// + ///// 出入库回退改箱 + ///// + ///// + ///// + ///// + ///// + //public async Task ChangeBox_BackRecord(BackRecord backRecord, LoginInDto loginInfo, bool isTransaction = true) + //{ + // if (backRecord.Method == InventoryInOutMethod.Box) return Result.ReSuccess(); + // List dtoList = new List(); + // var boxIds = backRecord.Details.Select(s => s.BoxId).Distinct().ToList(); + // var boxs = await _boxRepositories.GetEntityList(boxIds); + // foreach (var d in backRecord.Details) + // { + // var box = boxs.FirstOrDefault(f => f.Id == d.BoxId); + // if (box == null) continue; + // if (backRecord.Type == BackRecordType.InstockOff) + // box.BackRecordDown(d.MaterialId, d.Qty); + // else + // box.BackRecordUp(d.MaterialId, d.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(); + //} + ///// + ///// 非采购入库 + ///// + ///// + ///// + ///// + ///// + //public async Task ChangeBox_InStock(InStock inStock, LoginInDto loginInfo, bool isTransaction = true) + //{ + // List dtoList = new List(); + // //目标箱 + // var destIds = inStock.Details.GroupBy(g => g.BoxId); + // var serialNumbers = inStock.Details.SelectMany(s => s.SerialNumbers).ToList(); + // var serialNumberList = await _serialNumbersRepositories.GetEntityList(serialNumbers); + // foreach (var detail in inStock.Details) + // { + // if (detail.Qty == 0) continue; + // var detailClone = detail.Clone(); + // //处理序列号 + // var sList = serialNumberList.Where(w => detailClone.SerialNumbers.Contains(w.SerialNumber)).ToList(); + // foreach (var s in sList) + // { + // //原箱和目标箱一样不处理 + // if (s.BoxId == detailClone.BoxId) + // { + // detailClone.Qty = detailClone.Qty - 1; + // detailClone.SerialNumbers.Remove(s.SerialNumber); + // continue; + // } - var d = dtoList.FirstOrDefault(f => f.DestBoxId == detailClone.BoxId && f.SrcBoxId == s.BoxId); - if (d == null) - { - d = new SaveChangeBoxRecordRequest(s.BoxId, detailClone.BoxId); - d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, 1, s.SerialNumber)); - } - else - { - var dtoDetail = d.Details.FirstOrDefault(f => f.MaterialId == detailClone.MaterialId); - if (dtoDetail == null) - d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, 1, s.SerialNumber)); - else - { - dtoDetail.Qty += 1; - dtoDetail.SerialNumbers.Add(s.SerialNumber); - } - } - detailClone.Qty = detailClone.Qty - 1; - detailClone.SerialNumbers.Remove(s.SerialNumber); - } + // var d = dtoList.FirstOrDefault(f => f.DestBoxId == detailClone.BoxId && f.SrcBoxId == s.BoxId); + // if (d == null) + // { + // d = new SaveChangeBoxRecordRequest(s.BoxId, detailClone.BoxId); + // d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, 1, s.SerialNumber)); + // } + // else + // { + // var dtoDetail = d.Details.FirstOrDefault(f => f.MaterialId == detailClone.MaterialId); + // if (dtoDetail == null) + // d.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, 1, s.SerialNumber)); + // else + // { + // dtoDetail.Qty += 1; + // dtoDetail.SerialNumbers.Add(s.SerialNumber); + // } + // } + // detailClone.Qty = detailClone.Qty - 1; + // detailClone.SerialNumbers.Remove(s.SerialNumber); + // } - //处理非序列号的数据 - if (detailClone.Qty <= 0) continue; - var dto = dtoList.FirstOrDefault(f => f.DestBoxId == detailClone.BoxId && f.SrcBoxId == 0); - if (dto == null) - { - dto = new SaveChangeBoxRecordRequest(0, detailClone.BoxId); - dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers)); - } - else - { - var dtoDetail = dto.Details.FirstOrDefault(f => f.MaterialId == detailClone.MaterialId); - if (dtoDetail == null) - dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers)); - else - { - dtoDetail.Qty += detailClone.Qty; - dtoDetail.SerialNumbers.AddRange(detailClone.SerialNumbers); - } - } - } + // //处理非序列号的数据 + // if (detailClone.Qty <= 0) continue; + // var dto = dtoList.FirstOrDefault(f => f.DestBoxId == detailClone.BoxId && f.SrcBoxId == 0); + // if (dto == null) + // { + // dto = new SaveChangeBoxRecordRequest(0, detailClone.BoxId); + // dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers)); + // } + // else + // { + // var dtoDetail = dto.Details.FirstOrDefault(f => f.MaterialId == detailClone.MaterialId); + // if (dtoDetail == null) + // dto.Details.Add(new SaveChangeBoxRecordDetailsRequest(detailClone.MaterialId, detailClone.Qty, detailClone.SerialNumbers)); + // else + // { + // dtoDetail.Qty += detailClone.Qty; + // dtoDetail.SerialNumbers.AddRange(detailClone.SerialNumbers); + // } + // } + // } - 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(); - } + // 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(); + //} + #endregion } } diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index fc4b3d81..88d90f55 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -197,11 +197,11 @@ namespace WMS.Web.Domain.Services var res_Inventory = await _boxInventoryService.GenerateOutStockBox(entity, false); 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) + //{ + // 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();