From e1ef73afac7d487c202d75f58aa12e589448b483 Mon Sep 17 00:00:00 2001 From: 18942506660 <18942506660@A18942506660> Date: Thu, 20 Jun 2024 14:17:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=98=E7=82=B9=E6=94=AF=E6=8C=81=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2=E4=BB=93=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 | Bin 274420 -> 274420 bytes src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 17 ++++- .../IService/IBoxInventoryService.cs | 2 +- .../Services/BoxInventoryService.cs | 40 +++++++--- .../Services/TakeStockService.cs | 70 +++++++++++++++++- 5 files changed, 111 insertions(+), 18 deletions(-) diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 8fb124c76d904da819a251c6f074e58b2f32e998..1af4f939b77769bd2c91a3ddb19e2b8a8d5e9105 100644 GIT binary patch delta 28738 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 z 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 gWpo367SddC1Px# delta 28716 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 + + + 老仓位(如果更好了仓位 这里就是原有仓位) + 如果没有更换仓位 那老仓位和新仓位就是一样的值 + + 子仓库(跟金蝶交互字段) @@ -3434,7 +3440,7 @@ - + 盘点-箱库存的变更 @@ -4888,7 +4894,7 @@ - + 盘点单-箱库存的变更 @@ -6508,6 +6514,13 @@ + + + 盘点更换仓位组装盘点单结构,用来调用即时库存 + + + + erp基础数据-同步定时任务 diff --git a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs index c0da4b14..0c0a3cf4 100644 --- a/src/WMS.Web.Domain/IService/IBoxInventoryService.cs +++ b/src/WMS.Web.Domain/IService/IBoxInventoryService.cs @@ -51,7 +51,7 @@ namespace WMS.Web.Domain.IService /// /// /// - Task GenerateTakeBox(List dtoDatas, List serNubBoxDto, bool isTransaction); + Task GenerateTakeBox(List dtoDatas, List serNubBoxDto,bool isUpdateSubStock, bool isTransaction); /// /// 入库单-箱库存的变更 diff --git a/src/WMS.Web.Domain/Services/BoxInventoryService.cs b/src/WMS.Web.Domain/Services/BoxInventoryService.cs index 9340389a..6efcd7e4 100644 --- a/src/WMS.Web.Domain/Services/BoxInventoryService.cs +++ b/src/WMS.Web.Domain/Services/BoxInventoryService.cs @@ -328,7 +328,7 @@ namespace WMS.Web.Domain.Services /// /// /// - public async Task GenerateTakeBox(List dtoDatas, List serNubBoxDto, bool isTransaction) + public async Task GenerateTakeBox(List dtoDatas, List serNubBoxDto,bool isUpdateSubStock, bool isTransaction) { _logger.LogInformation("盘点单-箱库存的变更:" + JsonConvert.SerializeObject(dtoDatas)); //1.判断来源数据是否存在 @@ -399,17 +399,35 @@ namespace WMS.Web.Domain.Services } } }); - - //整合一起 - var generateDtoList = new List(); - generateDtoList.AddRange(generateDtoList_in); - generateDtoList.AddRange(generateDtoList_out); - //提交处理 - var result = await this.ExeTakeBox(generateDtoList, serNubBoxDto, isTransaction); - if (!result.IsSuccess) + if (isUpdateSubStock) { - _logger.LogInformation("盘点单-箱库存的变更:失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas)); - return result; + //更改了仓位 分两次调 先调出库 再调入库 + var result = await this.ExeTakeBox(generateDtoList_out, serNubBoxDto, isTransaction); + if (!result.IsSuccess) + { + _logger.LogInformation("盘点单-箱库存的变更(出):失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas)); + return result; + } + result = await this.ExeTakeBox(generateDtoList_in, serNubBoxDto, isTransaction); + if (!result.IsSuccess) + { + _logger.LogInformation("盘点单-箱库存的变更(入):失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas)); + return result; + } + } + else + { + //整合一起 + var generateDtoList = new List(); + generateDtoList.AddRange(generateDtoList_in); + generateDtoList.AddRange(generateDtoList_out); + //提交处理 + var result = await this.ExeTakeBox(generateDtoList, serNubBoxDto, isTransaction); + if (!result.IsSuccess) + { + _logger.LogInformation("盘点单-箱库存的变更:失败->" + result.Message + ",参数->" + JsonConvert.SerializeObject(dtoDatas)); + return result; + } } //5.组装物料收发明细 diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index bd72428a..76440189 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -6,6 +6,7 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; +using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto; @@ -39,6 +40,7 @@ namespace WMS.Web.Domain.Services private readonly IErpService _erpService; private readonly ILogger _logger; private readonly IBoxInventoryService _boxInventoryService; + private readonly IBoxInventoryRepositories _boxInventoryRepositories; private readonly IErpBasicDataExtendService _erpBasicDataExtendService; private readonly ISerialNumberService _serialNumberService; private readonly IServiceScopeFactory _serviceScopeFactory; @@ -50,7 +52,8 @@ namespace WMS.Web.Domain.Services ISingleDataService singleDataService, IErpService erpService, ILogger logger, IBoxInventoryService boxInventoryService, IErpBasicDataExtendService erpBasicDataExtendService, ISerialNumberService serialNumberService, IServiceScopeFactory serviceScopeFactory, - ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories) + ISerialNumbersRepositories serialNumberRepositories, IBoxRepositories boxRepositories, + IBoxInventoryRepositories boxInventoryRepositories) { _mapper = mapper; _loginService = loginService; @@ -66,6 +69,7 @@ namespace WMS.Web.Domain.Services _serviceScopeFactory = serviceScopeFactory; _serialNumberRepositories = serialNumberRepositories; _boxRepositories = boxRepositories; + _boxInventoryRepositories = boxInventoryRepositories; } /// /// 保存 @@ -80,8 +84,15 @@ namespace WMS.Web.Domain.Services if (dto.Count() == 0) return Result.ReSuccess(); if (dto.GroupBy(g => g.BoxId).Count() > 1) return Result.ReFailure(ResultCodes.TakeStockBoxError); - //v1.0.6 如果箱子不存在则添加箱信息 + //v1.0.6 如果箱子不存在则添加箱信息 和 可以更换仓位 var dto_f = dto.First(); + bool isUpdateSubStock = false; + BoxInventory boxInventory = null; + if (isUpdateSubStock) + { + boxInventory = await _boxInventoryRepositories.Get(dto_f.BoxId); + if (boxInventory == null) return Result.ReFailure(ResultCodes.BoxInventoryNoDataError); + } if (dto_f.BoxId == 0) { var dBox = await _boxRepositories.GetByNo(dto_f.BoxBillNo); @@ -95,7 +106,7 @@ namespace WMS.Web.Domain.Services CreateTime = DateTime.Now }; dBox = await _boxRepositories.Add(dBox); - if(dBox==null)return Result.ReFailure(ResultCodes.DateWriteError); + if (dBox == null) return Result.ReFailure(ResultCodes.DateWriteError); dto.ForEach(f => f.BoxId = dBox.Id); } @@ -163,7 +174,13 @@ namespace WMS.Web.Domain.Services } if (res_Rollback.IsSuccess) { - var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, serialNumbersBoxInventoryList, false); + List takes = list; + if (isUpdateSubStock) + { + takes = new List(); + takes = GetUpdateSubStockTakeStock(dto, loginInfo, boxInventory); + } + var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, serialNumbersBoxInventoryList, isUpdateSubStock, false); if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory; } @@ -386,5 +403,50 @@ namespace WMS.Web.Domain.Services } return list; } + /// + /// 盘点更换仓位组装盘点单结构,用来调用即时库存 + /// + /// + /// + private List GetUpdateSubStockTakeStock(List dto, LoginInDto loginInfo, BoxInventory boxInventory) + { + List list = new List(); + var fist = dto.First(); + + //先用箱库存 组装盘亏单 把数据都盘出去 + TakeStock loss = new TakeStock(); + loss.Create(loginInfo.UserInfo.StaffId, TakeStockType.Loss); + foreach (var d in boxInventory.Details) + { + loss.Details.Add(new TakeStockDetails() + { + BoxId = fist.BoxId, + MaterialNumber = d.MaterialNumber, + OrgCode = boxInventory.OrgCode, + StockCode = boxInventory.StockCode, + SubStockCode = boxInventory.SubStockCode, + Old_SubStockCode = boxInventory.SubStockCode, + AfterQty = 0, + BeforeQty = d.Qty, + SerialNumbers = d.SerialNumbers, + FinalQty = d.Qty + }); + } + list.Add(loss); + + //组装盘盈单 + TakeStock profit = new TakeStock(); + profit.Create(loginInfo.UserInfo.StaffId, TakeStockType.Profit); + profit.Details = _mapper.Map>(dto.Where(w => w.AfterQty > 0)); + foreach (var d in profit.Details) + { + d.OrgCode = boxInventory.OrgCode; + d.BeforeQty = 0; + d.FinalQty = d.AfterQty; + } + list.Add(profit); + + return list; + } } }