From 975da83f1ef2098bf97d85c256e80632e157be6f Mon Sep 17 00:00:00 2001
From: xxyy <cathay_xy@163.com>
Date: 星期三, 12 二月 2025 11:57:12 +0800
Subject: [PATCH] 优化库存任务管理与出库任务处理

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs |   71 +++++++++++++++++++++++++++++------
 1 files changed, 59 insertions(+), 12 deletions(-)

diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
index 5ab2700..08ecdc5 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
@@ -1,7 +1,11 @@
-锘�
+锘縰sing AngleSharp.Dom;
 using Mapster;
-using WIDESEA_Core.HttpContextUser;
-using WIDESEA_Core.Seed;
+using Masuit.Tools;
+using SqlSugar;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Linq.Expressions;
+using WIDESEA_Core;
 
 namespace WIDESEA_StorageBasicService;
 
@@ -18,15 +22,59 @@
     /// <returns></returns>
     public override PageGridData<DtStockInfo> GetPageData(PageDataOptions options)
     {
-        var data = base.GetPageData(options);
-        foreach (var item in data.Rows)
+        string wheres = ValidatePageOptions(options);
+        //鑾峰彇鎺掑簭瀛楁
+        Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+        List<OrderByModel> orderByModels = new List<OrderByModel>();
+        foreach (var item in orderbyDic)
         {
-            if (item.IsFull)
-                item.Remark = item.StockInfoDetails.Count().ToString();
-            else
-                item.Remark = "0";
+            OrderByModel orderByModel = new()
+            {
+                FieldName = item.Key,
+                OrderByType = item.Value
+            };
+            orderByModels.Add(orderByModel);
         }
-        return data;
+
+
+        int totalCount = 0;
+        List<SearchParameters> searchParametersList = new List<SearchParameters>();
+        if (!string.IsNullOrEmpty(options.Wheres))
+        {
+            try
+            {
+                searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+                options.Filter = searchParametersList;
+            }
+            catch { }
+        }
+
+        Expression<Func<DtStockInfo, bool>> locationStatus = null;
+        Expression<Func<DtStockInfo, bool>> roadwayNo = null;
+        foreach (var item in searchParametersList)
+        {
+            if (item.Name.Contains("locationStatus"))
+            {
+                locationStatus = x => x.LocationInfo.LocationStatus == Convert.ToInt32(item.Value);
+            }
+            else if (item.Name.Contains("roadwayNo"))
+            {
+                roadwayNo = x => x.LocationInfo.RoadwayNo.Contains(item.Value);
+            }
+        }
+
+        var data = BaseDal.Db.Queryable<DtStockInfo>().IncludesAllFirstLayer().WhereIF(!wheres.IsNullOrEmpty(), wheres).WhereIF(locationStatus != null, locationStatus).WhereIF(roadwayNo != null, roadwayNo).OrderBy(orderByModels).ToPageList(options.Page, options.Rows, ref totalCount);
+        new PageGridData<DtStockInfo>(totalCount, data);
+        return new PageGridData<DtStockInfo>(totalCount, data);
+        //var data = base.GetPageData(options);
+        //foreach (var item in data.Rows)
+        //{
+        //    if (item.IsFull)
+        //        item.Remark = item.StockInfoDetails.Count().ToString();
+        //    else
+        //        item.Remark = "0";
+        //}
+        //return data;
     }
 
     /// <summary>
@@ -38,7 +86,6 @@
     {
         try
         {
-
             List<DtStockInfo_Hty> stockInfos = new List<DtStockInfo_Hty>();
             List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
             foreach (var item in keys)
@@ -66,7 +113,7 @@
     }
 
     // 鏍规嵁浼犲叆搴撳瓨绫诲瀷鑾峰彇涓嶅悓宸烽亾鐨勫簱瀛�
-    public async Task<Dictionary<string, int>> GetLocationByStockType(bool stockType,string areaCode)
+    public async Task<Dictionary<string, int>> GetLocationByStockType(bool stockType, string areaCode)
     {
         var stockInfos = await BaseDal.Db.Queryable<DtStockInfo>().Where(x => x.IsFull == stockType && x.AreaCode == areaCode)
             .Includes(x => x.LocationInfo).ToListAsync();

--
Gitblit v1.9.3