增加虚拟路口虚拟虚拟路段

Signed-off-by: yinzijian <yinzijian@haomozhixing.onaliyun.com>
This commit is contained in:
yinzijian 2025-11-13 17:36:22 +08:00
parent ccecfe75c6
commit 038046c611
1 changed files with 36 additions and 9 deletions

View File

@ -186,27 +186,54 @@ class TmnetDbHelper(TableDbHelperBase):
return self.do_select(sql)
def query_cross_list_road(self, nodeid: str, area_id: str):
"""
查询bound_cross的路口和进口道
包括虚拟路口和虚拟路段
"""
conn, cursor = self.connect()
try:
sql = """select if(clui.name is not null, clui.name, c2.name) as name,
sql = """select IFNULL(clui.name, c2.name) as name,
c.crossid,
if(clui.location is not null, clui.location, c.location) as location,
IFNULL(clui.location, c.location) as location,
c.nodeid,
c.area_id,
r.roadid,
if(rlui.from_crossid is not null, rlui.from_crossid, r.from_crossid) as from_crossid,
if(rlui.to_crossid is not null, rlui.to_crossid, r.to_crossid) as to_crossid,
if(rlui.name is not null, rlui.name, r.name) as road_name,
if(rlui.src_direct is not null, rlui.src_direct, r.src_direct) as src_direct
IFNULL(r.roadid,IFNULL(rlui.roadid,udr.roadid)) as roadid,
IFNULL(rlui.from_crossid, IFNULL(r.from_crossid,udr.from_crossid)) as from_crossid,
IFNULL(rlui.to_crossid, IFNULL(r.to_crossid,udr.to_crossid)) as to_crossid,
IFNULL(rlui.name, IFNULL(r.name,udr.name)) as road_name,
IFNULL(rlui.src_direct, IFNULL(r.src_direct,udr.src_direct)) as src_direct
from `bound_crosses` as c
join `cross` c2 on c2.crossid = c.crossid and c2.nodeid = %s and c2.area_id = %s
left join `cross_ledger_update_info` as clui on clui.crossid = c.crossid and clui.nodeid = %s and clui.area_id = %s
left join `road` as r on r.nodeid = %s and r.to_crossid = c.crossid and r.recordstate = 0 and (r.is_sup_road is null or r.is_sup_road <> 1)
left join `road_ledger_update_info` as rlui on rlui.nodeid = %s and rlui.recordstate = r.recordstate and rlui.to_crossid = r.to_crossid and (rlui.is_sup_road is null or rlui.is_sup_road <> 1)
left join `user_defined_roads` as udr on udr.nodeid = %s and udr.recordstate = 0 and udr.to_crossid = c2.crossid and (udr.is_sup_road is null or udr.is_sup_road <> 1)
where c.nodeid = %s
and c.area_id = %s
union all
select udc.name,
udc.crossid,
udc.location,
c.nodeid,
c.area_id,
IFNULL(r.roadid,IFNULL(rlui.roadid,udr.roadid)) as roadid,
IFNULL(rlui.from_crossid, IFNULL(r.from_crossid,udr.from_crossid)) as from_crossid,
IFNULL(rlui.to_crossid, IFNULL(r.to_crossid,udr.to_crossid)) as to_crossid,
IFNULL(rlui.name, IFNULL(r.name,udr.name)) as road_name,
IFNULL(rlui.src_direct, IFNULL(r.src_direct,udr.src_direct)) as src_direct
from `bound_crosses` as c
join `user_defined_cross` udc on udc.crossid = c.crossid and udc.nodeid = %s and udc.area_id = %s
left join `road` as r on r.nodeid = %s and r.to_crossid = udc.crossid and r.recordstate = 0 and (r.is_sup_road is null or r.is_sup_road <> 1)
left join `road_ledger_update_info` as rlui on rlui.nodeid = %s and rlui.recordstate = 0 and rlui.to_crossid = r.to_crossid and (rlui.is_sup_road is null or rlui.is_sup_road <> 1)
left join `user_defined_roads` as udr on udr.nodeid = %s and udr.recordstate = 0 and udr.to_crossid = c.crossid and (udr.is_sup_road is null or udr.is_sup_road <> 1)
where c.nodeid = %s
and c.area_id = %s"""
print(cursor.mogrify(sql, (nodeid, area_id, nodeid, area_id, nodeid, nodeid, int(nodeid), int(area_id))))
cursor.execute(sql, (nodeid, area_id, nodeid, area_id, nodeid, nodeid, int(nodeid), int(area_id)))
print(cursor.mogrify(sql, (
nodeid, area_id, nodeid, area_id, nodeid, nodeid, nodeid, int(nodeid), int(area_id), nodeid, area_id,
nodeid, nodeid, nodeid, int(nodeid), int(area_id))))
cursor.execute(sql, (
nodeid, area_id, nodeid, area_id, nodeid, nodeid, nodeid, int(nodeid), int(area_id), nodeid, area_id,
nodeid, nodeid, nodeid, int(nodeid), int(area_id)))
result = cursor.fetchall()
self.close(conn, cursor)
return result, None