From 038046c611defc1eccaeb09d45226d5351c02b5c Mon Sep 17 00:00:00 2001 From: yinzijian Date: Thu, 13 Nov 2025 17:36:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=99=9A=E6=8B=9F=E8=B7=AF?= =?UTF-8?q?=E5=8F=A3=E8=99=9A=E6=8B=9F=E8=99=9A=E6=8B=9F=E8=B7=AF=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yinzijian --- app/tmnet_db_func.py | 45 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/app/tmnet_db_func.py b/app/tmnet_db_func.py index ebc76e6..60ee62f 100644 --- a/app/tmnet_db_func.py +++ b/app/tmnet_db_func.py @@ -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