From 16fe648ad829243b223001898a22fff69841c764 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Tue, 26 Mar 2024 15:34:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=BE=E5=88=B0=E5=B7=B2=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E7=9A=84=E7=AE=B1=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/InStockTaskController.cs | 29 ++++++++++ src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 7 +++ src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 27 ++++++++- src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 23 ++++++++ .../Dto/InStockTask/ReceiveBoxResponse.cs | 27 +++++++++ .../Infrastructure/IInStockRepositories.cs | 8 +++ .../IInStockTaskRepositories.cs | 7 +++ .../InStockRepositories.cs | 15 +++++ .../InStockTaskRepositories.cs | 56 ++++++++++++------- 9 files changed, 177 insertions(+), 22 deletions(-) create mode 100644 src/WMS.Web.Core/Dto/InStockTask/ReceiveBoxResponse.cs diff --git a/src/WMS.Web.Api/Controllers/InStockTaskController.cs b/src/WMS.Web.Api/Controllers/InStockTaskController.cs index 990cfb3b..13fd813d 100644 --- a/src/WMS.Web.Api/Controllers/InStockTaskController.cs +++ b/src/WMS.Web.Api/Controllers/InStockTaskController.cs @@ -32,7 +32,9 @@ namespace WMS.Web.Api.Controllers private readonly IInStockTaskService _inStockTaskService; private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly IInventoryDetailsRepositories _inventoryDetailsRepositories; + private readonly IInStockRepositories _inStockRepositories; public InStockTaskController( + IInStockRepositories inStockRepositories, IOptions option, IExportExcelService exportExcelService, ILoginService loginService, @@ -41,6 +43,7 @@ namespace WMS.Web.Api.Controllers IInventoryDetailsRepositories inventoryDetailsRepositories, IInStockService inStockService) { + _inStockRepositories = inStockRepositories; _inventoryDetailsRepositories = inventoryDetailsRepositories; this._option = option?.Value; this._exportExcelService = exportExcelService; @@ -186,6 +189,32 @@ namespace WMS.Web.Api.Controllers return ResultList.ReSuccess(list); } + /// + /// 来源单-已收货未入库的箱集合-采购上架使用-pad + /// + /// + /// + [HttpGet] + [Route("GetReceiveBox/{taskId}")] + public async Task> GetReceiveBox([FromRoute] int taskId) + { + //找到收货的箱子 + var receiveBoxList= await _inStockTaskRepositories.GetReceiveBox(taskId); + + //找到已入库的箱子 + var instockBoxList= await _inStockRepositories.GetInstockBox(taskId); + if (receiveBoxList.Count!=0 && instockBoxList.Count != 0) + { + //剔除已入库的箱子 + foreach (var item in instockBoxList.Distinct().ToList()) + { + receiveBoxList.Remove(item); + } + } + + return ResultList.ReSuccess(receiveBoxList); + } + /// /// 来源单-编号模糊查询-非采购上架使用-pad /// diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index f19909ea..3f358cce 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -244,6 +244,13 @@ 来源单号 + + + 来源单-已收货未入库的箱集合-采购上架使用-pad + + + + 来源单-编号模糊查询-非采购上架使用-pad diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index aa4d46da..9449dac8 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -1917,6 +1917,26 @@ 明细 + + + 收货箱 + + + + + 任务ID + + + + + 箱ID + + + + + 箱编码 + + 来源单模糊查询响应-非采购-对象 @@ -4233,12 +4253,17 @@ 物料对应的仓位有哪些 + + + 物料编码 + + 仓位编码 - + 仓位名称 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 38c56b1a..52da1e24 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -2532,6 +2532,13 @@ + + + 获取-已入库的箱 + + + + 箱与任务单绑定(收货)关系表-仓储接口 @@ -2649,6 +2656,13 @@ + + + 获取-已收货的箱子 + + + + 批量添加 @@ -2729,6 +2743,15 @@ + + + 获取物料对应的仓位集合 + + + + + + 物料收发明细-仓储接口 diff --git a/src/WMS.Web.Core/Dto/InStockTask/ReceiveBoxResponse.cs b/src/WMS.Web.Core/Dto/InStockTask/ReceiveBoxResponse.cs new file mode 100644 index 00000000..e5b913e2 --- /dev/null +++ b/src/WMS.Web.Core/Dto/InStockTask/ReceiveBoxResponse.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.InStockTask +{ + /// + /// 收货箱 + /// + public class ReceiveBoxResponse + { + /// + /// 任务ID + /// + public int TaskId { get; set; } + + /// + /// 箱ID + /// + public int BoxId { get; set; } + + /// + /// 箱编码 + /// + public string BoxBillNo { get; set; } + } +} diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs index 9eff1513..b72dc52f 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs @@ -4,6 +4,7 @@ using System.Text; using System.Threading.Tasks; using WMS.Web.Core.Dto; using WMS.Web.Core.Dto.InStock; +using WMS.Web.Core.Dto.InStockTask; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; @@ -73,5 +74,12 @@ namespace WMS.Web.Domain.Infrastructure /// /// Task> GetList(List ids); + + /// + /// 获取-已入库的箱 + /// + /// + /// + Task> GetInstockBox(int taskId); } } diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs index 2bbda600..e9b0a424 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockTaskRepositories.cs @@ -79,6 +79,13 @@ namespace WMS.Web.Domain.Infrastructure /// Task> GetListInfoBy(InStockTaskBillNoQueryRequest dto); + /// + /// 获取-已收货的箱子 + /// + /// + /// + Task> GetReceiveBox(int taskId); + /// /// 批量添加 /// diff --git a/src/WMS.Web.Repositories/InStockRepositories.cs b/src/WMS.Web.Repositories/InStockRepositories.cs index 42ad9346..6edb9da5 100644 --- a/src/WMS.Web.Repositories/InStockRepositories.cs +++ b/src/WMS.Web.Repositories/InStockRepositories.cs @@ -12,6 +12,7 @@ using WMS.Web.Core.Dto.Erp; using WMS.Web.Core.Dto.Erp.Org; using WMS.Web.Core.Dto.Erp.Supplier; using WMS.Web.Core.Dto.InStock; +using WMS.Web.Core.Dto.InStockTask; using WMS.Web.Core.Help; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Entitys; @@ -254,6 +255,20 @@ namespace WMS.Web.Repositories return res.Clone(); } + /// + /// 获取-已入库的箱 + /// + /// + /// + public async Task> GetInstockBox(int taskId) + { + return await _context.InStockDetails.Where(x => x.TaskId == taskId).Select(x => new ReceiveBoxResponse() + { + TaskId=x.TaskId, + BoxId=x.BoxId + }).ToListAsync(); + } + /// /// 列表-分页 /// diff --git a/src/WMS.Web.Repositories/InStockTaskRepositories.cs b/src/WMS.Web.Repositories/InStockTaskRepositories.cs index e698c39b..73a25bf3 100644 --- a/src/WMS.Web.Repositories/InStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/InStockTaskRepositories.cs @@ -56,7 +56,7 @@ namespace WMS.Web.Repositories _singleDataService = singleDataService; _loginRepositories = loginRepositories; _erpBasicDataExtendService = erpBasicDataExtendService; - } + } /// /// 详情 @@ -163,11 +163,11 @@ namespace WMS.Web.Repositories 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 }) - .Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%") - && w.order.Type == InstockType.Purchase - && (w.order.Status == InstockStatus.Part || w.order.Status == InstockStatus.Wait || w.order.Status== InstockStatus.WaitInStock) - && w.detail.AccruedQty>0 - && w.detail.IsRepeal!=true); + .Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%") + && w.order.Type == InstockType.Purchase + && (w.order.Status == InstockStatus.Part || w.order.Status == InstockStatus.Wait || w.order.Status == InstockStatus.WaitInStock) + && w.detail.AccruedQty > 0 + && w.detail.IsRepeal != true); //仓库 if (!string.IsNullOrEmpty(dto.StockCode)) @@ -183,15 +183,15 @@ namespace WMS.Web.Repositories StockCode = s.detail.StockCode, StockName = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, _loginRepositories.CompanyId, s.detail.StockCode + s.detail.OrgCode), MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.detail.MaterialNumber), - MaterialNumber = s.detail.MaterialNumber, + MaterialNumber = s.detail.MaterialNumber, Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.detail.MaterialNumber), Qty = s.detail.AccruedQty, DeliveredQty = s.detail.DeliveredQty, ReceiveQty = s.detail.ReceiveQty, //采购:可入库数量=应入库数量-收货数量-已交数量+该明细的入库数量之和; - AvailableQty = s.detail.AccruedQty - s.detail.ReceiveQty - (s.detail.DeliveredQty> s.detail.RealityQty? s.detail.DeliveredQty : s.detail.RealityQty), + AvailableQty = s.detail.AccruedQty - s.detail.ReceiveQty - (s.detail.DeliveredQty > s.detail.RealityQty ? s.detail.DeliveredQty : s.detail.RealityQty), Remark = s.detail.Remark, - ErpDetailId=s.detail.ErpDetailId + ErpDetailId = s.detail.ErpDetailId }).ToListAsync(); @@ -230,7 +230,7 @@ namespace WMS.Web.Repositories //这里只查状态为:部分入库和等待收货 var task_query = _context.InStockTask - .Where(w => EF.Functions.Like(w.SourceBillNo, "%" + dto.SourceBillNo + "%") && w.Type!= InstockType.Purchase && (w.Status == InstockStatus.Part || w.Status == InstockStatus.Wait || w.Status==InstockStatus.WaitInStock)); + .Where(w => EF.Functions.Like(w.SourceBillNo, "%" + dto.SourceBillNo + "%") && w.Type != InstockType.Purchase && (w.Status == InstockStatus.Part || w.Status == InstockStatus.Wait || w.Status == InstockStatus.WaitInStock)); //找到头列表 var taskList = await task_query @@ -243,7 +243,7 @@ namespace WMS.Web.Repositories { var ids = taskList.Select(x => x.Id).ToList(); //找明细 - var query = _context.InStockTaskDetails.Where(x => ids.Contains(x.Fid) && x.AccruedQty>0 && x.IsRepeal!=true); + var query = _context.InStockTaskDetails.Where(x => ids.Contains(x.Fid) && x.AccruedQty > 0 && x.IsRepeal != true); //仓库 if (!string.IsNullOrEmpty(dto.StockCode)) @@ -255,20 +255,20 @@ namespace WMS.Web.Repositories DetailsId = s.Id, SupplierId = s.SupplierId, OrgId = s.OrgId, - OrgCode=s.OrgCode, + OrgCode = s.OrgCode, StockCode = s.StockCode, - StockName = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, _loginRepositories.CompanyId, s.StockCode+s.OrgCode), + StockName = _singleDataService.GetSingleData(SingleAction.StocksJoinOrgCode, _loginRepositories.CompanyId, s.StockCode + s.OrgCode), MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialNumber), - MaterialNumber = s.MaterialNumber, + MaterialNumber = s.MaterialNumber, Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialNumber), Qty = s.AccruedQty, DeliveredQty = s.DeliveredQty, //非采购:可入库数量=应入库数量-收货数量; AvailableQty = s.AccruedQty - s.ReceiveQty, Remark = s.Remark, - ErpDetailId=s.ErpDetailId - }).Where(x=>x.AvailableQty>0).ToListAsync(); - + ErpDetailId = s.ErpDetailId + }).Where(x => x.AvailableQty > 0).ToListAsync(); + //找箱 var task_box = await _context.InstockTaskBox.Where(x => ids.Contains(x.TaskId)) .Select(s => new SourceBillNoNoPurchaseBoxQueryResponse() @@ -290,15 +290,29 @@ namespace WMS.Web.Repositories var response = new List(); foreach (var item in taskList) { - if (item.Details.Count != 0) + if (item.Details.Count != 0) { response.Add(item); } - + } return response; } + /// + /// 获取-已收货的箱子 + /// + /// + /// + public async Task> GetReceiveBox(int taskId) + { + return await _context.InstockTaskBox.Where(x => x.TaskId == taskId).Select(x => new ReceiveBoxResponse() + { + TaskId = x.TaskId, + BoxId = x.BoxId, + BoxBillNo = x.BoxBillNo + }).ToListAsync(); + } /// /// 批量添加 @@ -472,7 +486,7 @@ namespace WMS.Web.Repositories List ids_Operator = new List(); if (companyId == 0) companyId = _loginRepositories.CompanyId; - + if (!string.IsNullOrEmpty(dto.Receiver)) { var staffList = await _basicsRepositories.GetStaffListAsync(companyId); @@ -480,7 +494,7 @@ namespace WMS.Web.Repositories ids_Receiver = staffList.Where(w => w.Name.Contains(dto.Receiver)).Select(s => s.Id).ToList(); } - if (!string.IsNullOrEmpty(dto.Operator)) + if (!string.IsNullOrEmpty(dto.Operator)) { var staffList = await _basicsRepositories.GetStaffListAsync(companyId); if (staffList != null)