From 48e2278d7ac330c7f05deda6f884acb6f01206b4 Mon Sep 17 00:00:00 2001
From: yangpeixing <yangpeixing@hnkhzn.com>
Date: 星期一, 13 四月 2026 17:13:51 +0800
Subject: [PATCH] 1
---
WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 203 insertions(+), 28 deletions(-)
diff --git a/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs b/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs
index 8f4b3b5..e8982d8 100644
--- a/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs
+++ b/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs
@@ -1,4 +1,6 @@
锘�
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
@@ -44,7 +46,7 @@
{
try
{
-
+
List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
if (searchParametersList?.Any() == true)
{
@@ -52,6 +54,20 @@
{
switch (param.Name)
{
+ case var name when name == nameof(Dt_StockInfo.PalletCode).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.PalletCode.Contains(param.Value.ToString()));
+ }
+ break;
+ case var name when name == nameof(Dt_StockInfo.System).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.System.Contains(param.Value.ToString()));
+ }
+ break;
case var name when name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower():
if (!string.IsNullOrEmpty(param.Value?.ToString()))
{
@@ -71,7 +87,7 @@
if (!string.IsNullOrEmpty(param.Value?.ToString()))
{
sugarQueryable1 = sugarQueryable1
- .Where(x => x.LocationCode == param.Value.ToString());
+ .Where(x => x.LocationCode.Contains(param.Value.ToString()));
}
break;
case var name when name == nameof(Dt_LocationInfo.LocationStatus).FirstLetterToLower():
@@ -117,7 +133,180 @@
{
}
}
-
+
+
+ ISugarQueryable<StockViewDTO> list = sugarQueryable1
+ .InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode)
+ .Select((b, a) => new StockViewDTO
+ {
+ LocationCode = b.LocationCode,
+ Column = a.Column,
+ WarehouseId = b.WarehouseId,
+ CreateDate = b.CreateDate,
+ Creater = b.Creater,
+ Depth = a.Depth,
+ EnalbeStatus = a.EnableStatus,
+ Layer = a.Layer,
+ LocationName = a.LocationName,
+ LocationStatus = a.LocationStatus,
+ LocationType = a.LocationType,
+ Modifier = b.Modifier,
+ ModifyDate = b.ModifyDate,
+ PalletCode = b.PalletCode,
+ StockRemark = b.Remark,
+ RoadwayNo = a.RoadwayNo,
+ System = b.System,
+ Row = a.Row,
+ StockId = b.Id,
+ StockStatus = b.StockStatus,
+ Details = b.Details,
+ });
+
+ int totalCount = 0;
+ var stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
+
+ stockViewDTOs.ForEach(x =>
+ {
+ x.MaterielCode = string.Join(",", x.Details.Select(d => d.MaterielCode).Distinct());
+ x.BatchNo = string.Join(",", x.Details.Select(d => d.BatchNo).Distinct());
+ x.SupplierBatch = string.Join(",", x.Details.Select(d => d.SupplierBatch).Distinct());
+ x.MaterielSpec = x.Details.FirstOrDefault()?.MaterieSpec ?? "";
+ x.MaterielName = x.Details.FirstOrDefault()?.MaterielName ?? "";
+ });
+
+ return new PageGridData<StockViewDTO>(totalCount, stockViewDTOs);
+ }
+ catch (Exception ex)
+ {
+ }
+ return new PageGridData<StockViewDTO>();
+ }
+
+ public virtual object GetDetailPage(PageDataOptions pageData)
+ {
+ Type t = typeof(StockViewDTO);
+
+ if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
+ string keyName = t.GetKeyName();
+ ////鐢熸垚鏌ヨ鏉′欢
+ //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
+ int totalCount = 0;
+ PropertyInfo? propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
+ if (propertyInfo != null)
+ {
+ Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
+ Navigate? navigate = propertyInfo.GetCustomAttribute<Navigate>();
+ if (navigate != null)
+ {
+ List<ExpandoObject> list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+ return new PageGridData<ExpandoObject>(totalCount, list);
+ }
+ }
+ return new PageGridData<object>(total: 0, null);
+ }
+
+ public virtual WebResponseContent Export(PageDataOptions options)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ Type t = typeof(StockViewDTO);
+
+ string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport";
+ IExporter exporter = new ExcelExporter();
+ options.Page = 1;
+ options.Rows = 30;
+ options.Order = "desc";
+ options.Sort = "stockId";
+
+ ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Includes(x => x.Details);
+ ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
+ ISugarQueryable<Dt_StockInfoDetail> sugarQueryable2 = _dbBase.Queryable<Dt_StockInfoDetail>();
+ if (!string.IsNullOrEmpty(options.Wheres))
+ {
+ try
+ {
+
+ List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ if (searchParametersList?.Any() == true)
+ {
+ foreach (var param in searchParametersList)
+ {
+ switch (param.Name)
+ {
+ case var name when name == nameof(Dt_StockInfo.PalletCode).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.PalletCode.Contains(param.Value.ToString()));
+ }
+ break;
+ case var name when name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.Details.Any(v => v.MaterielCode.Contains(param.Value.ToString())));
+ }
+ break;
+ case var name when name == nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.Details.Any(v => v.BatchNo.Contains(param.Value.ToString())));
+ }
+ break;
+
+ case var name when name == nameof(Dt_StockInfo.LocationCode).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.LocationCode.Contains(param.Value.ToString()));
+ }
+ break;
+ case var name when name == nameof(Dt_LocationInfo.LocationStatus).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable = sugarQueryable
+ .Where(x => x.LocationStatus == param.Value.ObjToInt());
+ }
+ break;
+ case var name when name == nameof(Dt_StockInfo.StockStatus).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.StockStatus == param.Value.ObjToInt());
+ }
+ break;
+ case var name when name == nameof(Dt_StockInfo.WarehouseId).FirstLetterToLower():
+ if (!string.IsNullOrEmpty(param.Value?.ToString()))
+ {
+ sugarQueryable1 = sugarQueryable1
+ .Where(x => x.WarehouseId == param.Value.ObjToInt());
+ }
+ break;
+ case var name when name == nameof(Dt_StockInfo.CreateDate).FirstLetterToLower():
+ if (DateTime.TryParse(param.Value?.ToString(), out DateTime minDate))
+ {
+ LinqExpressionType expressionType = param.DisplayType.GetLinqCondition();
+ if (expressionType == LinqExpressionType.ThanOrEqual)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate >= minDate);
+ }
+ else if (expressionType == LinqExpressionType.LessThanOrEqual)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate <= minDate);
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ }
+ }
+
ISugarQueryable<StockViewDTO> list = sugarQueryable1
.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode)
@@ -152,39 +341,25 @@
{
x.MaterielCode = string.Join(",", x.Details.Select(d => d.MaterielCode).Distinct());
x.BatchNo = string.Join(",", x.Details.Select(d => d.BatchNo).Distinct());
+ x.SupplierBatch = string.Join(",", x.Details.Select(d => d.SupplierBatch).Distinct());
+ x.StockCounts = Math.Round(x.Details.Sum(x => x.StockQuantity), 3).ToString();
x.MaterielSpec = x.Details.FirstOrDefault()?.MaterieSpec ?? "";
x.MaterielName = x.Details.FirstOrDefault()?.MaterielName ?? "";
});
- return new PageGridData<StockViewDTO>(totalCount, stockViewDTOs);
+ byte[] data = exporter.ExportAsByteArray(stockViewDTOs).Result;
+
+ string fileName = "搴撳瓨瑙嗗浘.xlsx";
+
+ FileHelper.WriteFile(savePath, fileName, data);
+
+ content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
}
catch (Exception ex)
{
+ content = WebResponseContent.Instance.Error(ex.Message);
}
- return new PageGridData<StockViewDTO>();
- }
-
- public virtual object GetDetailPage(PageDataOptions pageData)
- {
- Type t = typeof(StockViewDTO);
-
- if (pageData.Value == null) return new PageGridData<object>(total: 0, null);
- string keyName = t.GetKeyName();
- ////鐢熸垚鏌ヨ鏉′欢
- //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal);
- int totalCount = 0;
- PropertyInfo? propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null);
- if (propertyInfo != null)
- {
- Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0];
- Navigate? navigate = propertyInfo.GetCustomAttribute<Navigate>();
- if (navigate != null)
- {
- List<ExpandoObject> list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
- return new PageGridData<ExpandoObject>(totalCount, list);
- }
- }
- return new PageGridData<object>(total: 0, null);
+ return content;
}
}
}
--
Gitblit v1.9.3