cross_doctor/app/wave_db_func.py

101 lines
3.2 KiB
Python

# -*- coding: utf-8 -*-
# @Author: Owl
# @Date: 2026/3/17 12:01
# @Description:
from app.db_func_base import *
class WaveDBFunction(TableDbHelperBase):
def __init__(self, pool):
self.db_pool = pool
self.DB_Name = 'greenwave'
def query_node_wave(self, nodeid):
sql = """
select t1.name as wave_name, t1.waveid, t2.crossid, t1.service_status, t1.srcDir, t1.first_left, t1.last_left from wave_cross t2
inner join
(select name, waveid, service_status, srcDir, first_left, last_left from greenwave where orgid = %s and service_status = 1 and status = 0) t1
on t1.waveid = t2.waveid
""" % nodeid
res = self.do_select(sql)
wave_cross_dict = {}
for wave_name, waveid, crossid, service_status, srcDir, first_left, last_left in res:
left_coor = 0 if first_left == 0 and last_left == 0 else 1
if waveid not in wave_cross_dict:
wave_cross_dict[waveid] = {
'wave_name': wave_name,
'waveid': waveid,
'src_dir': srcDir,
'left_coor': left_coor,
'service_status': service_status,
'cross_list': [crossid]
}
else:
wave_cross_dict[waveid]['cross_list'].append(crossid)
return wave_cross_dict
def query_wave_tp_infos(self, waveid, srcDir):
sql = """
select type, weekday, tp_start, tp_end from wave_tps where waveid = '%s'
""" % waveid
res = self.do_select(sql)
wave_tp_infos = []
for type, weekday, tp_start, tp_end in res:
type_str = gen_type_str(type, srcDir)
weekday_str = gen_weekday_str(weekday)
wave_tp_infos.append({
'type_str': type_str,
'weekday_str': weekday_str,
'type': type,
'weekday': weekday,
'tp_start': tp_start,
'tp_end': tp_end
})
return wave_tp_infos
sir2Str = {
'S': ['南向北', '北向南'],
'E': ['东向西', '西向东'],
'W': ['西向东', '东向西'],
'N': ['北向南', '南向北'],
'NE': ['东北向西南', '西南向东北'],
'NW': ['西北向东南', '东南向西北'],
'SE': ['东南向西北', '西北向东南'],
'SW': ['西南向东北', '东北向西南']
}
weekday2Str = {
1: '周一',
2: '周二',
3: '周三',
4: '周四',
5: '周五',
6: '周六',
7: '周日'
}
def gen_type_str(type_int, srcDir):
type_str = '双向'
if type_int == 0:
type_str = sir2Str[srcDir][0]
elif type_int == 1:
type_str = sir2Str[srcDir][1]
return type_str
def gen_weekday_str(weekday):
if weekday == '1,2,3,4,5':
weekday_str = '工作日'
elif weekday == '6,7':
weekday_str = '节假日'
elif weekday == '1,2,3,4,5,6,7':
weekday_str = '全周'
else:
weekday_list = weekday.split(',')
weekday_str = weekday2Str[int(weekday_list[0])]
for i in range(1, len(weekday_list)):
weekday_str += '' + weekday2Str[int(weekday_list[i])]
return weekday_str