From 1e12c140c041c0cb52306a0db9ff0ba18354d0d8 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 03 四月 2025 18:01:52 +0800
Subject: [PATCH] 优化WMS前端首页,货位查询column数据库关键字处理

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs |  164 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 163 insertions(+), 1 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
index fff5b33..b13506a 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs"
@@ -1,4 +1,5 @@
 锘�
+using MailKit.Search;
 using Microsoft.AspNetCore.Http;
 using SqlSugar;
 using System;
@@ -9,6 +10,7 @@
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Common;
 using WIDESEA_Core;
 using WIDESEA_Core.BaseRepository;
 using WIDESEA_Core.BaseServices;
@@ -16,6 +18,7 @@
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.Utilities;
 using WIDESEA_DTO.Stock;
+using WIDESEA_IBasicRepository;
 using WIDESEA_IStockRepository;
 using WIDESEA_IStockService;
 using WIDESEA_Model.Models;
@@ -25,16 +28,99 @@
     public partial class StockViewService : IStockViewService
     {
         private readonly IUnitOfWorkManage _unitOfWorkManage;
+        private readonly IStockRepository _stockRepository;
         private readonly SqlSugarClient _dbBase;
 
-        public StockViewService(IUnitOfWorkManage unitOfWorkManage)
+        public StockViewService(IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository)
         {
             _unitOfWorkManage = unitOfWorkManage;
             _dbBase = unitOfWorkManage.GetDbClient();
+            _stockRepository = stockRepository;
         }
 
         public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
         {
+
+            #region MyRegion
+            //try
+            //{
+            //    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,
+            //            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,
+            //        });
+
+            //    int totalCount = 0;
+
+            //    stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
+            //    return new PageGridData<StockViewDTO>(totalCount, stockViewDTOs);
+            //}
+            //catch (Exception ex)
+            //{
+            //    return new PageGridData<StockViewDTO>();
+            //}
+            #endregion
+
+            #region MyRegion
             string where = options.ValidatePageOptions(typeof(StockViewDTO).GetProperties());
             //鑾峰彇鎺掑簭瀛楁
             //Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties());
@@ -78,9 +164,85 @@
                 Details = b.Details,
             }).ToPageList(options.Page, options.Rows, ref totalCount);
             return new PageGridData<StockViewDTO>(totalCount, list);
+            #endregion
 
         }
 
+        public virtual WebResponseContent GetLocationStockView(int Layer)
+        {
+            WebResponseContent content = new WebResponseContent();
+            try
+            {
+                List<LocationStockView> locationStockViews = new List<LocationStockView>();
+                ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
+                List<Dt_LocationInfo> dt_LocationInfos = sugarQueryable.ToList();
+
+                ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)).Includes(x => x.Details);
+                List<Dt_StockInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList();
+                foreach (var dt_LocationInfo in dt_LocationInfos)
+                {
+                    LocationStockView locationStockView = new LocationStockView()
+                    {
+                        AreaId = dt_LocationInfo.AreaId,
+                        Column = dt_LocationInfo.Column,
+                        Depth = dt_LocationInfo.Depth,
+                        EnalbeStatus = dt_LocationInfo.EnableStatus,
+                        Layer = dt_LocationInfo.Layer,
+                        LocationCode = dt_LocationInfo.LocationCode,
+                        LocationName = dt_LocationInfo.LocationName,
+                        LocationStatus = dt_LocationInfo.LocationStatus,
+                        LocationType = dt_LocationInfo.LocationType,
+                        RoadwayNo = dt_LocationInfo.RoadwayNo,
+                        Row = dt_LocationInfo.Row
+                    };
+                    List<Dt_StockInfo> dt_StockInfos = StockInfos.Where(x => x.LocationCode == dt_LocationInfo.LocationCode).ToList();
+                    if (dt_StockInfos.Count > 0 && dt_StockInfos != null)
+                    {
+                        locationStockView.BatchNo = dt_StockInfos.First().Details.First().BatchNo;
+                        locationStockView.InDate = dt_StockInfos.First().InDate;
+                        locationStockView.MaterielCode = dt_StockInfos.First().Details.First().MaterielCode;
+                        locationStockView.MaterielName = dt_StockInfos.First().Details.First().MaterielName;
+                        locationStockView.OrderNo = dt_StockInfos.First().Details.First().OrderNo;
+                        locationStockView.PalletCode = string.Join(",", dt_StockInfos.Select(x => x.PalletCode).ToList());
+                        locationStockView.Quantity = dt_StockInfos.Count;
+                    }
+                    locationStockViews.Add(locationStockView);
+                }
+                if (locationStockViews.Count > 0)
+                {
+                    #region MyRegion
+                    List<LocationLayer> layers = new List<LocationLayer>();
+                    foreach (var layer in locationStockViews.GroupBy(x => x.Layer))
+                    {
+                        var rows = new List<LocationRow>();
+                        var data_rows = layer.GroupBy(t => t.Row);
+                        foreach (var data_row in data_rows)
+                        {
+                            rows.Add(new LocationRow()
+                            {
+                                index = data_row.Key,
+                                cols = data_row.OrderBy(x => x.Column).ToList()
+                            });
+                        }
+                        //rows=rows.OrderBy(x=>x.index).ToList();
+                        layers.Add(new LocationLayer()
+                        {
+                            index = layer.Key,
+                            rows = rows
+                        });
+                    }
+                    #endregion
+                    layers = layers.OrderBy(x => x.index).ToList();
+                    content.OK(data: layers);
+                }
+            }
+            catch (Exception ex)
+            {
+                content.Error(ex.Message);
+            }
+            return content;
+        }
+
         public virtual object GetDetailPage(PageDataOptions pageData)
         {
             Type t = typeof(StockViewDTO);

--
Gitblit v1.9.3