From 3460ffdc967b65ea67c959212c2505a19008401e Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期四, 16 四月 2026 13:39:56 +0800
Subject: [PATCH] 盘点优化,智仓调智仓防呆

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_AllocateService/AllocateService.cs |   96 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 73 insertions(+), 23 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_AllocateService/AllocateService.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_AllocateService/AllocateService.cs"
index 185a374..35bbece 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_AllocateService/AllocateService.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_AllocateService/AllocateService.cs"
@@ -8,6 +8,7 @@
 using WIDESEA_Core.BaseServices;
 using WIDESEA_Core.CodeConfigEnum;
 using WIDESEA_Core.DB;
+using WIDESEA_Core.Enums;
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.Seed;
 using WIDESEA_IAllocateService;
@@ -142,6 +143,7 @@
             try
             {
                 var allocateOrder = Db.Queryable<Dt_AllocateOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
+                var outOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
                 if (allocateOrder == null)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟淇℃伅");
@@ -149,6 +151,10 @@
                 if (allocateOrder.Details == null || allocateOrder.Details.Count == 0)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟鏄庣粏淇℃伅");
+                }
+                if (outOrder.OrderStatus != (int)OutOrderStatusEnum.鏈紑濮�)
+                {
+                    return WebResponseContent.Instance.Error($"璇ヨ鍗曠姸鎬佷笉鍏佽淇敼");
                 }
                 List<Dt_AllocateOrderDetail> allocateOrderDetails = new List<Dt_AllocateOrderDetail>();
                 List<Dt_AllocateOrderDetail> updateAllocateOrderDetails = new List<Dt_AllocateOrderDetail>();
@@ -252,6 +258,12 @@
                 if (allocateOrder.Details == null || allocateOrder.Details.Count == 0)
                 {
                     return WebResponseContent.Instance.Error($"鏈壘鍒拌皟鎷ㄥ崟鏄庣粏淇℃伅");
+                }
+                var outOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First();
+
+                if (outOrder.OrderStatus != (int)OutOrderStatusEnum.鏈紑濮�)
+                {
+                    return WebResponseContent.Instance.Error($"璇ヨ鍗曠姸鎬佷笉鍏佽鍒犻櫎");
                 }
                 //Db.DeleteNav(Allocate).Include(x => x.Details).ExecuteCommand();
                 _unitOfWorkManage.BeginTran();
@@ -486,6 +498,7 @@
             string filterOrderStatus = string.Empty;
             string filterreturnToMESStatus = string.Empty;
 
+
             if (!string.IsNullOrEmpty(options.Wheres))
             {
                 try
@@ -546,6 +559,39 @@
                             filterreturnToMESStatus = returnToMESStatusParam.Value.ToString().Trim();
                         }
 
+                        var createDateParams = searchParametersList
+                    .Where(x => x.Name.Equals("createDate", StringComparison.OrdinalIgnoreCase)
+                                && !string.IsNullOrEmpty(x.Value?.ToString()))
+                    .ToList();
+
+                        DateTime? minCreateDate = null; 
+                        DateTime? maxCreateDate = null;
+
+                        foreach (var dateParam in createDateParams)
+                        {
+                            if (DateTime.TryParse(dateParam.Value.ToString(), out DateTime dateValue))
+                            {
+                                LinqExpressionType expressionType = dateParam.DisplayType.GetLinqCondition();
+                                switch (expressionType)
+                                {
+                                    case LinqExpressionType.ThanOrEqual:
+                                        minCreateDate = dateValue;
+                                        break;
+                                    case LinqExpressionType.LessThanOrEqual:
+                                        maxCreateDate = dateValue;
+                                        break;
+                                }
+                            }
+                        }
+
+                        if (minCreateDate.HasValue)
+                        {
+                            sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate >= minCreateDate.Value);
+                        }
+                        if (maxCreateDate.HasValue)
+                        {
+                            sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate <= maxCreateDate.Value);
+                        }
                         options.Filter = searchParametersList;
                     }
                 }
@@ -631,7 +677,6 @@
         public override PageGridData<Dt_InboundOrderDetail> GetDetailPage(PageDataOptions options)
         {
             string wheres = ValidatePageOptions(options);
-            //鑾峰彇鎺掑簭瀛楁
             Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
             List<OrderByModel> orderByModels = new List<OrderByModel>();
             foreach (var item in orderbyDic)
@@ -644,7 +689,6 @@
                 orderByModels.Add(orderByModel);
             }
 
-
             int totalCount = 0;
             List<SearchParameters> searchParametersList = new List<SearchParameters>();
             if (!string.IsNullOrEmpty(options.Wheres))
@@ -656,35 +700,41 @@
                 }
                 catch { }
             }
-            //var data = BaseDal.Db.Queryable<Dt_AllocateOrderDetail>()
-            //    .WhereIF(!wheres.IsNullOrEmpty(), wheres)
-            //    .OrderBy(orderByModels)
-            //    .ToPageList(options.Page, options.Rows, ref totalCount);
-            //Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.Id == (int)options.Value);
-            //Dt_InboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == allocateOrder.UpperOrderNo).First();
-            //var details = _inboundOrderDetailRepository.QueryData(x => x.OrderId == _InboundOrder.Id );
-            //foreach (var item in data)
-            //{
-            //    var detail = details.Where(x => x.MaterielCode == item.MaterielCode).FirstOrDefault();
-            //    if (detail != null)
-            //    {
-            //        item.OrderQuantity = detail.OrderQuantity;
-            //        item.ReceiptQuantity = detail.ReceiptQuantity;
-            //        item.OverInQuantity = detail.OverInQuantity;
-            //        item.OrderDetailStatus = detail.OrderDetailStatus;
-            //    }
-            //}
-            //return new PageGridData<Dt_AllocateOrderDetail>(totalCount, data);
 
             Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.Id == (int)options.Value);
             Dt_InboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == allocateOrder.UpperOrderNo).First();
             var Id = _InboundOrder == null ? 0 : _InboundOrder.Id;
+
             var data = BaseDal.Db.Queryable<Dt_InboundOrderDetail>()
-                .WhereIF(!wheres.IsNullOrEmpty(), wheres)
-                .Where( x => x.OrderId == Id)
+                .WhereIF(!string.IsNullOrEmpty(wheres), wheres)
+                .Where(x => x.OrderId == Id)
                 .OrderBy(orderByModels)
                 .ToPageList(options.Page, options.Rows, ref totalCount);
 
+            foreach (var detail in data)
+            {
+                if (string.IsNullOrEmpty(detail.Barcode))
+                {
+                    detail.Pallet = string.Empty;
+                    continue;
+                }
+
+                var stockDetail = BaseDal.Db.Queryable<Dt_StockInfoDetail>()
+                    .Where(sd => sd.Barcode == detail.Barcode)
+                    .First();
+
+                if (stockDetail == null || stockDetail.StockId <= 0)
+                {
+                    detail.Pallet = string.Empty;
+                    continue;
+                }
+
+                var stock = BaseDal.Db.Queryable<Dt_StockInfo>()
+                    .Where(s => s.Id == stockDetail.StockId)
+                    .First();
+
+                detail.Pallet = stock == null ? string.Empty : stock.PalletCode;
+            }
 
             return new PageGridData<Dt_InboundOrderDetail>(totalCount, data);
         }

--
Gitblit v1.9.3