### Apache Airflow version

2.5.0

### What happened

Open url `dags/gate/graph?dag_run_id=8256-8-1670328803&execution_date=2022-12-06T12%3A13%3A23.174592+00%3A00`
The graph is displaying a completely different dagrun. 
![image](https://user-images.githubusercontent.com/89977373/205916845-8acdf310-6073-46f9-aea3-8e144f6e4fba.png)
If you are not careful to review all the content, you might continue looking at the wrong results, or worse cancel a run with Mark failed.

I got the link from one of our users, so not 100% sure if it was the original url. I believe there could be something wrong with the url-encoding of the last `+` character. In any case, if there are any inconsistencies in the URL parameters vs the found dagruns, it should not display another dagrun, rather redirect to grid-view or error message.


### What you think should happen instead

* dag_run_id should be only required parameter, or have precedence over execution_date
* Provided dag_run_id should always be the same run-id that is displayed in graph
* Inconsistencies in any parameters should display error or redirect to grid view.

### How to reproduce

_No response_

### Operating System

Ubuntu 22.04

### Versions of Apache Airflow Providers

_No response_

### Deployment

Other Docker-based deployment

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

child_instances = [
                    item
                    for sublist in (child["instances"] for child in children if "instances" in child)
                    for item in sublist
                    if item and item["run_id"] == run_id
                ]
                children_start_dates = (item["start_date"] for item in child_instances)
                children_end_dates = (item["end_date"] for item in child_instances)
                children_states = {item["state"] for item in child_instances}
                
                
                
                mapped_states: MutableMapping[str, int] = collections.defaultdict(int)
                for mis in mapped_instances.values():
                    child_states = {mi.state for mi in mis}
                    state = next(s for s in wwwutils.priority if s in child_states)
                    value = state.value if state is not None else "no_status"
                    mapped_states[value] += 1
                group_state = next((state for state in wwwutils.priority if state in children_states), None)
                group_start_date = min(filter(None, children_start_dates), default=None)
                group_end_date = max(filter(None, children_end_dates), default=None)
                return {
                    "task_id": task_group.group_id,
                    "run_id": run_id,
                    "state": group_state,
                    "start_date": group_start_date,
                    "end_date": group_end_date,
                    "mapped_states": mapped_states,