| | |
| | | |
| | | // 确定目标地址:空托盘任务使用 "2201",其他任务使用 NextAddress |
| | | var isEmptyTask = task.TaskType == (int)TaskOutboundTypeEnum.OutEmpty; |
| | | var targetAddress = task.CurrentAddress == "2217" ? (isEmptyTask ? "2201" : task.NextAddress) : task.NextAddress; |
| | | var targetAddress = task.CurrentAddress == "2217" ? (isEmptyTask ? task.TargetAddress : task.NextAddress) : task.NextAddress; |
| | | |
| | | // 处理特殊地址 2217,需要调用目标地址选择器 |
| | | if (task.CurrentAddress == "2217" && !_targetAddressSelector.HandleOutboundNextAddress(conveyorLine, targetAddress, childDeviceCode)) |
| | | { |
| | | return Task.CompletedTask; ; |
| | | } |
| | | //if (task.CurrentAddress == "2217" && !_targetAddressSelector.HandleOutboundNextAddress(conveyorLine, targetAddress, childDeviceCode)) |
| | | //{ |
| | | // return Task.CompletedTask; ; |
| | | //} |
| | | |
| | | // 设置任务号、托盘条码、目标地址、WCS_ACK |
| | | var isTaskNoSet = conveyorLine.SetValue(ConveyorLineDBNameNew.TaskNo, task.TaskNum, childDeviceCode); |
| | | |
| | | Thread.Sleep(100); // 确保 PLC 能正确读取任务号后再写入条码 |
| | | Thread.Sleep(300); // 确保 PLC 能正确读取任务号后再写入条码 |
| | | var isPalletSet = conveyorLine.SetValue(ConveyorLineDBNameNew.Barcode, task.PalletCode, childDeviceCode); |
| | | |
| | | Thread.Sleep(100); // 确保 PLC 能正确读取任务号后再写入条码 |
| | | Thread.Sleep(300); // 确保 PLC 能正确读取任务号后再写入条码 |
| | | bool isTargetSet = conveyorLine.SetValue(ConveyorLineDBNameNew.Target, targetAddress, childDeviceCode); |
| | | //if (targetAddress == "2217" && !isEmptyTask) |
| | | //{ |
| | |
| | | //} |
| | | //if (!isTargetSet || !isTaskNoSet || !isPalletSet) |
| | | //{ |
| | | // QuartzLogHelper.LogError(_logger, $"RequestOutbound:下发出库任务失败,任务号: {task.TaskNum},子设备: {childDeviceCode}", conveyorLine.DeviceCode); |
| | | // QuartzLogHelper.LogError(_logger, $"RequestOutbound:下发出库任务失败,任务号: {task.TaskNum},子设备: {childDeviceCode}", conveyorLine.DeviceCode); |
| | | // return Task.CompletedTask; |
| | | //} |
| | | |
| | | bool isWmsResult = false; |
| | | // 更新任务状态或位置 |
| | | if (isEmptyTask && task.NextAddress == "2217") |
| | | if (isEmptyTask && (task.TargetAddress == "2103" || task.TargetAddress == "2101")) |
| | | { |
| | | task.TaskStatus = task.TaskStatus.GetNextNotCompletedStatus<TaskOutStatusEnum>(); |
| | | task.NextAddress = "2201"; |
| | | task.NextAddress = "2103"; |
| | | isWmsResult = _taskService.Repository.UpdateData(task); |
| | | } |
| | | else |
| | |
| | | isWmsResult = _taskService.UpdateTaskStatusToNext(task).Status; |
| | | } |
| | | |
| | | if(!isWmsResult) |
| | | if (!isWmsResult) |
| | | { |
| | | QuartzLogHelper.LogError(_logger, $"RequestOutbound:更新任务状态失败,任务号: {task.TaskNum},子设备: {childDeviceCode}", conveyorLine.DeviceCode); |
| | | return Task.CompletedTask; |