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) + { + + + + } ///