From f49fa4b5027cfdc27b429985d023e8002abcca2e Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期三, 05 十一月 2025 23:54:12 +0800
Subject: [PATCH] 1
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs | 276 +++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 199 insertions(+), 77 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
index f5b350f..01b4620 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/StackerCraneJob/CommonStackerCraneJob.cs"
@@ -53,14 +53,42 @@
{
Signalinteraction(commonStackerCrane); //鍑哄簱淇″彿浜や簰
Siganlinteraction2(commonStackerCrane); //鍏ュ簱淇″彿浜や簰
- if (!commonStackerCrane.IsEventSubscribed)
+ /*if (!commonStackerCrane.IsEventSubscribed)
{
commonStackerCrane.StackerCraneTaskCompletedEventHandler += CommonStackerCrane_StackerCraneTaskCompletedEventHandler;//璁㈤槄浠诲姟瀹屾垚浜嬩欢
+ }*/
+ if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.WorkCompleted)
+ {
+ wcs_PLCto07("浠诲姟瀹屾垚", $"浠诲姟鍙凤細{commonStackerCrane.CurrentTaskNum}", $"璇诲彇鍒板爢鍨涙満瀹屾垚淇″彿锛屼换鍔″畬鎴愶紝瀹屾垚鏃堕棿锛歿DateTime.Now}");
+ //Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
+ WebResponseContent webResponse=_taskService.StackCraneTaskCompleted(commonStackerCrane.CurrentTaskNum);
+ if (webResponse.Status)
+ {
+
+ bool ddjfk= commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+ wcs_PLCto07("浠诲姟瀹屾垚", $"浠诲姟鍙凤細{commonStackerCrane.CurrentTaskNum}锛屼慨鏀逛换鍔℃垚鍔�", $"淇敼浠诲姟瀹屾垚锛屽苟鍙嶉鍫嗗灈瀹屾垚淇″彿鏄惁鎴愬姛锛歿ddjfk}");
+ }
+ else
+ {
+ WebResponseContent webRespon = _taskService.StackCraneTashty(commonStackerCrane.CurrentTaskNum);
+ if (webRespon.Status)
+ {
+
+ bool fk = commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
+ wcs_PLCto07("浠诲姟瀹屾垚", $"浠诲姟鍙凤細{commonStackerCrane.CurrentTaskNum},鍘嗗彶鏌ヨ淇℃伅", $"浠诲姟鏌ユ壘浠诲姟閲嶏紝骞惰繘琛屽弽棣堬細{fk}");
+ }
+ else
+ {
+ wcs_PLCto07("浠诲姟瀹屾垚鏁呴殰", $"浠诲姟鍙凤細{commonStackerCrane.CurrentTaskNum}锛屽巻鍙蹭换鍔℃煡璇㈡暟鎹�", $"澶辫触鍘熷洜锛歿webResponse.Message}");
+ }
+
+ }
}
+
if (commonStackerCrane.StackerCraneAutoStatusValue == StackerCraneAutoStatus.Automatic && commonStackerCrane.StackerCraneStatusValue == StackerCraneStatus.Normal)
{
- commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
+ //commonStackerCrane.CheckStackerCraneTaskCompleted();//闃叉浠诲姟瀹屾垚浜嬩欢鐩戞祴瓒呮椂锛屽啀鎵嬪姩瑙﹀彂涓�娆�
if (commonStackerCrane.StackerCraneWorkStatusValue == StackerCraneWorkStatus.Standby)
{
@@ -73,8 +101,20 @@
bool sendFlag = commonStackerCrane.SendCommand(stackerCraneTaskCommand);
if (sendFlag)
{
- commonStackerCrane.LastTaskType = task.TaskType;
- _taskService.UpdateTaskStatusToNext(task.TaskNum);
+ WebResponseContent webResponseContent=_taskService.UpdateTaskStatusToNext(task.TaskNum);
+ if (webResponseContent.Status)
+ {
+ wcs_PLCto09("浠诲姟涓嬪彂鎴愬姛", $"浠诲姟鍙凤細{task.TaskNum}", $"鎵樼洏鏉$爜锛歿task.PalletCode},鏃堕棿锛歿DateTime.Now}");
+ }
+ else
+ {
+ wcs_PLCto09("浠诲姟涓嬪彂澶辫触", $"浠诲姟鍙凤細{task.TaskNum}", $"澶辫触鍘熷洜锛歿webResponseContent.Message}");
+ }
+ }
+ else
+ {
+
+ wcs_PLCto09("浠诲姟涓嬪彂澶辫触", $"浠诲姟鍙凤細{task.TaskNum}", $"涓嬪彂缁欏爢鍨涙満浠诲姟澶辫触锛岀姸鎬侊細{sendFlag}");
}
}
}
@@ -84,6 +124,7 @@
}
catch (Exception ex)
{
+ wcs_PLCto09("鍫嗗灈鏈篔ob", $"鏁呴殰", $"鍘熷洜锛歿ex.Message}");
//Console.WriteLine(nameof(CommonStackerCraneJob) + ":" + ex.ToString());
}
return Task.CompletedTask;
@@ -99,10 +140,10 @@
CommonStackerCrane? commonStackerCrane = sender as CommonStackerCrane;
if (commonStackerCrane != null)
{
- if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5)
+ if (commonStackerCrane.GetValue<StackerCraneDBName, short>(StackerCraneDBName.WorkType) != 5 && e.TaskNum !=0)
{
wcs_PLCto07("浠诲姟瀹屾垚", $"浠诲姟鍙凤細{e.TaskNum}", $"璇诲彇鍒板爢鍨涙満瀹屾垚淇″彿锛屼换鍔″畬鎴愶紝瀹屾垚鏃堕棿锛歿DateTime.Now}");
- Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
+ //Console.Out.WriteLine("TaskCompleted" + e.TaskNum);
_taskService.StackCraneTaskCompleted(e.TaskNum);
commonStackerCrane.SetValue(StackerCraneDBName.WorkType, 5);
}
@@ -116,62 +157,113 @@
/// <returns></returns>
private Dt_Task? GetTask(CommonStackerCrane commonStackerCrane)
{
- Dt_Task task;
- task = _taskService.QueryStackerCraneTask(commonStackerCrane.DeviceCode);
-
- if (task != null && task.TaskType== (int)TaskOutboundTypeEnum.Outbound)
+ try
{
- string[] targetCodes = task.SourceAddress.Split("-");
- if (targetCodes[4] == "02")
+ //
+ if (_taskService.CutStackerCraneTask(commonStackerCrane.DeviceCode) != null) return null;
+ //鏌ヨ鍏ㄩ儴浠诲姟锛屾寜鏃堕棿鎺掑簭杩涜鏌ヨ
+ List<Dt_Task> TasksList = _taskService.CraneTaskList(commonStackerCrane.DeviceCode);
+ if (TasksList.Count == 0) return null;
+
+ Dt_Task RELNew= TasksList.Where(x=>x.TaskType== (int)TaskRelocationTypeEnum.Relocation && x.TaskState == (int)TaskOutStatusEnum.ResRestNet).OrderBy(x => x.CreateDate).FirstOrDefault();
+ if( RELNew != null )
{
- Dt_Task taskst = OutTaskMovelibrary(task);
- if (taskst != null)
+ string[] targetCodes = RELNew.TargetAddress.Split("-");
+
+ //濡傛灉涓烘繁搴撲綅锛屽垯鏌ョ湅鏄惁鏈夐渶瑕佹墽琛岀殑浠诲姟
+ if (targetCodes[4] == "02")
{
- if(taskst.TaskType == (int)TaskRelocationTypeEnum.Relocation)
+
+ Dt_Task taskstrot = InTaskMove(RELNew);
+ if (taskstrot != null)
{
- return taskst;
+ return taskstrot;
}
- else
- {
- if(taskst.TargetAddress== "R02-001-021-001-02" || taskst.TargetAddress == "R02-001-022-001-02")
- {
- return taskst;
- }
- else
- {
- if (OutTaskStationIsOccupied(taskst) != null)
- {
- return taskst;
- }
- }
-
- }
-
- }
- task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
- }
- else
- {
- if (task.TargetAddress == "R02-001-021-001-02" || task.TargetAddress == "R02-001-022-001-02")
- {
- return task;
}
else
{
- if (OutTaskStationIsOccupied(task) != null)
- {
- return task;
- }
+ return RELNew;
}
-
- task = _taskService.QueryStackerCraneInTask(commonStackerCrane.DeviceCode);
}
+ foreach (var item in TasksList)
+ {
+ if (item.TaskType == (int)TaskInboundTypeEnum.Inbound)
+ {
+ string[] targetCodes = item.TargetAddress.Split("-");
+ if (targetCodes[4] == "01") return item; //濡傛灉鏄祬搴撲綅锛屽垯鐩存帴杩斿洖璇ヤ换鍔�
+
+ //濡傛灉涓烘繁搴撲綅锛屽垯鏌ョ湅鏄惁鏈夐渶瑕佹墽琛岀殑浠诲姟
+ if (targetCodes[4] == "02")
+ {
+
+ Dt_Task taskst = InTaskMove(item);
+ if (taskst != null)
+ {
+ return taskst;
+ }
+ }
+ }
+ else if (item.TaskType == (int)TaskOutboundTypeEnum.Outbound)
+ {
+ string[] targetCodes = item.SourceAddress.Split("-");//杩涜瑙f瀽璐т綅
+ if (targetCodes[4] == "02")
+ {
+ //涓烘繁搴撲綅
+ Dt_Task taskst = OutTaskMovelibrary(item); //鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴�
+ if (taskst != null)
+ {
+ if (taskst.TaskType == (int)TaskRelocationTypeEnum.Relocation)
+ {
+ return taskst;
+ }
+ else
+ {
+ if (taskst.TargetAddress == "R02-001-021-001-02" || taskst.TargetAddress == "R02-001-022-001-02")
+ {
+ return taskst;
+ }
+ else
+ {
+ if (OutTaskStationIsOccupied(taskst) != null) //鍒ゆ柇鍑哄簱绔欏彴鏄惁鍙笅鍙�
+ {
+ return taskst;
+ }
+ }
+
+ }
+ }
+ }
+ else
+ {
+ if (item.TargetAddress == "R02-001-021-001-02" || item.TargetAddress == "R02-001-022-001-02")
+ {
+ return item;
+ }
+ else
+ {
+ if (OutTaskStationIsOccupied(item) != null) //鍒ゆ柇鍑哄簱绔欏彴鏄惁鍙笅鍙�
+ {
+ return item;
+ }
+ }
+
+ }
+ }
+ }
+
+ return null;
}
- return task;
+ catch (Exception ex)
+ {
+ WriteLog.Write_Log("鍫嗗灈鏈轰换鍔′笅鍙戞晠闅�", "鏁呴殰", "鏁呴殰", new { 淇℃伅 = ex.Message });
+ return null;
+ }
}
+
+
/// <summary>
/// 鍑哄簱浠诲姟鍒ゆ柇鍑哄簱绔欏彴鏄惁琚崰鐢�
@@ -205,6 +297,7 @@
return null;
}
+
/// <summary>
/// 鍑哄簱浠诲姟鍒ゆ柇鏄惁闇�瑕佽繘琛岀Щ搴揗ove the library
/// </summary>
@@ -212,42 +305,62 @@
/// <returns>濡傛灉鏈鍗犵敤锛岃繑鍥炰紶鍏ョ殑浠诲姟淇℃伅锛屽惁鍒欙紝杩斿洖null</returns>
private Dt_Task? OutTaskMovelibrary([NotNull] Dt_Task task)
{
- try
+ string[] targetCodes = task.SourceAddress.Split("-");
+ if (targetCodes[1] == "001")
{
- string[] targetCodes = task.SourceAddress.Split("-");
- if (targetCodes[1] == "001")
- {
- targetCodes[1] = "002";
+ targetCodes[1] = "002";
- }
- else if (targetCodes[1] == "004")
- {
- targetCodes[1] = "003";
- }
- targetCodes[4] = "01";
- string SourceAddress = string.Join("-", targetCodes); //缁勮娴呭簱浣嶅湴鍧�
- Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks(task.Roadway, SourceAddress).FirstOrDefault(); //鎵炬祬搴撲綅鏄惁鏈変换鍔�
- if (tasks != null)
- {
- return tasks;
- }
- else
- {
- //鍚憌ms鐢宠鍒ゆ柇娴呭簱浣嶆槸鍚︽湁璐э紝鏄惁闇�瑕佽繘琛岀Щ搴�
- Dt_Task? taskst = _taskService.RequestWMSTaskMovelibrary(task);
- if (taskst != null)
- {
- return taskst;
- }
- }
}
- catch (Exception ex)
+ else if (targetCodes[1] == "004")
{
-
- throw;
+ targetCodes[1] = "003";
+ }
+ targetCodes[4] = "01";
+ string SourceAddress = string.Join("-", targetCodes); //缁勮娴呭簱浣嶅湴鍧�
+ Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks(task.Roadway, SourceAddress).FirstOrDefault(); //鎵炬祬搴撲綅鏄惁鏈変换鍔�
+ if (tasks != null)
+ {
+ return tasks;
+ }
+ else
+ {
+ //鍚憌ms鐢宠鍒ゆ柇娴呭簱浣嶆槸鍚︽湁璐э紝鏄惁闇�瑕佽繘琛岀Щ搴�
+ Dt_Task? taskst = _taskService.RequestWMSTaskMovelibrary(task);
+ if (taskst != null)
+ {
+ return taskst;
+ }
}
return null;
}
+
+ private Dt_Task? InTaskMove([NotNull] Dt_Task task)
+ {
+ string[] targetCodes = task.TargetAddress.Split("-");
+ if (targetCodes[1] == "001")
+ {
+ targetCodes[1] = "002";
+
+ }
+ else if (targetCodes[1] == "004")
+ {
+ targetCodes[1] = "003";
+ }
+ targetCodes[4] = "01";
+ string TargetAddress = string.Join("-", targetCodes); //鐢ㄦ繁搴撲綅缁勮娴呭簱浣嶇紪鍙�
+ Dt_Task? tasks = _taskService.QueryStationIsOccupiedOutTasks2(task.Roadway, TargetAddress).FirstOrDefault(); //鎵炬祬搴撲綅鏄惁鏈夊嚭搴撲换鍔℃垨绉诲簱浠诲姟
+ if(tasks != null) { return tasks; } //濡傛灉鏈夛紝鍒欏厛涓嬪彂鑷冲爢鍨涙満
+
+ //鍚憌ms鐢宠鍒ゆ柇娴呭簱浣嶆槸鍚︽湁璐э紝鏄惁闇�瑕佽繘琛岀Щ搴�
+ Dt_Task? taskst = _taskService.RequestWMSTaskMovelibrary2(task);
+ if (taskst != null)
+ {
+ return taskst;
+ }
+ return null;
+ }
+
+
public void Signalinteraction(CommonStackerCrane commonStackerCrane)
{
@@ -442,7 +555,7 @@
if (deviceProDTO != null)
{
int B_Event_Test = GetLine(conveyorLine, deviceProDTO.DeviceProDataBlock); //鍒ゆ柇杈撻�佺嚎鏄惁鍏佽鍙栬揣淇″彿
- if (B_Event_Test == 1)
+ if (B_Event_Test == 1 || (task.SourceAddress== "R01-002-043-001-01" && B_Event_Test==6))
{
if (Releasespermitted2(commonStackerCrane, task.SourceAddress,true)) //鍐欏叆鍫嗗灈鏈哄厑璁稿彇璐т俊鍙�
{
@@ -1218,10 +1331,19 @@
{
WriteLog.Write_Log("浠诲姟淇℃伅瀹屾垚璁板綍", SCLLinStack, Logtype, new { 淇℃伅 = Magessadd });
}
+ public void wcs_PLCto07_1(string SCLLinStack, string Logtype, string Magessadd)
+ {
+ WriteLog.Write_Log("浠诲姟淇℃伅瀹屾垚淇敼璁板綍", SCLLinStack, Logtype, new { 淇℃伅 = Magessadd });
+ }
public void wcs_PLCto08(string SCLLinStack, string Logtype, string Magessadd)
{
WriteLog.Write_Log("鍑哄簱绔欏彴淇℃伅", SCLLinStack, Logtype, new { 淇℃伅 = Magessadd });
}
+
+ public void wcs_PLCto09(string SCLLinStack, string Logtype, string Magessadd)
+ {
+ WriteLog.Write_Log("鍫嗗灈鏈轰笅鍙戞儏鍐�", SCLLinStack, Logtype, new { 淇℃伅 = Magessadd });
+ }
}
}
--
Gitblit v1.9.3