From ef57389fd66aca85d6fb4a73c0f7c1c1f7d607b2 Mon Sep 17 00:00:00 2001
From: wanshenmean <cathay_xy@163.com>
Date: 星期日, 26 四月 2026 17:46:51 +0800
Subject: [PATCH] Merge branch 'dev' into xiaoyang
---
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs | 12 ++++++
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Complete.cs | 33 ++++++++++++++++
Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_AGV.cs | 10 +++++
Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json | 7 ++-
Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs | 9 ++++
5 files changed, 67 insertions(+), 4 deletions(-)
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
index 3b9faf3..7377503 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_ITaskInfoService/ITaskService.cs
@@ -234,6 +234,13 @@
/// <param name="roadway">宸烽亾鍙�</param>
/// <param name="targetAddress">鐩爣鍦板潃</param>
/// <returns>瀛樺湪杩斿洖 true</returns>
- bool HasExecutingTaskToTarget(string roadway, string targetAddress);
+ bool HasExecutingTaskToTarget(string roadway, string targetAddress);
+
+ /// <summary>
+ /// 浠诲姟鍙栨秷
+ /// </summary>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ WebResponseContent CancelTask(int taskNum);
}
}
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
index a027af3..5b2143f 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/Task/TaskController.cs
@@ -1,6 +1,7 @@
锘縰sing Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using System.Threading.Channels;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseController;
using WIDESEAWCS_DTO.TaskInfo;
@@ -53,6 +54,17 @@
public WebResponseContent RollbackTaskStatusToLast(int taskNum)
{
return Service.RollbackTaskStatusToLast(taskNum);
+ }
+
+ /// <summary>
+ /// 浠诲姟鍙栨秷
+ /// </summary>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ [HttpPost, Route("CancelTask"), AllowAnonymous]
+ public WebResponseContent CancelTask(int taskNum)
+ {
+ return Service.CancelTask(taskNum);
}
}
}
diff --git a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Complete.cs b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Complete.cs
index 9b13ce6..11c75a0 100644
--- a/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Complete.cs
+++ b/Code/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService/TaskService.Complete.cs
@@ -1,6 +1,7 @@
using MapsterMapper;
using SqlSugar;
using System.Diagnostics.CodeAnalysis;
+using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Core;
@@ -176,5 +177,37 @@
List<Dt_Task> tasks = BaseDal.QueryData(x => taskKeys.Contains(x.TaskId));
BaseDal.DeleteAndMoveIntoHty(tasks, OperateTypeEnum.浜哄伐鍒犻櫎);
return WebResponseContent.Instance.OK($"鎴愬姛鍒犻櫎{tasks.Count}鏉℃暟鎹�");
+ }
+
+ /// <summary>
+ /// 浠诲姟鍙栨秷
+ /// </summary>
+ /// <param name="taskNum"></param>
+ /// <returns></returns>
+ public WebResponseContent CancelTask(int taskNum)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ if (taskNum <= 0) return content.Error("浠诲姟缂栧彿鏃犳晥");
+
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task == null) return content.OK("浠诲姟涓嶅瓨鍦紝寮哄埗鍙栨秷");
+
+ task.TaskStatus = (int)TaskOutStatusEnum.OutCancel;
+
+ if (task.TaskStatus == (int)TaskInStatusEnum.InNew || task.TaskStatus == (int)TaskOutStatusEnum.OutNew)
+ {
+ bool deleteResult = BaseDal.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩鍒犻櫎);
+ if (!deleteResult) return content.Error("鍒犻櫎浠诲姟澶辫触");
+ return content.OK();
+ }
+
+ }
+ catch (Exception ex)
+ {
+ content.Error($"WCS浠诲姟鍙栨秷鎺ュ彛澶辫触锛寋ex.Message}");
+ }
+ return content.Error("褰撳墠浠诲姟鍦ㄦ墽琛屼腑锛�");
}
}
\ No newline at end of file
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_AGV.cs b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_AGV.cs
index c0cb8f1..b59b92f 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_AGV.cs
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_AGV.cs
@@ -19,6 +19,7 @@
public string AGV_OutTaskComplete = WIDESEA_Core.Helper.AppSettings.Configuration["AGV_OutTaskComplete"];
public string WCS_ReceiveTask = WIDESEA_Core.Helper.AppSettings.Configuration["WCS_ReceiveTask"];
+ public string WCS_CancelTask = WIDESEA_Core.Helper.AppSettings.Configuration["WCS_CancelTask"];
/// <summary>
/// 鏋佸嵎搴撳嚭鍏ュ簱鐢宠
@@ -611,6 +612,11 @@
private async Task<AGVResponse> CancelAgvInboundTask(Dt_Task task)
{
AGVResponse response = new AGVResponse();
+
+ var httpResponse = _httpClientHelper.Post<WebResponseContent>(WCS_ReceiveTask, task.TaskNum.ToString());
+ if (httpResponse == null || httpResponse.Data == null || !httpResponse.Data.Status)
+ return response.Error(httpResponse?.Data?.Message ?? "涓嬪彂WCS鍙栨秷澶辫触");
+
task.TaskStatus = (int)TaskInStatusEnum.InCancel;
_unitOfWorkManage.BeginTran();
@@ -644,6 +650,10 @@
private async Task<AGVResponse> CancelAgvOutboundTaskAsync(Dt_Task task)
{
AGVResponse response = new AGVResponse();
+ var httpResponse = _httpClientHelper.Post<WebResponseContent>(WCS_ReceiveTask, task.TaskNum.ToString());
+ if (httpResponse == null || httpResponse.Data == null || !httpResponse.Data.Status)
+ return response.Error(httpResponse?.Data?.Message ?? "涓嬪彂WCS澶辫触");
+
var stockInfo = await _stockInfoService.GetStockInfoAsync(task.PalletCode);
if (stockInfo == null)
return response.Error($"鏈壘鍒版墭鐩榹task.PalletCode}鐨勫簱瀛樹俊鎭�");
diff --git a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
index 8ffa8e0..bdc746e 100644
--- a/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
+++ b/Code/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/appsettings.json
@@ -62,7 +62,7 @@
"DBSeedEnable": false,
"PDAVersion": "4",
"WebSocketPort": 9296,
- "AutoOutboundTask": {
+ "AutoOutboundTask": {
"Enable": true, /// 鏄惁鍚敤鑷姩鍑哄簱浠诲姟
"CheckIntervalSeconds": 300, /// 妫�鏌ラ棿闅旓紙绉掞級
"TargetAddresses": { /// 鎸夊贩閬撳墠缂�閰嶇疆鐩爣鍦板潃锛堟敮鎸佸鍑哄簱鍙o級
@@ -76,6 +76,7 @@
},
- "A0GV_OutTaskComplete": "http://localhost:9999/OutTaskComplete", // 涓婃姤AGV鍑哄簱杈撻�佺嚎瀹屾垚
- "WCS_ReceiveTask": "http://localhost:9292/api/Task/ReceiveTask" // WMS杈撻�佺嚎浠诲姟涓嬪彂
+ "AGV_OutTaskComplete": "http://localhost:9999/OutTaskComplete", // 涓婃姤AGV鍑哄簱杈撻�佺嚎瀹屾垚
+ "WCS_ReceiveTask": "http://localhost:9292/api/Task/ReceiveTask", // WMS杈撻�佺嚎浠诲姟涓嬪彂
+ "WCS_CancelTask": "http://localhost:9292/api/Task/ReceiveTask" // WCS浠诲姟鍙栨秷
}
\ No newline at end of file
--
Gitblit v1.9.3