From 25cb7cd50d12f48e93d6cde47420ca3458e9c47a Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期四, 12 六月 2025 21:39:43 +0800 Subject: [PATCH] 1 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs | 149 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 147 insertions(+), 2 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" index 8a732e7..58a7512 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" @@ -1,5 +1,7 @@ 锘� using HslCommunication.Secs.Types; +using Magicodes.ExporterAndImporter.Core; +using Magicodes.ExporterAndImporter.Excel; using Microsoft.AspNetCore.Http; using SqlSugar; using System; @@ -144,6 +146,8 @@ { x.MaterielCode = string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct()); x.BatchNo = string.Join(",", x.Details.Select(x => x.BatchNo).Distinct()); + x.MaterielSpec = x.Details.FirstOrDefault()?.MaterielSpec ?? ""; + x.MaterielName = x.Details.FirstOrDefault()?.MaterielName ?? ""; } ); return new PageGridData<StockViewDTO>(totalCount + pktotalCount, stockViewDTOs); @@ -171,13 +175,154 @@ 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); + List<Dt_StockInfoDetail> list = _dbBase.Queryable<Dt_StockInfoDetail>().Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount); + decimal sum = 0; + list.ForEach(x => + { + sum += Convert.ToDecimal(x.StockQuantity); + }); + PageGridData<Dt_StockInfoDetail> pageGridData = new PageGridData<Dt_StockInfoDetail>() + { + Total = totalCount, + Rows = list, + Summary = new + { + StockQuantity = Math.Round(sum, 3), + } + }; + return pageGridData; } } 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"; + List<StockViewDTO> stockViewDTOs = new List<StockViewDTO>(); + + string where = string.Empty; + ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Includes(x => x.Details); + 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.Details.Any(v => v.MaterielCode.Contains(searchParameters.Value))); + } + } + + { + SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower()); + if (searchParameters != null) + { + sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.BatchNo.Contains(searchParameters.Value))); + } + } + + } + + } + catch { } + } + string whereSto = GetDataRole(typeof(Dt_StockInfo)); + sugarQueryable1 = sugarQueryable1.Where(whereSto); + EntityProperties.ValidatePageOptions(options, ref sugarQueryable1); + + string whereLo = GetDataRole(typeof(Dt_LocationInfo)); + ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>().Where(whereLo); + + EntityProperties.ValidatePageOptions(options, ref sugarQueryable); + + 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, + Row = a.Row, + StockId = b.Id, + StockStatus = b.StockStatus, + Details = b.Details, + }); + + var pklist = sugarQueryable1.Where(b => b.LocationCode == "骞冲簱浣�").Select(b => new StockViewDTO + { + LocationCode = b.LocationCode, + Column = 0, + WarehouseId = b.WarehouseId, + CreateDate = b.CreateDate, + Creater = b.Creater, + Depth = 0, + EnalbeStatus = EnableStatusEnum.Normal.ObjToInt(), + Layer = 0, + LocationName = "骞冲簱浣�", + LocationStatus = LocationStatusEnum.InStock.ObjToInt(), + LocationType = LocationTypeEnum.Undefined.ObjToInt(), + Modifier = b.Modifier, + ModifyDate = b.ModifyDate, + PalletCode = b.PalletCode, + StockRemark = b.Remark, + RoadwayNo = "骞冲簱", + Row = 0, + StockId = b.Id, + StockStatus = b.StockStatus, + Details = b.Details, + }); + stockViewDTOs = list.ToList(); + stockViewDTOs.AddRange(pklist.ToList()); + stockViewDTOs.ForEach(x => + { + x.MaterielCode = (string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct())) ?? "绌虹"; + x.BatchNo = (string.Join(",", x.Details.Select(x => x.BatchNo).Distinct())) ?? "鏃�"; + x.StockCounts = Math.Round(x.Details.Sum(x => x.StockQuantity),3).ToString() + x.Details.FirstOrDefault()?.Unit; + x.MaterielSpec= x.Details.FirstOrDefault()?.MaterielSpec ?? ""; + x.MaterielName= x.Details.FirstOrDefault()?.MaterielName ?? ""; + } + ); + + 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 content; + } private string GetDataRole(Type type) { try -- Gitblit v1.9.3