From e57b06871c0a0276a308592f7906678e8be4dbe4 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期六, 06 十二月 2025 23:12:58 +0800
Subject: [PATCH] 提交
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs | 156 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 154 insertions(+), 2 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs"
index 15e4b18..ea36886 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs"
@@ -1,12 +1,164 @@
-锘縰sing System;
+锘縰sing SqlSugar;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Core;
+using WIDESEA_Core.BaseRepository;
+using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Helper;
+using WIDESEA_DTO.Stock;
+using WIDESEA_IStockService;
+using WIDESEA_Model.Models;
namespace WIDESEA_StockService
{
- internal class StockDetailByMaterielService
+ public class StockDetailByMaterielService :IStockDetailByMaterielService
{
+ private readonly IUnitOfWorkManage _unitOfWorkManage;
+ private readonly SqlSugarClient _dbBase;
+
+ public StockDetailByMaterielService(IUnitOfWorkManage unitOfWorkManage)
+ {
+ _unitOfWorkManage = unitOfWorkManage;
+ _dbBase = unitOfWorkManage.GetDbClient();
+ }
+
+
+ public virtual PageGridData<StockDetailByMateriel> GetPageGridData(PageDataOptions options)
+ {
+ try
+ {
+
+ List<StockDetailByMateriel> materielnfoStatistics = new List<StockDetailByMateriel>();
+ ISugarQueryable<Dt_StockInfoDetail> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfoDetail>();
+
+ ISugarQueryable<Dt_StockInfo> sugarQueryable = _dbBase.Queryable<Dt_StockInfo>();
+ if (!string.IsNullOrEmpty(options.Wheres))
+ {
+ try
+ {
+ List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ if (searchParametersList.Count > 0)
+ {
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielCode.Contains(searchParameters.Value));
+ }
+ }
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfo.WarehouseId).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable = sugarQueryable.Where(x => x.WarehouseId.Equals(searchParameters.Value));
+ }
+ }
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfo.StockStatus).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable = sugarQueryable.Where(x => x.StockStatus.Equals(searchParameters.Value));
+ }
+ }
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielName).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielName.Contains(searchParameters.Value));
+ }
+ }
+
+ }
+
+ }
+ catch (Exception ex)
+ {
+
+ }
+ }
+
+
+ ISugarQueryable<StockDetailByMateriel> sugarQueryable2 = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => b.StockId == a.Id).Where((b, a) => a.LocationCode != "" && a.LocationCode != null).Select((b, a)
+ => new StockDetailByMateriel
+ {
+ StockId = b.StockId,
+ MaterielCode = b.MaterielCode,
+ MaterielName = b.MaterielName,
+ StockQuantity = (decimal)b.StockQuantity,
+ OutboundQuantity = (decimal)b.OutboundQuantity,
+ OrderNo = b.OrderNo,
+ BatchNo = b.BatchNo,
+ SerialNumber = b.SerialNumber,
+ SupplyCode = b.SupplyCode,
+ WarehouseCode = b.WarehouseCode,
+ Barcode = b.Barcode,
+ Unit = b.Unit,
+ Creater = b.Creater,
+ CreateDate= b.CreateDate,
+ Modifier = b.Modifier,
+ ModifyDate = b.ModifyDate,
+ Remark = a.Remark,
+
+ });
+ // 鑾峰彇鎵�鏈夋暟鎹�
+ var allData = sugarQueryable2.ToList();
+
+ // 浣跨敤瀛楀吀杩涜鍒嗙粍姹囨��
+ var groupedData = new Dictionary<string, StockDetailByMateriel>();
+ foreach (var item in allData)
+ {
+ // 纭繚鍒濆鍊间负decimal绫诲瀷
+ if (groupedData.ContainsKey(item.MaterielCode))
+ {
+ groupedData[item.MaterielCode].StockQuantity += Convert.ToDecimal(item.StockQuantity);
+ groupedData[item.MaterielCode].OutboundQuantity += Convert.ToDecimal(item.OutboundQuantity);
+ }
+ else
+ {
+ groupedData[item.MaterielCode] = new StockDetailByMateriel
+ {
+ StockId = item.StockId,
+ MaterielCode = item.MaterielCode,
+ MaterielName = item.MaterielName,
+ StockQuantity = Convert.ToDecimal(item.StockQuantity),
+ OutboundQuantity = Convert.ToDecimal(item.OutboundQuantity),
+ OrderNo = item.OrderNo,
+ BatchNo = item.BatchNo,
+ SerialNumber = item.SerialNumber,
+ SupplyCode = item.SupplyCode,
+ WarehouseCode = item.WarehouseCode,
+ Barcode = item.Barcode,
+ Creater = item.Creater,
+ CreateDate = item.CreateDate,
+ Modifier = item.Modifier,
+ ModifyDate = item.ModifyDate,
+ Unit = item.Unit,
+ Remark = item.Remark
+ };
+ }
+ }
+
+ // 杞崲涓哄垪琛�
+ materielnfoStatistics = groupedData.Values.ToList();
+
+ // 鍒嗛〉澶勭悊
+ int startIndex = (options.Page - 1) * options.Rows;
+ int endIndex = Math.Min(startIndex + options.Rows, materielnfoStatistics.Count);
+ materielnfoStatistics = materielnfoStatistics.GetRange(startIndex, endIndex - startIndex);
+
+ int count = groupedData.Count;
+
+ return new PageGridData<StockDetailByMateriel>(count, materielnfoStatistics);
+
+ }
+ catch (Exception ex)
+ {
+
+ }
+ return new PageGridData<StockDetailByMateriel>();
+ }
}
}
--
Gitblit v1.9.3