select t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id, t.link_id, '0' direct_current from (with recursive res_tab as ( select t.psr_id link_id, t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id from t_feeder_topo t join (select distinct line_id from switch_res_tab) f on t.feeder = f.line_id where t.is_start_kg = '1' union all select if(t.psr_id in (select kg_id from switch_res_tab where closed_state='0'),'-',t.psr_id) link_id, t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id from t_feeder_topo t join res_tab p on t.start_kg_id = p.link_id and t.feeder = p.feeder where t.psr_type in #{item}) select psr_id, name, psr_type, feeder, feeder_name, normal_open, start_kg_id, link_id from res_tab ) t select t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id, t.link_id, '1' direct_current from (with recursive f_res_tab as ( select t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id, t.start_kg_id link_id from t_feeder_topo t join (select distinct line_id, kg_id from switch_res_tab where closed_state = '1') f on t.feeder = f.line_id and t.psr_id = f.kg_id and t.normal_open = 'true' union all select t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id, if(t.psr_id in (select kg_id from switch_res_tab where closed_state='0'), '-', t.start_kg_id) link_id from t_feeder_topo t join f_res_tab p on t.psr_id = p.link_id and t.feeder = p.feeder where t.psr_type in #{item}) select t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id, t.link_id from (with recursive z_res_tab as ( select t.psr_id,t.name,t.psr_type,t.feeder,t.feeder_name,t.normal_open,t.start_kg_id,ifnull(f.link_id,t.psr_id) link_id from t_feeder_topo t join (select distinct psr_id, feeder, link_id from f_res_tab r) f on t.feeder = f.feeder and t.psr_id = f.psr_id union all select t.psr_id, t.name, t.psr_type, t.feeder, t.feeder_name, t.normal_open, t.start_kg_id, t.psr_id link_id from t_feeder_topo t join z_res_tab p on t.start_kg_id = p.link_id and t.feeder = p.feeder where t.psr_type in #{item}) select psr_id, name, psr_type, feeder, feeder_name, normal_open, start_kg_id, link_id from z_res_tab) t ) t