From 23e4f986644298cb23ac43173414b7e1404b6657 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期六, 15 六月 2024 17:26:23 +0800
Subject: [PATCH] 任务逻辑优化

---
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs |  104 +++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 75 insertions(+), 29 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs"
index 47deee7..8cc07c3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs"
@@ -151,50 +151,96 @@
                 Idt_agvtaskRepository agvtaskService = new dt_agvtaskRepository(Context);
                 Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
 
-                #region 鏌ユ壘AB搴撳彲鍏ョ┖鎵樼┖璐т綅
-                if (area == "11" && stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any())
+                #region 绌烘墭搴撳尯鍗犵敤鍏B搴撳尯
+                if (stationinfoRepository.Find(x => x.area == area && x.enable && x.location_state == LocationStateEnum.Busy.ToString()).Any() || stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any())
                 {
-                    #region MyRegion
-                    var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
-                    #endregion
-                    if (EmptyStation == null)
-                        EmptyStation = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Busy.ToString() && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
-
-                    #region 鏌ユ壘搴撳尯2鍜屽簱鍖�3鐨勭┖鎵樿揣浣�
-                    //var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3")
-                    //   && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.lastUpdateTime).FirstOrDefault();
-
-                    if (EmptyStation != null)
+                    #region 鏌ユ壘AB搴撳彲鍏ョ┖鎵樼┖璐т綅
+                    if (area == "11")
                     {
-                        stationinfo = Station(EmptyStation, stationinfoRepository);
-                        if (stationinfo != null)
-                            if (!QueueStation(stationinfo.stationCode)) return stationinfo;
+                        #region MyRegion
+                        var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
+                        #endregion
+                        if (EmptyStation == null)
+                            EmptyStation = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Busy.ToString() && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
 
-                        EmptyStation = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
-                        if (EmptyStation.quantity != 5) return null;
+                        #region 鏌ユ壘搴撳尯2鍜屽簱鍖�3鐨勭┖鎵樿揣浣�
+
+                        if (EmptyStation != null)
+                        {
+                            stationinfo = Station(EmptyStation, stationinfoRepository);
+                            if (stationinfo != null)
+                                if (!QueueStation(stationinfo.stationCode)) return stationinfo;
+
+                            EmptyStation = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
+                            if (EmptyStation.quantity != 5) return null;
+                        }
+                        #endregion
+
+                        #region 鏈壘鍒扮┖鎵樿揣浣嶆垨褰撳墠琛屽凡婊�,瀵绘壘鏂扮殑涓�琛�
+                        stationinfo = stationinfoRepository.Find(x => x.column == 2 && x.area == "3" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
+                        if (stationinfo == null)
+                            stationinfo = stationinfoRepository.Find(x => x.column == 1 && x.area == "2" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
+                        #endregion
                     }
                     #endregion
-
-                    #region 鏈壘鍒扮┖鎵樿揣浣嶆垨褰撳墠琛屽凡婊�,瀵绘壘鏂扮殑涓�琛�
-                    stationinfo = stationinfoRepository.Find(x => x.column == 2 && x.area == "3" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
-                    if (stationinfo == null)
-                        stationinfo = stationinfoRepository.Find(x => x.column == 1 && x.area == "2" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
-                    #endregion
                 }
-                #endregion
-
-                #region 鏌ユ壘绌烘墭搴撳尯
                 else
                 {
-                    if (stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Busy.ToString()).Any()) return stationinfo;
                     stationinfo = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.enable).OrderBy(x => x.column).FirstOrDefault();
                     if (stationinfo != null)
                         if (!QueueStation(stationinfo.stationCode) && stationinfo.quantity < 5) return stationinfo;
                     stationinfo = stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
-
                 }
                 #endregion
 
+                #region 绌烘墭搴撳尯婊″悗鍏B搴撳尯
+
+                //#region 鏌ユ壘AB搴撳彲鍏ョ┖鎵樼┖璐т綅
+                //if (area == "11" && stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any())
+                //{
+                //    #region MyRegion
+                //    var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
+                //    #endregion
+                //    if (EmptyStation == null)
+                //        EmptyStation = stationinfoRepository.Find(x => x.location_state == LocationStateEnum.Busy.ToString() && (x.area == "2" || x.area == "3") && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.area).ThenByDescending(x => x.line).ThenByDescending(x => x.column).FirstOrDefault();
+
+                //    #region 鏌ユ壘搴撳尯2鍜屽簱鍖�3鐨勭┖鎵樿揣浣�
+                //    //var EmptyStation = stationinfoRepository.Find(x => x.quantity > 0 && (x.area == "2" || x.area == "3")
+                //    //   && x.tray_status == TrayStateEnum.EmptyTray.ToString() && x.enable).OrderByDescending(x => x.lastUpdateTime).FirstOrDefault();
+
+                //    if (EmptyStation != null)
+                //    {
+                //        stationinfo = Station(EmptyStation, stationinfoRepository);
+                //        if (stationinfo != null)
+                //            if (!QueueStation(stationinfo.stationCode)) return stationinfo;
+
+                //        EmptyStation = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
+                //        if (EmptyStation.quantity != 5) return null;
+                //    }
+                //    #endregion
+
+                //    #region 鏈壘鍒扮┖鎵樿揣浣嶆垨褰撳墠琛屽凡婊�,瀵绘壘鏂扮殑涓�琛�
+                //    stationinfo = stationinfoRepository.Find(x => x.column == 2 && x.area == "3" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
+                //    if (stationinfo == null)
+                //        stationinfo = stationinfoRepository.Find(x => x.column == 1 && x.area == "2" && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.line).FirstOrDefault();
+                //    #endregion
+                //}
+                //#endregion
+
+                //#region 鏌ユ壘绌烘墭搴撳尯
+                //else
+                //{
+                //    if (stationinfoRepository.Find(x => x.area == area && x.enable && x.location_state == LocationStateEnum.Busy.ToString()).Any()) return stationinfo;
+                //    stationinfo = stationinfoRepository.Find(x => x.area == area && x.quantity > 0 && x.enable).OrderBy(x => x.column).FirstOrDefault();
+                //    if (stationinfo != null)
+                //        if (!QueueStation(stationinfo.stationCode) && stationinfo.quantity < 5) return stationinfo;
+                //    stationinfo = stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderByDescending(x => x.column).FirstOrDefault();
+
+                //}
+                //#endregion 
+
+                #endregion
+
                 #region 鏌ョ湅褰撳墠绌鸿揣浣嶅悗鏄惁瀛樺湪鏈夋枡
                 if (stationinfo != null)
                     if (GetStation.QueueStation(stationinfo.stationCode)) stationinfo = null;

--
Gitblit v1.9.3