From 1543e640a8867fa7c8a99fae43402b81876a95a8 Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期六, 24 二月 2024 11:09:42 +0800
Subject: [PATCH] Merge branch 'csc'

---
 Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs |   82 +++++++++++++++++++++++++++++++++--------
 1 files changed, 66 insertions(+), 16 deletions(-)

diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
index 52a047c..0a362ba 100644
--- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
+++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs
@@ -862,22 +862,48 @@
                     }
                 }
                 var roadList = Db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo))
-                    .GroupBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList();
+                    .GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList();
 
-                SysRoadwayUseLog useLog = Db.Ado.SqlQuerySingle<SysRoadwayUseLog>("select Top(1) * from SysRoadwayUseLog where IsDel=0 order by CreateTime desc"); //宸烽亾鏈�鍚庝竴娆′娇鐢ㄨ褰�
+                SysRoadwayUseLog useLog = Db.Queryable<SysRoadwayUseLog>().Where(m=>m.IsDel =="0" && roadList.Contains(m.RoadwayNo)).OrderByDescending(l => l.Id).First(); //宸烽亾鏈�鍚庝竴娆′娇鐢ㄨ褰�
 
-                var bindNum = Db.Queryable<BllPalletBind>()
-                    .Where(m => m.IsDel == "0" && m.Status == "0" && !string.IsNullOrWhiteSpace(m.RoadwayNo))
-                    .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
+                #region 纭畾宸烽亾鎺掑簭
+
+                List<string> roadList2 = new List<string>();
+                List<string> roadSmall = new List<string>();
+                List<string> roadLarge = new List<string>();
+                if (useLog != null)
+                {
+                    roadList2.Add(useLog.RoadwayNo);
+                    foreach (var r in roadList)
+                    {
+                        if (r == useLog.RoadwayNo)
+                        {
+                            continue;
+                        }
+                        //濡傛灉缁撴灉涓�0锛屽垯璇存槑涓や釜瀛楃涓茬浉绛夛紱
+                        //濡傛灉缁撴灉灏忎簬0锛屽垯璇存槑绗竴涓瓧绗︿覆灏忎簬绗簩涓瓧绗︿覆锛�
+                        //濡傛灉缁撴灉澶т簬0锛屽垯璇存槑绗竴涓瓧绗︿覆澶т簬绗簩涓瓧绗︿覆銆�
+                        var bol = String.CompareOrdinal(r, useLog.RoadwayNo);
+                        if (bol < 0)
+                        {
+                            roadSmall.Add(r);
+                        }
+                        if (bol > 0)
+                        {
+                            roadLarge.Add(r);
+                        }
+                    }
+                    roadList2.AddRange(roadLarge);
+                    roadList2.AddRange(roadSmall);
+                }
+
+                roadList = roadList2;
+                #endregion
+
 
                 var roadNo = "";
                 if (laneAllot == 0)//璺冲贩閬撳钩鍧囧垎閰�
                 {
-                    //濡傛灉鍚岀骇宸烽亾鏈夊鏉″垯鏌ヤ笂娆′綅缃棩蹇�
-                    if (roadList.Count > 1)
-                    {
-                        useLog = Db.Queryable<SysRoadwayUseLog>().OrderByDescending(l => l.Id).First();
-                    }
                     //鍙栧悇宸烽亾鎵�鏈夋帓绗竴涓悎閫備綅
                     foreach (var l in roadList)
                     {
@@ -888,7 +914,11 @@
                         }
 
                         var locateCount = Db.Queryable<SysStorageLocat>()
-                            .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo)).Count();
+                            .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == l).Count();
+
+                        var bindNum = Db.Queryable<BllPalletBind>()
+                            .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo== l)
+                            .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
                         if (locateCount - bindNum > 0)
                         {
                             roadNo = l;
@@ -905,19 +935,39 @@
                     {
                         if (useLog != null)
                         {
-                            roadNo = useLog.RoadwayNo;
+                            var locateCount = Db.Queryable<SysStorageLocat>()
+                                .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == useLog.RoadwayNo).Count();
+
+                            var bindNum = Db.Queryable<BllPalletBind>()
+                                .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == useLog.RoadwayNo)
+                                .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
+                            if (locateCount - bindNum > 0)
+                            {
+                                roadNo = useLog.RoadwayNo;
+                            } 
                         }
                     }
                 }
                 else//鎸夌収宸烽亾浼樺厛绾у垎閰�
                 {
                     foreach (var item in roadList)
-                    {
-                        roadNo = item;
+                    { 
+                        var locateCount = Db.Queryable<SysStorageLocat>()
+                            .Where(m => m.Status == "0" && m.Flag == "0" && areaList.Contains(m.AreaNo) && m.RoadwayNo == item).Count();
+
+                        var bindNum = Db.Queryable<BllPalletBind>()
+                            .Where(m => m.IsDel == "0" && m.Status == "0" && m.RoadwayNo == item)
+                            .GroupBy(m => m.PalletNo).Select(m => m.PalletNo).Count();
+
+                        if (locateCount - bindNum > 0)
+                        {
+                            roadNo = item;
+                        }
+                        //褰撳墠宸锋湁浣嶇疆鍒欓��鍑�
                         if (roadNo != null)
                         {
                             break;
-                        }
+                        } 
                     }
                 }
 
@@ -975,7 +1025,7 @@
                 }
                 #endregion
 
-                return null;
+                return comDto;
             }
             catch (Exception e)
             {

--
Gitblit v1.8.0