diff --git a/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs b/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs
new file mode 100644
index 0000000..972bac3
--- /dev/null
+++ b/WcsMain/ApiServe/Controllers/Dto/WcsDto/ElTag/GetStackerTaskNewDestinationRequest.cs
@@ -0,0 +1,31 @@
+using DataCheck;
+using System.Text.Json.Serialization;
+
+namespace WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag;
+
+public class GetStackerTaskNewDestinationRequest
+{
+
+ ///
+ /// 任务号
+ ///
+ [DataRules]
+ [JsonPropertyName("taskId")]
+ public string? TaskId { get; set; }
+
+ ///
+ /// 新终点
+ ///
+ [DataRules]
+ [JsonPropertyName("destination")]
+ public string? Destination { get; set; }
+
+ ///
+ /// 载具号
+ ///
+ [DataRules]
+ [JsonPropertyName("vehicleNo")]
+ public string? VehicleNo { get; set; }
+
+
+}
diff --git a/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs b/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs
index db5884a..e2325c1 100644
--- a/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs
+++ b/WcsMain/ApiServe/Controllers/WmsController/WmsTaskController.cs
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Mvc;
using WcsMain.ApiServe.ControllerFilter;
+using WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask;
using WcsMain.ApiServe.Service.WmsService;
@@ -41,6 +42,17 @@ public class WmsTaskController(WmsTaskService wmsTaskService) : ControllerBase
return _wmsTaskService.UpdateStackerTaskStatus(request);
}
+ ///
+ /// WMS向WCS发送任务新终点,卸货位置有货的时候
+ ///
+ ///
+ ///
+ [HttpPost("setStackerTaskNewDestination")]
+ public WmsApiResponse GetStackerTaskNewDestination([FromBody] GetStackerTaskNewDestinationRequest request)
+ {
+ return _wmsTaskService.GetStackerTaskNewDestination(request);
+ }
+
diff --git a/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs b/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs
index e8afdcc..dd5b0aa 100644
--- a/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs
+++ b/WcsMain/ApiServe/Service/WmsService/WmsTaskService.cs
@@ -1,4 +1,5 @@
using DataCheck;
+using WcsMain.ApiServe.Controllers.Dto.WcsDto.ElTag;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity;
using WcsMain.ApiServe.Controllers.Dto.WMSEntity.WmsTask;
using WcsMain.ApiServe.Factory;
@@ -17,10 +18,11 @@ namespace WcsMain.ApiServe.Service.WmsService;
/// Wms任务接口逻辑
///
[Service]
-public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao)
+public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDao, AppWcsTaskDao wcsTaskDao)
{
private readonly AppWmsTaskDao _wmsTaskDao = wmsTaskDao;
private readonly WmsTaskAction _wmsTaskAction = wmsTaskAction;
+ private readonly AppWcsTaskDao _wcsTaskDao = wcsTaskDao;
///
/// 接收WMS任务数据处理
@@ -100,10 +102,10 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
case 0:
string resetErrText = _wmsTaskAction.ResetWmsTaskStatus(request.TaskId, request.Destination, StaticString.WMS); // 重置任务
return string.IsNullOrEmpty(resetErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(resetErrText);
- case 3:
+ case 2:
string completeErrText = _wmsTaskAction.CompleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 完成任务
return string.IsNullOrEmpty(completeErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(completeErrText);
- case 999:
+ case 1:
string deleteErrText = _wmsTaskAction.DeleteWmsTaskStatus(request.TaskId, StaticString.WMS); // 删除任务
return string.IsNullOrEmpty(deleteErrText) ? WmsApiResponseFactory.Success() : WmsApiResponseFactory.Fail(deleteErrText);
default:
@@ -111,6 +113,35 @@ public class WmsTaskService(WmsTaskAction wmsTaskAction, AppWmsTaskDao wmsTaskDa
}
}
-
+ ///
+ /// WMS向WCS发送任务新终点,卸货位置有货的时候
+ ///
+ ///
+ ///
+ public WmsApiResponse GetStackerTaskNewDestination(GetStackerTaskNewDestinationRequest request)
+ {
+ if(!CheckData.CheckDataRules(request)) return WmsApiResponseFactory.RequestErr();
+ /* 查找该任务有没有无法卸货 */
+ List? wcsTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = request.TaskId, TaskStatus = (int)WcsTaskStatusEnum.doubleIn });
+ if(wcsTasks == default) return WmsApiResponseFactory.DataBaseErr();
+ if(wcsTasks.Count() < 1) return WmsApiResponseFactory.Fail($"任务号:{request.TaskId} 没有无法卸货的情况");
+ wcsTasks = [.. wcsTasks.OrderByDescending(x => x.CompleteTime)];
+ var wcsTask = wcsTasks[0]; // 获取最新的一条任务
+ /* 如果是最后一条任务则更新WMS任务终点 */
+ if(wcsTask.IsLastTask())
+ {
+ _wmsTaskDao.Update(new AppWmsTask { TaskId = request.TaskId, Destination = request.Destination, TaskMsg = "WMS修改终点" });
+
+
+
+ }
+
+
+
+
+ }
+
+
+
}
\ No newline at end of file
diff --git a/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs b/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs
index d24c3c4..520a756 100644
--- a/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs
+++ b/WcsMain/Business/CirculationTask/Stacker/ExeTaskDoubleFork.cs
@@ -424,7 +424,7 @@ public class ExeTaskDoubleFork(
/* 判断这个任务是否出现卸货位置有货 */
if(doubleTask.TaskStatus != (int)WcsTaskStatusEnum.doubleIn) { return false; } // 没有重复入库不执行下面方法
/* 查找这个任务的新任务 */
- List? newTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = doubleTask.TaskId, TaskType = (int)WcsTaskTypeEnum.newTaskForDoubleIn, TaskStatus = (int)WmsTaskStatusEnum.create });
+ List? newTasks = _wcsTaskDao.Select(new AppWcsTask { TaskId = doubleTask.TaskId, TaskType = (int)WcsTaskTypeEnum.newTaskForDoubleIn, TaskStatus = (int)WcsTaskStatusEnum.create });
if (newTasks == default)
{
ConsoleLog.Error($"【异常】{stackerId} 号堆垛机重复入库任务新任务查询失败,与数据库连接异常");
diff --git a/WcsMain/DataBase/Dao/AppWmsTaskDao.cs b/WcsMain/DataBase/Dao/AppWmsTaskDao.cs
index 10ca691..7daa072 100644
--- a/WcsMain/DataBase/Dao/AppWmsTaskDao.cs
+++ b/WcsMain/DataBase/Dao/AppWmsTaskDao.cs
@@ -139,6 +139,18 @@ public class AppWmsTaskDao
}
}
+ ///
+ /// 将taskId更新成新的
+ ///
+ ///
+ ///
+ ///
+ public int UpdateTaskId(string? oldTaskId, string? newTaskId)
+ {
+
+
+
+ }
///