From 92d989c80246f16ea94466d1ce60ef9f6dc7e675 Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周一, 05 5月 2025 23:43:41 +0800 Subject: [PATCH] 库存管理 --- HIAWms/server/src/CMS.Plugin.HIAWms.EntityFrameworkCore/Repositories/EfCoreWmsMaterialStockRepository.cs | 34 +++++++++++++++++++++++++++++++--- 1 files changed, 31 insertions(+), 3 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..f7ad367 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; @@ -100,17 +101,18 @@ 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}) .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, @@ -124,7 +126,7 @@ IsLock = g.First().IsLock, EmptyContainer = g.First().EmptyContainer, InStockTime = g.First().InStockTime, - StockNumber = g.Count() + StockNumber = g.Sum(x=>x.StockNumber) }) .AsQueryable(); // 转换回IQueryable以支持后续操作 @@ -213,6 +215,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