| | |
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 按任务编号获取机器人任务
|
| | | /// </summary>
|
| | | /// <remarks>
|
| | | /// 用于 RobotJob 快速查找执行中的任务,避免全表扫描。
|
| | | /// 优先通过状态中缓存的 CurrentTaskNum 定位任务。
|
| | | /// </remarks>
|
| | | /// <param name="taskNum">机器人任务编号</param>
|
| | | /// <returns>匹配的任务对象,如果没有则返回 null</returns>
|
| | | public Dt_RobotTask? GetTaskByNum(int taskNum)
|
| | | {
|
| | | return _robotTaskService.Repository.QueryFirst(x => x.RobotTaskNum == taskNum);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 按设备编码获取当前机器人的执行中任务
|
| | | /// </summary>
|
| | | /// <remarks>
|
| | |
| | |
|
| | | // 将任务关联到状态对象
|
| | | state.CurrentTask = task;
|
| | | state.CurrentTaskNum = task.RobotTaskNum;
|
| | |
|
| | | if (isScanNG)
|
| | | {
|
| | |
| | |
|
| | | // 将任务关联到状态对象
|
| | | state.CurrentTask = task;
|
| | | state.CurrentTaskNum = task.RobotTaskNum;
|
| | |
|
| | | if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
|
| | | {
|
| | |
| | |
|
| | | task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
|
| | | state.CurrentTask = task;
|
| | | state.CurrentTaskNum = task.RobotTaskNum;
|
| | |
|
| | | if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
|
| | | {
|
| | |
| | | {
|
| | | task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
|
| | | state.CurrentTask = task;
|
| | | state.CurrentTaskNum = task.RobotTaskNum;
|
| | |
|
| | | if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
|
| | | {
|
| | |
| | | {
|
| | | task.RobotTaskState = TaskRobotStatusEnum.RobotExecuting.GetHashCode();
|
| | | state.CurrentTask = task;
|
| | | state.CurrentTaskNum = task.RobotTaskNum;
|
| | |
|
| | | if (_stateManager.TryUpdateStateSafely(state.IPAddress, state))
|
| | | {
|
| | |
| | | PalletCode = currentTask.RobotSourceAddressPalletCode; // 使用源地址的托盘码
|
| | | if (isRoadway == "HCSC1")
|
| | | {
|
| | | warehouseId = 2;
|
| | | warehouseId = 3;
|
| | | roadway = "HCSC1";
|
| | | }
|
| | | else if (isRoadway == "GWSC1")
|
| | |
| | | taskType = TaskTypeEnum.InEmpty.GetHashCode(); // 空托盘入库
|
| | | PalletCode = currentTask.RobotSourceAddressPalletCode; // 使用源地址的托盘码
|
| | |
|
| | | warehouseId = 3;
|
| | | warehouseId = 2;
|
| | | roadway = "CWSC1";
|
| | |
|
| | | SourceAddress = currentTask.RobotSourceAddressLineCode;
|
| | |
| | |
|
| | | if (isRoadway == "HCSC1")
|
| | | {
|
| | | warehouseId = 2;
|
| | | warehouseId = 3;
|
| | | roadway = "HCSC1";
|
| | | }
|
| | | else if (isRoadway == "GWSC1")
|
| | |
| | | // 解析 WMS 返回的任务信息
|
| | | WMSTaskDTO taskDTO = JsonConvert.DeserializeObject<WMSTaskDTO>(result.Data.Data.ToJson() ?? string.Empty) ?? new WMSTaskDTO();
|
| | |
|
| | | var task = await _taskService.Repository.QueryFirstAsync(x => x.PalletCode == taskDTO.PalletCode);
|
| | | if(task != null)
|
| | | {
|
| | | await _taskService.Repository.DeleteDataAsync(task);
|
| | | }
|
| | |
|
| | | // 调用任务服务接收 WMS 任务
|
| | | var content = _taskService.ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
|
| | | if (!content.Status)
|
| | |
| | | // 通道/位置编号
|
| | | Channel = x,
|
| | |
|
| | | // 电池条码:如果状态中有条码列表,取对应位置的条码;否则为空
|
| | | // 电池条码:使用当前批次条码列表,取对应位置的条码;否则为空
|
| | | //CellBarcode = state.CellBarcode?.Count > 0 ? state.CellBarcode[x - 1] : ""
|
| | | CellBarcode = !state.CellBarcode.IsNullOrEmpty() ? state.CellBarcode[idx].ToString() ?? string.Empty : string.Empty
|
| | | CellBarcode = !state.CurrentBatchBarcodes.IsNullOrEmpty() ? state.CurrentBatchBarcodes[idx].ToString() ?? string.Empty : string.Empty
|
| | | })
|
| | | .ToList()
|
| | | };
|