From 37454e625df68d40897112b2e8c2e3cf4d7163e3 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期三, 25 三月 2026 11:43:10 +0800
Subject: [PATCH] 1
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_StockService/StockDetailByMaterielService.cs | 141 ++++++++++++++++++++++++++---------------------
1 files changed, 78 insertions(+), 63 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 44be98d..626c036 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"
@@ -18,11 +18,13 @@
{
private readonly IUnitOfWorkManage _unitOfWorkManage;
private readonly SqlSugarClient _dbBase;
+ private readonly IRepository<Dt_StockInfoDetail> _stockInfoDetailRepository;
- public StockDetailByMaterielService(IUnitOfWorkManage unitOfWorkManage)
+ public StockDetailByMaterielService(IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfoDetail> stockInfoDetailRepository)
{
_unitOfWorkManage = unitOfWorkManage;
_dbBase = unitOfWorkManage.GetDbClient();
+ _stockInfoDetailRepository = stockInfoDetailRepository;
}
@@ -30,11 +32,11 @@
{
try
{
-
List<StockDetailByMateriel> materielnfoStatistics = new List<StockDetailByMateriel>();
ISugarQueryable<Dt_StockInfoDetail> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfoDetail>();
-
ISugarQueryable<Dt_StockInfo> sugarQueryable = _dbBase.Queryable<Dt_StockInfo>();
+ ISugarQueryable<Dt_MaterielInfo> sugarQueryable3 = _dbBase.Queryable<Dt_MaterielInfo>();
+
if (!string.IsNullOrEmpty(options.Wheres))
{
try
@@ -42,85 +44,80 @@
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)
{
- SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower());
- if (searchParameters != null)
- {
- sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielCode.Contains(searchParameters.Value));
- }
+ sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielCode.Contains(searchParameters.Value));
}
+
+ searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.WarehouseCode).FirstLetterToLower());
+ if (searchParameters != null)
{
- SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.WarehouseCode).FirstLetterToLower());
- if (searchParameters != null)
- {
- sugarQueryable1 = sugarQueryable1.Where(x => x.WarehouseCode.Contains(searchParameters.Value));
- }
+ sugarQueryable1 = sugarQueryable1.Where(x => x.WarehouseCode.Contains(searchParameters.Value));
}
+
+ searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielName).FirstLetterToLower());
+ if (searchParameters != null)
{
- SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielName).FirstLetterToLower());
- if (searchParameters != null)
- {
- sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielName.Equals(searchParameters.Value));
- }
+
+ sugarQueryable1 = sugarQueryable1.Where(x => x.MaterielName.Contains(searchParameters.Value));
}
+
+ searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower());
+ if (searchParameters != null)
{
- SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower());
- if (searchParameters != null)
- {
- sugarQueryable1 = sugarQueryable1.Where(x => x.BatchNo.Equals(searchParameters.Value));
- }
+ sugarQueryable1 = sugarQueryable1.Where(x => x.BatchNo.Contains(searchParameters.Value));
}
+
+ searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.SupplyCode).FirstLetterToLower());
+ if (searchParameters != null)
{
- SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.SupplyCode).FirstLetterToLower());
- if (searchParameters != null)
- {
- sugarQueryable1 = sugarQueryable1.Where(x => x.SupplyCode.Contains(searchParameters.Value));
- }
+ sugarQueryable1 = sugarQueryable1.Where(x => x.SupplyCode.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
+ ISugarQueryable<StockDetailByMateriel> sugarQueryable2 = sugarQueryable1
+ .InnerJoin(sugarQueryable, (detail, stock) => detail.StockId == stock.Id)
+ .LeftJoin(sugarQueryable3, (detail, stock, materiel) => detail.MaterielCode == materiel.MaterielCode)
+ .Where((detail, stock, materiel) => !string.IsNullOrEmpty(stock.LocationCode))
+ .Select((detail, stock, materiel) => 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,
-
+ StockId = detail.StockId,
+ MaterielCode = detail.MaterielCode,
+ MaterielName = materiel.MaterielName ==null ?detail.MaterielName:materiel.MaterielName,
+ StockQuantity = (decimal)detail.StockQuantity,
+ OutboundQuantity = (decimal)detail.OutboundQuantity,
+ OrderNo = detail.OrderNo,
+ BatchNo = detail.BatchNo,
+ SerialNumber = detail.SerialNumber,
+ SupplyCode = detail.SupplyCode,
+ WarehouseCode = detail.WarehouseCode,
+ Barcode = detail.Barcode,
+ Unit = detail.Unit,
+ Creater = detail.Creater,
+ CreateDate = detail.CreateDate,
+ Modifier = detail.Modifier,
+ ModifyDate = detail.ModifyDate,
+ Remark = stock.Remark
});
- // 鑾峰彇鎵�鏈夋暟鎹�
+
+
var allData = sugarQueryable2.ToList();
- // 浣跨敤瀛楀吀杩涜鍒嗙粍姹囨��
+
var groupedData = new Dictionary<string, StockDetailByMateriel>();
foreach (var item in allData)
{
-
string groupKey = $"{item.MaterielCode}|{item.SupplyCode}|{item.BatchNo}|{item.WarehouseCode}";
- // 纭繚鍒濆鍊间负decimal绫诲瀷
if (groupedData.ContainsKey(groupKey))
{
groupedData[groupKey].StockQuantity += Convert.ToDecimal(item.StockQuantity);
@@ -151,24 +148,42 @@
}
}
- // 杞崲涓哄垪琛�
- materielnfoStatistics = groupedData.Values.ToList();
+ decimal totalStockQuantity = 0;
+ if (groupedData.Count > 0)
+ {
+ totalStockQuantity = groupedData.Values.Sum(x => x.StockQuantity);
+ }
- // 鍒嗛〉澶勭悊
+ 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);
+ if (startIndex < materielnfoStatistics.Count)
+ {
+ materielnfoStatistics = materielnfoStatistics.GetRange(startIndex, endIndex - startIndex);
+ }
+ else
+ {
+ materielnfoStatistics = new List<StockDetailByMateriel>();
+ }
int count = groupedData.Count;
-
return new PageGridData<StockDetailByMateriel>(count, materielnfoStatistics);
-
+
}
catch (Exception ex)
{
-
+ return new PageGridData<StockDetailByMateriel>();
}
- return new PageGridData<StockDetailByMateriel>();
+ }
+
+ public WebResponseContent CalculateStock(string warehouseCode,string materielCode)
+ {
+ var calculateStock =_stockInfoDetailRepository.QueryData(x => x.WarehouseCode == warehouseCode && x.MaterielCode == materielCode).Sum(x => x.StockQuantity);
+ if(calculateStock == 0)
+ {
+ return WebResponseContent.Instance.Error("鏈壘鍒板簱瀛�");
+ }
+ return WebResponseContent.Instance.OK(data: calculateStock);
}
}
}
--
Gitblit v1.9.3