From e8e4992dbe94d80c719f81d4484184ec787a6090 Mon Sep 17 00:00:00 2001 From: 18923810322 <1666941798@qq.com> Date: Fri, 11 Jul 2025 15:38:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IOutStockTaskRepositories.cs | 3 + .../Services/OutStockTaskService.cs | 23 ++++++- .../Services/SerialNumberService.cs | 3 +- .../OutStockRepositories.cs | 31 +++++++++ .../OutStockTaskRepositories.cs | 65 ++++++++++++++++++- 5 files changed, 121 insertions(+), 4 deletions(-) diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs index 6524ad67..fb40e34f 100644 --- a/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IOutStockTaskRepositories.cs @@ -24,6 +24,9 @@ namespace WMS.Web.Domain.Infrastructure Task> GetEntityList(List ids); /// 查询实体集合 Task> GetEntityListByStatus(); + Task> GetEntityList(List serialNumbers); + Task> GetEntityListBySuitNumber(string suitNumber); + /// 查询实体集合(明细Id) Task> GetEntityListByDetailIds(List ids); /// diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index e25fc10f..d394fff0 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -707,8 +707,16 @@ namespace WMS.Web.Domain.Services } else { + + string hadsavel = ""; foreach (var s in d.SerialNumberList) { + //先跟据条码查询对应的 + List l= new List(); + l.Add(s.ToString()); + + var serialNumbers = await _outStockTaskRepositories.GetEntityList(l); + // hadsavel = hadsavel + serialNumbers[0].TwoSerialNumber; list.Add(new ExportInfoResponse() { SourceBillNo = response.SourceBillNo, @@ -727,15 +735,26 @@ namespace WMS.Web.Domain.Services BoxWeight = d.BoxWeight, Qty = d.Qty, AccruedQty = d.AccruedQty, - SerialNumbers = s + SerialNumbers = serialNumbers[0].TwoSerialNumber }); + } + + } + } + } + var list2 = list.GroupBy(p => new { p.SourceBillNo, p.SaleBillNo,p.ReceiptCustomer, p.CreateTime, p.BoxBillNo, p.Specifications, p.MaterialName, p.MaterialNumber, p.BarCode, p.IndexNumber, p.BoxLength, p.BoxWide, p.BoxHigh, p.BoxWeight, p.Qty, p.AccruedQty, p.SerialNumbers }) // Group by Name and Age properties + .Select(g => g.First()) // Select the first item of each group (arbitrary choice) + .ToList(); // Convert back to list if needed. If you only need the distinct items, you can skip this step. + + // list.Distinct().ToList(); + var _exportExcelService = scope.ServiceProvider.GetRequiredService(); - await _exportExcelService.Export(list, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTaskInfo); + await _exportExcelService.Export(list2, fileName, loginInfo.UserInfo.StaffId, loginInfo.UserInfo.CompanyId, FileDownLoadOrderType.OutStockTaskInfo); } } catch (Exception ex) diff --git a/src/WMS.Web.Domain/Services/SerialNumberService.cs b/src/WMS.Web.Domain/Services/SerialNumberService.cs index a893beef..0b343ec4 100644 --- a/src/WMS.Web.Domain/Services/SerialNumberService.cs +++ b/src/WMS.Web.Domain/Services/SerialNumberService.cs @@ -403,7 +403,8 @@ namespace WMS.Web.Domain.Services - //序列号操作记录 + // + //操作记录 var res = await this.SerialNumberOperate(sList, false); //提交事务 if (isTransaction) diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index 83dc5f80..c5d69b6d 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -374,6 +374,37 @@ namespace WMS.Web.Repositories } return details; } + + /// + /// 根据序列号查询 + /// + /// + /// + public async Task> GetEntityList(List serialNumbers) + { + var res = await _context.SerialNumbers + // .Where(f => serialNumbers.Contains(f.SerialNumber)) + .Where(f => serialNumbers.Contains(f.SerialNumber)) + .ToListAsync(); + var res_c = res.Clone(); + + //var s_e = res.Select(s => s.SerialNumber).ToList(); + var s_e = res.Select(s => s.TwoSerialNumber).ToList(); + //在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集 + var s_c = serialNumbers.Except(s_e); + if (s_c.Count() > 0) + { + var entitys_ops = serialNumbers.Where(w => s_c.Contains(w)).ToList(); + var r_o = await _context.SerialNumbers_Ops + .Where(f => serialNumbers.Contains(f.SerialNumber)) + .ToListAsync(); + + res_c.AddRange(_mapper.Map>(r_o.Clone())); + } + + return res_c; + } + /// /// 根据序列号搜索 /// diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index f895910b..4ddb9be5 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -617,10 +617,73 @@ namespace WMS.Web.Repositories .Include(s => s.Details).ThenInclude(s => s.ErpDetails) .Where(f => f.Status == OutStockStatus.Wait || f.Status == OutStockStatus.Part) .ToListAsync(); - + return res.Clone(); } + /// + /// 根据序列号查询 + /// + /// + /// + public async Task> GetEntityList(List serialNumbers) + { + var res = await _context.SerialNumbers + // .Where(f => serialNumbers.Contains(f.SerialNumber)) + .Where(f => serialNumbers.Contains(f.SerialNumber)) + .ToListAsync(); + var res_c = res.Clone(); + + //var s_e = res.Select(s => s.SerialNumber).ToList(); + var s_e = res.Select(s => s.TwoSerialNumber).ToList(); + //在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集 + var s_c = serialNumbers.Except(s_e); + if (s_c.Count() > 0) + { + var entitys_ops = serialNumbers.Where(w => s_c.Contains(w)).ToList(); + var r_o = await _context.SerialNumbers_Ops + .Where(f => serialNumbers.Contains(f.SerialNumber)) + .ToListAsync(); + + res_c.AddRange(_mapper.Map>(r_o.Clone())); + } + + return res_c; + } + /// + /// 根据套装码获取序列码 + /// + /// + /// + public async Task> GetEntityListBySuitNumber(string suitNumber) + { + + return await _context.SerialNumbers.AsNoTracking() + .Where(f => f.SerialNumber.Contains(suitNumber)) + .ToListAsync(); + + //var res = await _context.SerialNumbers + // .Where(f => serialNumbers.Contains(f.SerialNumber)) + // .ToListAsync(); + //var res_c = res.Clone(); + + //var s_e = res.Select(s => s.SerialNumber).ToList(); + ////在序列表里没找到的序列码 则到老ops序列码数据里去处理 list比较 取差集 + //var s_c = serialNumbers.Except(s_e); + //if (s_c.Count() > 0) + //{ + // var entitys_ops = serialNumbers.Where(w => s_c.Contains(w)).ToList(); + // var r_o = await _context.SerialNumbers_Ops + // .Where(f => serialNumbers.Contains(f.SerialNumber)) + // .ToListAsync(); + + // res_c.AddRange(_mapper.Map>(r_o.Clone())); + //} + + //return res_c; + } + + public string GetInStock(List codes, int companyId, string orgCode) { var list = codes.Where(w => w != null).ToList();