From 24490a8b8f992ad0d3c531c08455842ff8aef93c Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期四, 23 五月 2024 15:27:00 +0800
Subject: [PATCH] 优化任务下发逻辑
---
代码管理/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