diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 13023a8e..597cfc64 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index c2d8c31c..cf5ba40f 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1948,6 +1948,11 @@ 序列号 + + + 销售订单号 + + 入库任务单明细详情 diff --git a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBoxInfoDto.cs b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBoxInfoDto.cs index 1514f334..51a5f1a3 100644 --- a/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBoxInfoDto.cs +++ b/src/WMS.Web.Core/Dto/InStockTask/InStockTaskBoxInfoDto.cs @@ -78,6 +78,11 @@ namespace WMS.Web.Core.Dto.InStockTask /// 序列号 /// public string SerialNumbers { get; set; } + + /// + /// 销售订单号 + /// + public string SaleBillNo { get; set; } } } diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index 7e152d1e..32bbe4e8 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -183,7 +183,7 @@ namespace WMS.Web.Repositories Method = InventoryInOutMethod.Box.GetRemark(), MaterialNumber = x.detail.MaterialNumber, Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, x.detail.MaterialNumber), - ReceiveTime = x.box.CreateTime.HasValue ? x.box.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"):"", + ReceiveTime = x.box.CreateTime.HasValue ? x.box.CreateTime.Value.ToString("yyyy-MM-dd HH:mm:ss") : "", Receiver = x.box.ReceiverId.HasValue ? _singleDataService.GetSingleData(SingleAction.Staffs, companyId, x.box.ReceiverId.Value) : "", Qty = x.detail.ReceiveQty, ReceiveQty = x.detail.ReceiveQty @@ -220,7 +220,7 @@ namespace WMS.Web.Repositories boxList.ForEach(x => { - x.SerialNumbers = (string.Join(",", serialNumbList.Where(t =>t.BoxId==x.BoxId && t.MaterialNumber == x.MaterialNumber).Select(t => t.SerialNumber).ToList())).TrimEnd(','); + x.SerialNumbers = (string.Join(",", serialNumbList.Where(t => t.BoxId == x.BoxId && t.MaterialNumber == x.MaterialNumber).Select(t => t.SerialNumber).ToList())).TrimEnd(','); }); @@ -236,6 +236,8 @@ namespace WMS.Web.Repositories .SelectMany(x => x.ts.DefaultIfEmpty(), (p, order) => new { p.detail, order }) .GroupJoin(_context.Box, p => p.detail.BoxId, ts => ts.Id, (p, ts) => new { p.detail, p.order, ts }) .SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order, box }) + .GroupJoin(_context.InStockTaskDetails, p => p.detail.TaskDetailId, ts => ts.Id, (p, ts) => new { p.detail, p.order, p.box, ts }) + .SelectMany(x => x.ts.DefaultIfEmpty(), (p, taskDet) => new { p.detail, p.order, p.box, taskDet }) .Where(x => x.detail.TaskId == entity.Id).Select(x => new InStockTaskBoxInfoDto() { BoxId = x.box.Id, @@ -244,7 +246,7 @@ namespace WMS.Web.Repositories MethodForInt = (int)x.order.Method, MaterialNumber = x.detail.MaterialNumber, Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, x.detail.MaterialNumber), - + SaleBillNo = x.taskDet.SaleBillNo, Qty = 0, RealityQty = x.detail.Qty, ShelfTime = x.order.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), @@ -358,7 +360,7 @@ namespace WMS.Web.Repositories { Id = s.order.Id, DetailsId = s.detail.Id, - CustomerCode=s.detail.CustomerCode, + CustomerCode = s.detail.CustomerCode, SupplierId = s.detail.SupplierId, OrgId = s.detail.OrgId, OrgCode = s.detail.OrgCode, @@ -373,7 +375,7 @@ namespace WMS.Web.Repositories ReceiveQty = s.detail.ReceiveQty, //采购:可入库数量=应入库数量-收货数量-已交数量+该明细的入库数量之和; AvailableQty = s.detail.AccruedQty - s.detail.ReceiveQty - (s.detail.DeliveredQty > s.detail.RealityQty ? s.detail.DeliveredQty : s.detail.RealityQty), - WaitSlefQty = s.detail.ReceiveQty-s.detail.RealityQty, + WaitSlefQty = s.detail.ReceiveQty - s.detail.RealityQty, Remark = s.detail.Remark, ErpDetailId = s.detail.ErpDetailId }).ToListAsync(); @@ -507,7 +509,7 @@ namespace WMS.Web.Repositories /// public async Task> GetReceiveBox(int taskId, string materialNumber) { - var list = await _context.InstockTaskBox.Include(x => x.Details.Where(t=>t.MaterialNumber==materialNumber)).Where(x => x.TaskId == taskId && x.Details.Where(t => t.MaterialNumber == materialNumber).Count()>0).ToListAsync(); + var list = await _context.InstockTaskBox.Include(x => x.Details.Where(t => t.MaterialNumber == materialNumber)).Where(x => x.TaskId == taskId && x.Details.Where(t => t.MaterialNumber == materialNumber).Count() > 0).ToListAsync(); //var list_last = list.Where(x => x.Details.Any(t => t.MaterialNumber == materialNumber)).ToList(); var result = list.Select(x => new ReceiveBoxResponse() { @@ -749,14 +751,22 @@ namespace WMS.Web.Repositories } } + var taskIds = new List(); + if (dto.BoxBillNos != null && dto.BoxBillNos.Count != 0) + { + var tids = await _context.InstockTaskBox.Where(x => dto.BoxBillNos.Contains(x.BoxBillNo)).GroupBy(x => x.TaskId).Select(x => x.Key).ToListAsync(); + taskIds.AddRange(tids); + } + if (dto.SerialNumbers != null && dto.SerialNumbers.Count != 0) + { + var tids= await _context.InStockDetails.Where(w => w.SerialNumbers.SequenceEqual(dto.SerialNumbers)).GroupBy(x => x.TaskId).Select(x => x.Key).ToListAsync(); + taskIds.AddRange(tids); + } + var query = _context.InStockTaskDetails - .GroupJoin(_context.InStockTask, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) - .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) - .GroupJoin(_context.InstockTaskBox,p=>p.order.Id,ts=>ts.TaskId, (p,ts)=>new { p.detail,p.order,ts}) - .SelectMany(x => x.ts.DefaultIfEmpty(), (p, box) => new { p.detail, p.order,box }) - .GroupJoin(_context.InStockDetails, p => p.order.Id, ts => ts.TaskId, (p, ts) => new { p.detail, p.order, p.box,ts }) - .SelectMany(x => x.ts.DefaultIfEmpty(), (p, instockdet) => new { p.detail, p.order,p.box, instockdet }) - .Where(adv => 1 == 1); + .GroupJoin(_context.InStockTask, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) + .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) + .Where(adv => 1 == 1); if (!string.IsNullOrEmpty(dto.SourceBillNo)) query = query.Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%")); @@ -767,16 +777,9 @@ namespace WMS.Web.Repositories query = query.Where(w => materialNumbs.Contains(w.detail.MaterialNumber)); } - //箱号 - if (dto.BoxBillNos != null && dto.BoxBillNos.Count != 0) + if (taskIds.Count!=0) { - query = query.Where(w => dto.BoxBillNos.Contains(w.box.BoxBillNo)); - } - - //序列号 - if (dto.SerialNumbers != null && dto.SerialNumbers.Count != 0) - { - query = query.Where(w => w.instockdet.SerialNumbers.SequenceEqual(dto.SerialNumbers)); + query = query.Where(w => taskIds.Contains(w.order.Id)); } if (!string.IsNullOrEmpty(dto.Receiver)) @@ -835,7 +838,7 @@ namespace WMS.Web.Repositories CreateTime = s.order.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), Remark = s.detail.Remark, IsRepeal = s.detail.IsRepeal ?? false, - SaleBillNo=s.detail.SaleBillNo, + SaleBillNo = s.detail.SaleBillNo, }).OrderByDescending(x => x.Id).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); return (list, total);