From 61aec4135b9f6c4cea3424f309c8bcaa124e1f6b Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 17 四月 2026 17:17:39 +0800
Subject: [PATCH] 优化成品库整托出口进行回库任务逻辑
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs | 135 +++++++++++++++-----------------------------
1 files changed, 46 insertions(+), 89 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
index 07b97b6..169dd92 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/Task/HKTaskExtend.cs"
@@ -50,10 +50,10 @@
foreach (var item in tasks)
{
// 鍑哄簱浠诲姟澶勭悊 (浠�1妤煎嚭搴撳埌6妤�)
- if (item.TaskType == (int)TaskTypeEnum.Q3CK)
+ if (item.TaskType == (int)TaskTypeEnum.Q3CK || item.TaskType == (int)TaskTypeEnum.Q3RK)
{
// 璋冪敤鎺ュ彛鑾峰彇灏忚溅淇℃伅
- var result = _agvcartInfoService.CheckTheCar();
+ var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)(YWGP)");
if (result != null && result.Status)
{
var dataList = result.Data as List<HIKROBOTQueryData>;
@@ -61,8 +61,8 @@
{
// 鍑哄簱浠诲姟锛氭鏌ユ槸鍚︽湁鍦�1妤�(AA)鐨勫皬杞�
// Q3CK 鏄疉A鈫扚F鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
- var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == "AA" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
-
+ var code = item.TaskType == (int)TaskTypeEnum.Q3CK ? "AA" : "FF";
+ var specialCarInAA = dataList.FirstOrDefault(d => d.mapCode == code);
if (specialCarInAA != null)
{
// 鏈夊湪1妤肩殑灏忚溅锛岀洿鎺ユ墽琛屼换鍔�
@@ -70,25 +70,28 @@
if (content.Status)
{
item.TaskState = (int)TaskStatusEnum.Execut;
+ _taskService.UpdateData(item);
}
}
else
{
// 娌℃湁涓撶敤灏忚溅鍦�1妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�1妤�
- var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
+ var anySpecialCar = dataList.FirstOrDefault();
if (anySpecialCar != null)
{
// 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細1妤肩偣浣�
- var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "AA");
+ var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, code);
if (callCarResult.Status)
{
// 鍘熶换鍔$姸鎬佹敼涓虹瓑寰呯┖杞�
item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ _taskService.UpdateData(item);
}
}
else
{
item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
+ _taskService.UpdateData(item);
}
}
}
@@ -96,57 +99,13 @@
else
{
item.ExceptionMessage = "鑾峰彇AGV灏忚溅淇℃伅澶辫触";
- }
- }
- // 鍏ュ簱浠诲姟澶勭悊 (浠�6妤煎叆搴撳埌1妤�)
- else if (item.TaskType == (int)TaskTypeEnum.Q3RK)
- {
- var result = _agvcartInfoService.CheckTheCar();
-
- if (result != null && result.Status)
- {
- var dataList = result.Data as List<HIKROBOTQueryData>;
- if (dataList != null && dataList.Any())
- {
- // Q3RK 鏄疐F鈫扐A鐨勮法妤煎眰浠诲姟锛屽彧鑳戒娇鐢ㄤ笓鐢ㄥ皬杞�
- var specialCarInFF = dataList.FirstOrDefault(d => d.mapCode == "FF" && d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
-
- if (specialCarInFF!=null)
- {
- // 鏈夊湪1妤肩殑灏忚溅锛岀洿鎺ユ墽琛屼换鍔�
- var content = _taskService.SendHIKROBOTTask(item);
- item.TaskState = (int)TaskStatusEnum.Execut;
- }
- else
- {
- // 娌℃湁涓撶敤灏忚溅鍦�6妤硷紝闇�瑕佸懠鍙笓鐢ㄥ皬杞︽潵鍒�6妤�
- var anySpecialCar = dataList.FirstOrDefault(d => d.CarType == "MR-Q3-600LE-D(M)(YWGP)");
- if (anySpecialCar != null)
- {
- // 璧风偣锛氬皬杞﹀綋鍓嶆墍鍦ㄦゼ灞傜殑鐐逛綅锛岀洰鏍囷細6妤肩偣浣�
- var callCarResult = AddAGVCartInfo(item, anySpecialCar.mapCode, "FF");
- if (callCarResult.Status)
- {
- item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
- }
- }
- else
- {
- item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
- }
- }
- }
- }
- else
- {
- item.ExceptionMessage = "鑾峰彇AGV灏忚溅淇℃伅澶辫触";
+ _taskService.UpdateData(item);
}
}
else if (item.TaskType == (int)TaskTypeEnum.F01)
{
// F01浠诲姟澶勭悊锛氭牴鎹洰鏍囧湴鍧�鍒ゆ柇闇�瑕佸摢涓ゼ灞傜殑灏忚溅
- var result = _agvcartInfoService.CheckTheCar();
-
+ var result = _agvcartInfoService.CheckTheCar("MR-Q3-600LE-D(M)");
if (result != null && result.Status)
{
var dataList = result.Data as List<HIKROBOTQueryData>;
@@ -154,7 +113,7 @@
{
// 浠庝换鍔$殑璧峰鍦板潃涓彁鍙栭渶瑕佺殑妤煎眰浠g爜
string requiredMapCode = GetMapCodeFromAddress(item.SourceAddress);
- if (string.IsNullOrEmpty(requiredMapCode))
+ if (requiredMapCode==null)
{
item.ExceptionMessage = $"鏃犳硶浠庣洰鏍囧湴鍧� {item.SourceAddress} 涓瘑鍒ゼ灞備俊鎭�";
_taskService.UpdateData(item);
@@ -162,15 +121,16 @@
}
// 妫�鏌ユ槸鍚︽湁鍦ㄧ洰鏍囨ゼ灞傜殑灏忚溅
- var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode&&d.CarType== "MR-Q3-600LE-D(M)");
+ var hasRequiredCar = dataList.FirstOrDefault(d => d.mapCode == requiredMapCode);
- if (hasRequiredCar!=null)
+ if (hasRequiredCar != null)
{
// 鏈夊湪鐩爣妤煎眰鐨勫皬杞︼紝鐩存帴鎵ц浠诲姟
var content = _taskService.SendHIKROBOTTask(item);
if (content.Status)
{
item.TaskState = (int)TaskStatusEnum.Execut;
+ _taskService.UpdateData(item);
}
}
else
@@ -184,17 +144,18 @@
if (callCarResult.Status)
{
item.TaskState = (int)TaskStatusEnum.WaitingHkAGVMovePosition;
+ _taskService.UpdateData(item);
}
}
else
{
item.ExceptionMessage = "鏈壘鍒板彲鐢ˋGV灏忚溅";
+ _taskService.UpdateData(item);
}
}
}
}
- }
- _taskService.UpdateData(item);
+ }
}
}
@@ -231,15 +192,20 @@
var currentFloorInfo = FloorMapping.FloorMap[currentMapCode];
var targetFloorInfo = FloorMapping.FloorMap[targetMapCode];
- // 璁剧疆浠诲姟淇℃伅
- //task.SourceAddress = currentFloorInfo.PointCode; // 璧风偣锛氬皬杞﹀綋鍓嶄綅缃殑鐐逛綅
- //task.CurrentAddress = currentFloorInfo.PointCode; // 褰撳墠浣嶇疆锛氬皬杞﹀綋鍓嶄綅缃殑鐐逛綅
- //task.TargetAddress = targetFloorInfo.PointCode; // 鐩爣鐐癸細鐩爣妤煎眰鐐逛綅
- //task.NextAddress = targetFloorInfo.PointCode; // 璁板綍鐩爣妤煎眰浠g爜
+ // 璁板綍浣跨敤鐨凙GV灏忚溅鍨嬪彿鍒颁换鍔′腑
+ var carType= "";
+ if (task.TaskType==(int)TaskTypeEnum.F01)
+ {
+ carType = "MR-Q3-600LE-D(M)";
+ }
+ else// 1-6/6-1鐨勪换鍔�
+ {
+ carType = "MR-Q3-600LE-D(M)(YWGP)";
+ }
Dt_Task newTask = new Dt_Task
{
- WMSTaskNum="HKkc"+ DateTime.Now.ToString("yyyyMMddHHmmss"), // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
+ WMSTaskNum = "HK_" + task.WMSTaskNum, // 鐢熸垚鍞竴鐨刉MS浠诲姟鍙�
TaskNum = _taskService.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
SourceAddress = currentFloorInfo.PointCode,
CurrentAddress = currentFloorInfo.PointCode,
@@ -247,16 +213,16 @@
NextAddress = targetFloorInfo.PointCode,
TaskType = (int)TaskTypeEnum.MOVE,
Grade = task.Grade,
- PalletCode = null,
+ PalletCode = carType,
TaskState = (int)TaskStatusEnum.CallingHKtransportation,
// 澶嶅埗鍏朵粬蹇呰瀛楁
CreateDate = DateTime.Now,
Creater = "System"
};
- _taskService.AddData(newTask); // 娣诲姞鏂颁换鍔�
var result = _taskService.SendHIKROBOTTask(newTask);
if (result.Status)
{
+ _taskService.AddData(newTask); // 娣诲姞鏂颁换鍔�
content.OK("绌鸿溅鍛煎彨浠诲姟鍒涘缓鎴愬姛", newTask);
}
else
@@ -274,26 +240,22 @@
#endregion
#region 澶勭悊agv寰呯┖杞︽惉杩愪换鍔�
- public void SendHKWaitTask()
+ public void SendHKWaitTask(List<Dt_Task> Tasks)
{
try
{
- List<Dt_Task> reslut = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.MOVE);
- if (reslut.Count<=0)
+ List<Dt_Task> Uptasks = new List<Dt_Task>();
+ foreach (var item in Tasks)
{
- List<Dt_Task> reslut2 = _taskService.Repository.QueryData(x => x.TaskType == (int)TaskTypeEnum.Q3RK||x.TaskType==(int)TaskTypeEnum.Q3CK || x.TaskType == (int)TaskTypeEnum.F01);
- foreach (var item in reslut2)
+ var content = _taskService.SendHIKROBOTTask(item);
+ if (content.Status)
{
- var content = _taskService.SendHIKROBOTTask(item);
- }
- reslut.ForEach(x =>
- {
- x.TaskState =(int)TaskStatusEnum.Execut;
- });
-
+ item.TaskState = (int)TaskStatusEnum.Execut;
+ Uptasks.Add(item);
+ }
}
- _taskService.UpdateData(reslut);
-
+ _taskService.UpdateData(Uptasks);
+
}
catch (Exception ex)
{
@@ -310,21 +272,16 @@
private string GetMapCodeFromAddress(string address)
{
if (string.IsNullOrEmpty(address))
+ {
return null;
-
+ }
// 鍦板潃鏍煎紡绀轰緥 锛欰A 瀵瑰簲 0339050AA0309145
// keys 鏄� AA銆丅B銆丆C銆丏D銆丒E銆丗F锛寁ule鏄搴旂殑鐐逛綅淇℃伅
- foreach (var floorCode in FloorMapping.FloorMap.Keys)
+ else
{
- if (address.Contains(floorCode))
- {
- return floorCode;//杩斿洖鐨勫氨鏄疉A銆丅B銆丆C銆丏D銆丒E銆丗F涓殑涓�涓紝浠h〃瀵瑰簲鐨勬ゼ灞�
- }
+ var reslut = _stationInfoService.Repository.QueryFirst(x => x.StationCode == address);
+ return reslut.FloorNumber;
}
-
- return null;
}
-
-
}
}
--
Gitblit v1.9.3