From 743c2748dd4e3c2c2a84c7ae930a9cf287453a84 Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周一, 12 5月 2025 17:10:40 +0800 Subject: [PATCH] 出入库 --- HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs | 55 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 49 insertions(+), 6 deletions(-) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs index 86b12d4..117a125 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs @@ -1,6 +1,7 @@ using System.Linq.Dynamic.Core; using CMS.Plugin.HIAWms.Domain.WmsMaterialStocks; using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; +using DatabaseSchemaReader.Filters; using Microsoft.EntityFrameworkCore; using SqlKata; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; @@ -29,6 +30,21 @@ .Where(u => !u.IsDeleted) .OrderBy(t => t.Sort) .FirstOrDefaultAsync(t => t.MaterialNo == materialNo, GetCancellationToken(cancellationToken)); + } + + /// <summary> + /// 查找型号 + /// </summary> + /// <param name="materiaModel"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public virtual async Task<WmsMaterialStock> FindByModelAsync(string materiaModel, CancellationToken cancellationToken = default) + { + return await (await GetDbSetAsync()) + .IncludeDetails() + .Where(u => !u.IsDeleted) + .OrderBy(t => t.Sort) + .FirstOrDefaultAsync(t => t.MaterialModel == materiaModel, GetCancellationToken(cancellationToken)); } /// <inheritdoc /> @@ -72,7 +88,7 @@ .WhereIf(stock?.ContainerType > 0, u => u.ContainerType == stock.ContainerType) .WhereIf(!string.IsNullOrEmpty(stock?.MaterialBatch), u => u.MaterialBatch == stock.MaterialBatch) .WhereIf(!string.IsNullOrEmpty(stock?.SupplierCode), u => u.SupplierCode == stock.SupplierCode) - .WhereIf(!string.IsNullOrEmpty(stock?.MaterialModel), u => u.MaterialModel.Contains(stock.MaterialModel)) + .WhereIf(!string.IsNullOrEmpty(stock?.MaterialModel), u => u.MaterialModel==stock.MaterialModel) .WhereIf(!string.IsNullOrEmpty(stock?.PlaceNo), u => u.PlaceNo == stock.PlaceNo) .WhereIf(stock.PlaceStatus > 0, u => u.PlaceStatus == stock.PlaceStatus) .WhereIf(stock?.StorageTypeNo > 0, u => u.StorageTypeNo == stock.StorageTypeNo) @@ -100,36 +116,37 @@ x.AreaName, x.CheckStatus, x.IsLock, + x.StockNumber, x.EmptyContainer, x.InStockTime }) .ToListAsync(GetCancellationToken(cancellationToken)); var groupedData = materialList - .GroupBy(x => new { x.MaterialNo, x.PlaceNo, x.ContainerNo, x.MaterialName }) + .GroupBy(x => new { x.MaterialNo, x.PlaceNo, x.ContainerNo,x.MaterialModel}) .Select(g => new WmsMaterialStock { MaterialNo = g.Key.MaterialNo, - MaterialName = g.Key.MaterialName, + MaterialName = g.First().MaterialName, PlaceNo = g.Key.PlaceNo, ContainerNo = g.Key.ContainerNo, ContainerStatus = g.First().ContainerStatus, PlaceStatus = g.First().PlaceStatus, StorageTypeNo = g.First().StorageTypeNo, MaterialBatch = g.First().MaterialBatch, - MaterialModel = g.First().MaterialModel, + MaterialModel = g.Key.MaterialModel, AreaCode = g.First().AreaCode, AreaName = g.First().AreaName, CheckStatus = g.First().CheckStatus, IsLock = g.First().IsLock, EmptyContainer = g.First().EmptyContainer, InStockTime = g.First().InStockTime, - StockNumber = g.Count() + StockNumber = g.Sum(x=>x.StockNumber) }) .AsQueryable(); // 转换回IQueryable以支持后续操作 var result = groupedData - .OrderBy(sorting.IsNullOrEmpty() ? nameof(WmsMaterialStock.Sort) : sorting) + .OrderBy(x=>x.StockNumber) .PageBy(skipCount, maxResultCount) .ToList(); @@ -213,6 +230,32 @@ return groupedData.Count(); } + /// <summary> + /// 查询库存列表 + /// </summary> + /// <param name="stock"></param> + /// <returns></returns> + public async Task<List<WmsMaterialStock>> GetStockListAsync(WmsMaterialStock? stock) + { + var baseQuery = await (await GetDbSetAsync()) + .WhereIf(!string.IsNullOrEmpty(stock?.MaterialNo), u => u.MaterialNo.Contains(stock.MaterialNo)) + .WhereIf(!string.IsNullOrEmpty(stock?.MaterialName), u => u.MaterialName.Contains(stock.MaterialName)) + .WhereIf(!string.IsNullOrEmpty(stock?.ContainerNo), u => u.ContainerNo == stock.ContainerNo) + .WhereIf(stock?.ContainerStatus > 0, u => u.ContainerStatus == stock.ContainerStatus) + .WhereIf(stock?.ContainerType > 0, u => u.ContainerType == stock.ContainerType) + .WhereIf(!string.IsNullOrEmpty(stock?.MaterialBatch), u => u.MaterialBatch == stock.MaterialBatch) + .WhereIf(!string.IsNullOrEmpty(stock?.SupplierCode), u => u.SupplierCode == stock.SupplierCode) + .WhereIf(!string.IsNullOrEmpty(stock?.MaterialModel), u => u.MaterialModel.Contains(stock.MaterialModel)) + .WhereIf(!string.IsNullOrEmpty(stock?.PlaceNo), u => u.PlaceNo == stock.PlaceNo) + .WhereIf(stock.PlaceStatus > 0, u => u.PlaceStatus == stock.PlaceStatus) + .WhereIf(stock?.StorageTypeNo > 0, u => u.StorageTypeNo == stock.StorageTypeNo) + .WhereIf(!string.IsNullOrEmpty(stock?.AreaCode), u => u.AreaCode == stock.AreaCode) + .WhereIf(!string.IsNullOrEmpty(stock?.AreaName), u => u.AreaName.Contains(stock.AreaName)) + .WhereIf(stock.IsLock > 0, u => u.IsLock == stock.IsLock) + .Where(u => !u.IsDeleted) + .ToListAsync(); + return baseQuery; + } /// <inheritdoc /> public override async Task<IQueryable<WmsMaterialStock>> WithDetailsAsync() { -- Gitblit v1.9.3