From 429bb4abbaea6fd6be33dcf62735d4ada5070b63 Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期日, 19 五月 2024 17:51:03 +0800 Subject: [PATCH] 优化逻辑提高AGV任务效率 --- 代码管理/WMS/WMS_Server/WIDESEA_WMS/Common/GetStation/EmptyPalletStation.cs | 104 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 91 insertions(+), 13 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 4d45e09..93cdff5 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" @@ -73,7 +73,14 @@ VOLContext Context = new VOLContext(); Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); var station = stationinfoRepository.Find(x => x.stationCode == StationCode).FirstOrDefault(); - OK = stationinfoRepository.Find(x => x.area == station.area && x.line == station.line && x.column > station.column && x.location_state != LocationStateEnum.Empty.ToString()).Any(); + if (station.area == "10" || station.area == "11") + { + OK = stationinfoRepository.Find(x => x.area == station.area && x.line == station.line && x.column < station.column && x.location_state != LocationStateEnum.Empty.ToString()).Any(); + } + else + { + OK = stationinfoRepository.Find(x => x.area == station.area && x.line == station.line && x.column > station.column && x.location_state != LocationStateEnum.Empty.ToString()).Any(); + } } catch (Exception ex) { @@ -102,7 +109,12 @@ } } - + /// <summary> + /// 鏌ユ壘褰撳墠琛屽彲鍏ュ簱绌鸿揣浣� + /// </summary> + /// <param name="EmptyStation"></param> + /// <param name="stationinfoRepository"></param> + /// <returns></returns> public static dt_stationinfo Station(dt_stationinfo EmptyStation, Idt_stationinfoRepository stationinfoRepository) { dt_stationinfo stationinfo = null; @@ -113,21 +125,88 @@ stationinfo = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.quantity > 0 && x.enable).OrderByDescending(x => x.column).FirstOrDefault(); if (stationinfo != null) - { if (stationinfo.quantity < 5) return stationinfo; - else - stationinfo = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderBy(x => x.column).FirstOrDefault(); - } - else - { - stationinfo = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderBy(x => x.column).FirstOrDefault(); - } - //if (stationinfo == null) + + stationinfo = stationinfoRepository.Find(x => x.area == EmptyStation.area && x.line == EmptyStation.line && x.location_state == LocationStateEnum.Empty.ToString() && x.enable).OrderBy(x => x.column).FirstOrDefault(); } catch (Exception ex) { + } + return stationinfo; + } + + /// <summary> + /// 绌烘墭鍙叆搴撹揣浣� + /// </summary> + /// <param name="area"></param> + /// <returns></returns> + public static dt_stationinfo EmptyPalletStation1(string area) + { + dt_stationinfo stationinfo = null; + try + { + VOLContext Context = new VOLContext(); + 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 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 + + #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.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 鏌ョ湅褰撳墠绌鸿揣浣嶅悗鏄惁瀛樺湪鏈夋枡 + if (stationinfo != null) + if (GetStation.QueueStation(stationinfo.stationCode)) stationinfo = null; + #endregion + + #region 鍒ゆ柇褰撳墠璐т綅鏄惁瀛樺湪浠诲姟 + if (stationinfo != null) + if (agvtaskService.Find(x => x.agv_toaddress == stationinfo.stationCode).Any()) stationinfo = null; + #endregion + + } + catch (Exception ex) + { + throw; } return stationinfo; } @@ -146,7 +225,6 @@ Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context); #region 鏌ユ壘绌烘墭鐩樺簱鍖� - //if (stationinfoRepository.Find(x => x.area == area && x.location_state == LocationStateEnum.Busy.ToString()).Any() && area != "10") if (stationinfoRepository.Find(x => x.stationCode == "A01001001" && x.quantity == 5 && x.location_state == LocationStateEnum.Stroge.ToString()).Any()) { var EmptyStation = stationinfoRepository.Find(x => x.stationCode == "C01005002" && x.location_state == LocationStateEnum.Empty.ToString()).FirstOrDefault(); @@ -190,7 +268,7 @@ #region 鍒ゆ柇褰撳墠璐т綅鏄惁瀛樺湪浠诲姟 if (stationinfo != null) - if (agvtaskService.Find(x => /*x.agv_fromaddress == stationinfo.stationCode ||*/ x.agv_toaddress == stationinfo.stationCode).Any()) stationinfo = null; + if (agvtaskService.Find(x => /*x.agv_fromaddress == stationinfo.stationCode ||*/ x.agv_toaddress == stationinfo.stationCode).Any()) stationinfo = null; #endregion } -- Gitblit v1.9.3