分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-06-15 23e4f986644298cb23ac43173414b7e1404b6657
´úÂë¹ÜÀí/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 ç©ºæ‰˜åº“区占用入AB库区
                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 ç©ºæ‰˜åº“区满后入AB库区
                //#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;