From 8221eae77996169f3b37d7f722ef14eec4e2efd8 Mon Sep 17 00:00:00 2001 From: tongfei <244188119@qq.com> Date: Fri, 27 Oct 2023 09:30:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95-=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/InStockController.cs | 46 +++++++++++++++++++ src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 12 +++++ src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 5 ++ src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 7 +++ .../Dto/InStock/InStockQueryResponse.cs | 7 ++- src/WMS.Web.Domain/Entitys/InStock.cs | 2 +- .../Infrastructure/IInStockRepositories.cs | 9 ++++ .../InStockRepositories.cs | 42 ++++++++++++++++- 8 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 src/WMS.Web.Api/Controllers/InStockController.cs diff --git a/src/WMS.Web.Api/Controllers/InStockController.cs b/src/WMS.Web.Api/Controllers/InStockController.cs new file mode 100644 index 00000000..e29572ef --- /dev/null +++ b/src/WMS.Web.Api/Controllers/InStockController.cs @@ -0,0 +1,46 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using WMS.Web.Core.Dto; +using WMS.Web.Core.Internal.Results; +using WMS.Web.Domain.Infrastructure; +using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Values; + +namespace WMS.Web.Api.Controllers +{ + /// + /// 入库单-接口 + /// + [Route("api/[controller]")] + [ApiController] + public class InStockController : ControllerBase + { + private readonly ILoginService _loginService; + private readonly IInStockRepositories _inStockRepositories; + public InStockController(ILoginService loginService, IInStockRepositories inStockRepositories) + { + this._loginService = loginService; + this._inStockRepositories = inStockRepositories; + } + + /// + /// 列表 + /// + /// + /// + [HttpPost] + [Route("GetList")] + public async Task> GetPagedList([FromBody] InStockQueryRequest dto) + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return ResultPagedList.ReFailure(ResultCodes.Token_Invalid_Error); + var result= await _inStockRepositories.GetPagedList(dto); + return result; + } + } +} diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index fa5575e3..864785fc 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -23,6 +23,18 @@ + + + 入库单-接口 + + + + + 列表 + + + + 登录接口 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index b69bc5dd..0c6c870c 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -340,6 +340,11 @@ 单据ID + + + 明细ID + + 单据编号 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 09bf1ead..6976c2f0 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -830,6 +830,13 @@ wms入库单-仓储接口 + + + 列表-分页 + + + + 获取事务 用来处理即时库存 diff --git a/src/WMS.Web.Core/Dto/InStock/InStockQueryResponse.cs b/src/WMS.Web.Core/Dto/InStock/InStockQueryResponse.cs index 67b724bc..66d86376 100644 --- a/src/WMS.Web.Core/Dto/InStock/InStockQueryResponse.cs +++ b/src/WMS.Web.Core/Dto/InStock/InStockQueryResponse.cs @@ -14,6 +14,11 @@ namespace WMS.Web.Core.Dto /// public int Id { get; set; } + /// + /// 明细ID + /// + public int DetailsId { get; set; } + /// /// 单据编号 /// @@ -68,6 +73,6 @@ namespace WMS.Web.Core.Dto /// /// 同步成功或者失败 /// - public bool SuccessSync { get; set; } + public bool? SuccessSync { get; set; } } } diff --git a/src/WMS.Web.Domain/Entitys/InStock.cs b/src/WMS.Web.Domain/Entitys/InStock.cs index b5d84c21..6ad4c909 100644 --- a/src/WMS.Web.Domain/Entitys/InStock.cs +++ b/src/WMS.Web.Domain/Entitys/InStock.cs @@ -36,7 +36,7 @@ namespace WMS.Web.Domain.Entitys /// /// 同步成功或者失败 /// - public bool SuccessSync { get; set; } + public bool? SuccessSync { get; set; } /// /// 明细 diff --git a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs index 4d57a726..885a7d4a 100644 --- a/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs +++ b/src/WMS.Web.Domain/Infrastructure/IInStockRepositories.cs @@ -1,6 +1,9 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; +using WMS.Web.Core.Dto; +using WMS.Web.Core.Internal.Results; namespace WMS.Web.Domain.Infrastructure { @@ -9,5 +12,11 @@ namespace WMS.Web.Domain.Infrastructure /// public interface IInStockRepositories { + /// + /// 列表-分页 + /// + /// + /// + Task> GetPagedList(InStockQueryRequest dto); } } diff --git a/src/WMS.Web.Repositories/InStockRepositories.cs b/src/WMS.Web.Repositories/InStockRepositories.cs index 38d81e3e..e0709a91 100644 --- a/src/WMS.Web.Repositories/InStockRepositories.cs +++ b/src/WMS.Web.Repositories/InStockRepositories.cs @@ -1,8 +1,11 @@ using AutoMapper; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; +using System.Linq; using System.Text; using System.Threading.Tasks; +using WMS.Web.Core; using WMS.Web.Core.Dto; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.Infrastructure; @@ -27,11 +30,46 @@ namespace WMS.Web.Repositories _serviceProvider = serviceProvider; } + /// + /// 列表-分页 + /// + /// + /// public async Task> GetPagedList(InStockQueryRequest dto) { - //var query=_context. + var query=_context.InStockDetails + .GroupJoin(_context.Instock, 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); - return null; + if (!string.IsNullOrEmpty(dto.SourceBillNo)) + query = query.Where(w => EF.Functions.Like(w.detail.SourceBillNo, "%" + dto.SourceBillNo + "%")); + + var response = new ResultPagedList(); + int total = await query.CountAsync(); + response.TotalCount = total; + + var list = await query.Select(s => new InStockQueryResponse() + { + Id=s.order.Id, + DetailsId=s.detail.Id, + BillNo=s.order.BillNo, + Type=s.order.Type.GetRemark(), + SourceBillNo=s.detail.SourceBillNo, + Supplier="", + Org="", + MaterialName="", + MaterialNumber="", + Specifications="", + Stock="", + Qty=s.detail.Qty, + Creator="", + CreateTime=s.order.CreateTime, + SuccessSync=s.order.SuccessSync + }).OrderByDescending(x => x.Id).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); + + response.Data = list; + return response; } } }