using System; using System.Collections.Generic; using System.Text; using WIDESEA_Common; using WIDESEA_Common.TaskEnum; using WIDESEA_Common.Tools; using WIDESEA_Core.Utilities; using WIDESEA_Entity.CustomModels.RGVModel; using WIDESEA_Entity.DomainModels; using WIDESEA_Services; using WIDESEA_Services.IRepositories; using WIDESEA_Services.Services.APIInvoke.RGV; namespace WIDESEA_WCS { public partial class RgvDispatchJob { public static void SendRGVTaskAction(Dt_TaskRGVinfo rgvTask, Dt_TaskWCSinfo wcsInfo, IDt_TaskRGVinfoRepository taskRGVinfoRepository, IDt_TaskWCSinfoRepository taskWCSinfoRepository) { RgvSendTaskModel taskInfo = new RgvSendTaskModel(); int typeV = -1; if (rgvTask.rgvtask_taskType == RGVTaskType.RgvTaskType_Inbound.ToString()) typeV = 1; else if (rgvTask.rgvtask_taskType == RGVTaskType.RgvTaskType_Outbound.ToString()) typeV = 2; else if (rgvTask.rgvtask_taskType == RGVTaskType.RgvTaskType_Move.ToString()) typeV = 3; //组装RGV任务 List taskList = new List(); RgvSendTaskModel taskModel = new RgvSendTaskModel(); taskModel.taskId = rgvTask.rgvtask_taskId; taskModel.taskType = typeV; taskModel.containerNo = rgvTask.rgvtask_barCode; string sourceNode = ""; if (rgvTask.rgvtask_startNode.Contains("-")) sourceNode = rgvTask.rgvtask_startNode.Replace("-", ""); else//转换站台与货位 sourceNode = ConvertStationToLocationId.Convert_Station_To_LocationId(rgvTask.rgvtask_startNode); taskModel.source = sourceNode; string endNode = ""; if (rgvTask.rgvtask_endNode.Contains("-")) endNode = rgvTask.rgvtask_endNode.Replace("-", ""); else//转换站台与货位 endNode = ConvertStationToLocationId.Convert_Station_To_LocationId(rgvTask.rgvtask_endNode); taskModel.target = endNode; taskModel.priority = int.Parse(rgvTask.rgvtask_priorityCode); taskList.Add(taskModel); //发送任务给RGV WebResponseContent content = RGVAPIInvokeSendTask.SendTaskToRGV(taskList); if (content.Status) { RgvReturnModel model = (RgvReturnModel)content.Data; if (model.code == 0) { taskRGVinfoRepository.DbContextBeginTransaction(() => { rgvTask.rgvtask_dispatchertime = DateTime.Now; rgvTask.rgvtask_taskStatus = RGVTaskState.RgvTaskState_Had_Sended.ToString(); if (null != wcsInfo) { wcsInfo.wcstask_state = TaskState.TaskState_RGV_Received.ToString(); wcsInfo.wcstask_dispatcherTime = DateTime.Now; taskWCSinfoRepository.Update(wcsInfo, true); } //在此处事务更新 taskRGVinfoRepository.Update(rgvTask, true); //Wms更新 WMSApi.PostTaskStateToWMS(rgvTask.rgvtask_barCode, TaskState.TaskState_RGV_Received.ToString()); return content.OK(); }); } } } } }