Commit ccb15e34fd1de96775db80c37b2657082043d66f

Authored by 王通
1 parent ab576aa9

1.

src/main/java/com/bsth/server_rs/base_info/section/buffer/LD_SectionBufferData.java
1 -package com.bsth.server_rs.base_info.section.buffer;  
2 -  
3 -import com.bsth.Application;  
4 -import com.bsth.server_rs.base_info.line.Line;  
5 -import com.bsth.server_rs.base_info.line.buffer.LineBufferData;  
6 -import com.bsth.server_rs.base_info.section.entity.LD_Section;  
7 -import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;  
8 -import com.bsth.server_rs.base_info.section.entity.RoadSpeed;  
9 -import com.google.common.collect.ArrayListMultimap;  
10 -import org.slf4j.Logger;  
11 -import org.slf4j.LoggerFactory;  
12 -import org.springframework.beans.factory.annotation.Autowired;  
13 -import org.springframework.boot.CommandLineRunner;  
14 -import org.springframework.core.annotation.Order;  
15 -import org.springframework.jdbc.core.JdbcTemplate;  
16 -import org.springframework.stereotype.Component;  
17 -  
18 -import java.util.*;  
19 -import java.util.concurrent.ConcurrentHashMap;  
20 -import java.util.concurrent.TimeUnit;  
21 -  
22 -/**  
23 - * 站点数据缓存(自更新)  
24 - * Created by panzhao on 2017/3/27.  
25 - */  
26 -@Component  
27 -@Order(6)  
28 -public class LD_SectionBufferData implements CommandLineRunner {  
29 -  
30 -  
31 - private static List<LD_Section> data;  
32 - private static Map<String, LD_Section> codeMap;  
33 -  
34 - /**  
35 - * 线路名称和路段集合映射  
36 - */  
37 - private static Map<String, List<LD_SectionRoute>> name2sections = new ConcurrentHashMap<>();  
38 -  
39 - //路段限速缓存信息  
40 - private static List<RoadSpeed> roadSpeedList;  
41 -  
42 - @Autowired  
43 - JdbcTemplate jdbcTemplate;  
44 -  
45 - @Autowired  
46 - LD_SectionRefreshThread ld_sectionRefreshThread;  
47 -  
48 - Logger logger = LoggerFactory.getLogger(this.getClass());  
49 -  
50 - /**  
51 - 路由缓存  
52 - 线路编码_上下行 ——> 路由集合  
53 - */  
54 - private static ArrayListMultimap<String, LD_SectionRoute> routeListMap;  
55 -  
56 -  
57 - public static List<LD_Section> findAll(){  
58 - return data;  
59 - }  
60 -  
61 - public static Map<String, Collection<LD_SectionRoute>> findAllRoute(){  
62 - return routeListMap.asMap();  
63 - }  
64 -  
65 - public static LD_Section findOne(String code){  
66 - return codeMap.get(code);  
67 - }  
68 -  
69 - public static void replaceAll(List<LD_Section> newData){  
70 - data = newData;  
71 - Map<String, LD_Section> codeMapCopy = new HashMap<>();  
72 - for(LD_Section section : data){  
73 - codeMapCopy.put(section.getSectionCode(), section);  
74 - }  
75 -  
76 - codeMap = codeMapCopy;  
77 - }  
78 -  
79 - public static void putRoadSpeeds(List<RoadSpeed> list){  
80 - roadSpeedList = list;  
81 - }  
82 -  
83 - public static void replaceRoutes(List<LD_SectionRoute> list){  
84 - Collections.sort(list, new Comparator<LD_SectionRoute>() {  
85 - @Override  
86 - public int compare(LD_SectionRoute o1, LD_SectionRoute o2) {  
87 - return o1.getSectionrouteCode().compareTo(o2.getSectionrouteCode());  
88 - }  
89 - });  
90 -  
91 - ArrayListMultimap<String, LD_SectionRoute> routeListMapCopy = ArrayListMultimap.create();  
92 - for(LD_SectionRoute sr : list){  
93 - routeListMapCopy.put(sr.getLineCode()+"_" + sr.getDirections(), sr);  
94 - }  
95 -  
96 - routeListMap = routeListMapCopy;  
97 - }  
98 -  
99 - @Override  
100 - public void run(String... strings) throws Exception {  
101 - Application.mainServices.scheduleWithFixedDelay(ld_sectionRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);  
102 - }  
103 -  
104 - public Map<String, Collection<LD_SectionRoute>> findRouteByCompany(String company) {  
105 - List<Line> lines = LineBufferData.findByCompany(company);  
106 -  
107 - ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();  
108 -  
109 -  
110 - Set<String> ks = routeListMap.keySet();  
111 -  
112 - for(String k : ks){  
113 - if(include(lines, k)){  
114 - listMap.putAll(k, routeListMap.get(k));  
115 - }  
116 - }  
117 - return listMap.asMap();  
118 - }  
119 -  
120 - private static boolean include(List<Line> lines, String k){  
121 -  
122 - for(Line line : lines){  
123 - if(k.startsWith(line.getLineCode() + "_"))  
124 - return true;  
125 - }  
126 - return false;  
127 - }  
128 -  
129 - public List<RoadSpeed> roadSpeedList(String company) {  
130 - return roadSpeedList;  
131 - }  
132 -  
133 - public Map<String, Collection<LD_SectionRoute>> findByLineCode(String lineCode) {  
134 -  
135 - ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();  
136 -  
137 - String k1 = lineCode + "_0";  
138 - String k2 = lineCode + "_1";  
139 -  
140 - listMap.putAll(k1, routeListMap.get(k1));  
141 - listMap.putAll(k2, routeListMap.get(k2));  
142 - return listMap.asMap();  
143 - }  
144 -  
145 - public static void putLastedRoute(Map<String, List<LD_SectionRoute>> map) {  
146 - name2sections = map;  
147 - }  
148 -  
149 - public List<LD_SectionRoute> findByLineName(String lineName) {  
150 - return name2sections.get(lineName);  
151 - }  
152 -} 1 +package com.bsth.server_rs.base_info.section.buffer;
  2 +
  3 +import com.bsth.Application;
  4 +import com.bsth.server_rs.base_info.line.Line;
  5 +import com.bsth.server_rs.base_info.line.buffer.LineBufferData;
  6 +import com.bsth.server_rs.base_info.section.entity.LD_Section;
  7 +import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;
  8 +import com.bsth.server_rs.base_info.section.entity.RoadSpeed;
  9 +import com.google.common.collect.ArrayListMultimap;
  10 +import org.slf4j.Logger;
  11 +import org.slf4j.LoggerFactory;
  12 +import org.springframework.beans.factory.annotation.Autowired;
  13 +import org.springframework.boot.CommandLineRunner;
  14 +import org.springframework.core.annotation.Order;
  15 +import org.springframework.jdbc.core.JdbcTemplate;
  16 +import org.springframework.stereotype.Component;
  17 +
  18 +import java.util.*;
  19 +import java.util.concurrent.ConcurrentHashMap;
  20 +import java.util.concurrent.TimeUnit;
  21 +
  22 +/**
  23 + * 站点数据缓存(自更新)
  24 + * Created by panzhao on 2017/3/27.
  25 + */
  26 +@Component
  27 +@Order(6)
  28 +public class LD_SectionBufferData implements CommandLineRunner {
  29 +
  30 +
  31 + private static List<LD_Section> data;
  32 + private static Map<String, LD_Section> codeMap;
  33 +
  34 + /**
  35 + * 线路名称和路段集合映射
  36 + */
  37 + private static Map<String, List<LD_SectionRoute>> name2sections = new ConcurrentHashMap<>();
  38 +
  39 + //路段限速缓存信息
  40 + private static List<RoadSpeed> roadSpeedList = new ArrayList<>();
  41 +
  42 + @Autowired
  43 + JdbcTemplate jdbcTemplate;
  44 +
  45 + @Autowired
  46 + LD_SectionRefreshThread ld_sectionRefreshThread;
  47 +
  48 + Logger logger = LoggerFactory.getLogger(this.getClass());
  49 +
  50 + /**
  51 + 路由缓存
  52 + 线路编码_上下行 ——> 路由集合
  53 + */
  54 + private static ArrayListMultimap<String, LD_SectionRoute> routeListMap;
  55 +
  56 +
  57 + public static List<LD_Section> findAll(){
  58 + return data;
  59 + }
  60 +
  61 + public static Map<String, Collection<LD_SectionRoute>> findAllRoute(){
  62 + return routeListMap.asMap();
  63 + }
  64 +
  65 + public static LD_Section findOne(String code){
  66 + return codeMap.get(code);
  67 + }
  68 +
  69 + public static void replaceAll(List<LD_Section> newData){
  70 + data = newData;
  71 + Map<String, LD_Section> codeMapCopy = new HashMap<>();
  72 + for(LD_Section section : data){
  73 + codeMapCopy.put(section.getSectionCode(), section);
  74 + }
  75 +
  76 + codeMap = codeMapCopy;
  77 + }
  78 +
  79 + public static void putRoadSpeeds(List<RoadSpeed> list){
  80 + roadSpeedList = list;
  81 + }
  82 +
  83 + public static void replaceRoutes(List<LD_SectionRoute> list){
  84 + Collections.sort(list, new Comparator<LD_SectionRoute>() {
  85 + @Override
  86 + public int compare(LD_SectionRoute o1, LD_SectionRoute o2) {
  87 + return o1.getSectionrouteCode().compareTo(o2.getSectionrouteCode());
  88 + }
  89 + });
  90 +
  91 + ArrayListMultimap<String, LD_SectionRoute> routeListMapCopy = ArrayListMultimap.create();
  92 + for(LD_SectionRoute sr : list){
  93 + routeListMapCopy.put(sr.getLineCode()+"_" + sr.getDirections(), sr);
  94 + }
  95 +
  96 + routeListMap = routeListMapCopy;
  97 + }
  98 +
  99 + @Override
  100 + public void run(String... strings) throws Exception {
  101 + Application.mainServices.scheduleWithFixedDelay(ld_sectionRefreshThread, 10, 60 * 60, TimeUnit.SECONDS);
  102 + }
  103 +
  104 + public Map<String, Collection<LD_SectionRoute>> findRouteByCompany(String company) {
  105 + List<Line> lines = LineBufferData.findByCompany(company);
  106 +
  107 + ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();
  108 +
  109 +
  110 + Set<String> ks = routeListMap.keySet();
  111 +
  112 + for(String k : ks){
  113 + if(include(lines, k)){
  114 + listMap.putAll(k, routeListMap.get(k));
  115 + }
  116 + }
  117 + return listMap.asMap();
  118 + }
  119 +
  120 + private static boolean include(List<Line> lines, String k){
  121 +
  122 + for(Line line : lines){
  123 + if(k.startsWith(line.getLineCode() + "_"))
  124 + return true;
  125 + }
  126 + return false;
  127 + }
  128 +
  129 + public List<RoadSpeed> roadSpeedList(String company) {
  130 + return roadSpeedList;
  131 + }
  132 +
  133 + public Map<String, Collection<LD_SectionRoute>> findByLineCode(String lineCode) {
  134 +
  135 + ArrayListMultimap<String, LD_SectionRoute> listMap = ArrayListMultimap.create();
  136 +
  137 + String k1 = lineCode + "_0";
  138 + String k2 = lineCode + "_1";
  139 +
  140 + listMap.putAll(k1, routeListMap.get(k1));
  141 + listMap.putAll(k2, routeListMap.get(k2));
  142 + return listMap.asMap();
  143 + }
  144 +
  145 + public static void putLastedRoute(Map<String, List<LD_SectionRoute>> map) {
  146 + name2sections = map;
  147 + }
  148 +
  149 + public List<LD_SectionRoute> findByLineName(String lineName) {
  150 + return name2sections.get(lineName);
  151 + }
  152 +}
src/main/java/com/bsth/server_rs/base_info/section/buffer/LD_SectionRefreshThread.java
1 -package com.bsth.server_rs.base_info.section.buffer;  
2 -  
3 -import com.bsth.server_rs.base_info.section.entity.LD_Section;  
4 -import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;  
5 -import com.bsth.server_rs.base_info.section.entity.RoadSpeed;  
6 -import org.slf4j.Logger;  
7 -import org.slf4j.LoggerFactory;  
8 -import org.springframework.beans.factory.annotation.Autowired;  
9 -import org.springframework.jdbc.core.BeanPropertyRowMapper;  
10 -import org.springframework.jdbc.core.JdbcTemplate;  
11 -import org.springframework.stereotype.Component;  
12 -  
13 -import java.util.ArrayList;  
14 -import java.util.HashMap;  
15 -import java.util.List;  
16 -import java.util.Map;  
17 -  
18 -/**  
19 - * Created by panzhao on 2017/3/27.  
20 - */  
21 -@Component  
22 -public class LD_SectionRefreshThread extends Thread{  
23 -  
24 - @Autowired  
25 - JdbcTemplate jdbcTemplate;  
26 -  
27 - Logger logger = LoggerFactory.getLogger(this.getClass());  
28 -  
29 - @Override  
30 - public void run() {  
31 -  
32 - try {  
33 -  
34 - //路段信息  
35 - List<LD_Section> sectionList = jdbcTemplate.query("select section_code,section_name,section_type,ST_AsText(gsection_vector) as gsection_vector,ST_AsText(bsection_vector) as bsection_vector,croses_road,versions from bsth_c_section ",  
36 - BeanPropertyRowMapper.newInstance(LD_Section.class));  
37 -  
38 - if(sectionList == null || sectionList.size() == 0)  
39 - return;  
40 -  
41 - LD_SectionBufferData.replaceAll(sectionList);  
42 -  
43 - //路段路由信息  
44 - List<LD_SectionRoute> routeList = jdbcTemplate.query("select line_code,section_code,directions,sectionroute_code,versions from bsth_c_sectionroute where destroy=0",  
45 - BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));  
46 -  
47 - for(LD_SectionRoute sr : routeList){  
48 - sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));  
49 - }  
50 -  
51 - LD_SectionBufferData.replaceRoutes(routeList);  
52 -  
53 - //查询路段限速信息  
54 - List<RoadSpeed> roadSpeedList = jdbcTemplate.query("select id,name,ST_AsText(g_road_vector) as g_road_vector,speed,speed_start_date,speed_end_date,line,is_start,create_date,update_date from bsth_c_road_speed where is_start=0", BeanPropertyRowMapper.newInstance(RoadSpeed.class));  
55 - if(roadSpeedList.size() > 0)  
56 - LD_SectionBufferData.putRoadSpeeds(roadSpeedList);  
57 -  
58 - //查询最新版本路段信息  
59 - List<LD_SectionRoute> sectionRoutes = jdbcTemplate.query("select b.line_name,a.line_code,a.section_code,a.directions,a.sectionroute_code,a.versions from (select l.name line_name,l.line_code line_code,max(versions) versions from bsth_c_line l left join bsth_c_line_versions v on l.line_code = v.line_code where l.destroy = 0 group by l.name,l.line_code) b left join bsth_c_ls_sectionroute a on a.line_code = b.line_code and a.versions = b.versions where a.destroy = 0 order by a.line_code,a.directions,a.sectionroute_code", BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));  
60 - Map<String, List<LD_SectionRoute>> name2sections = new HashMap<>();  
61 - List<LD_SectionRoute> routes = null;  
62 - String lastedLineName = "";  
63 - for (LD_SectionRoute sr : sectionRoutes) {  
64 - if ("".equals(lastedLineName) || !lastedLineName.equals(sr.getLineName())) {  
65 - name2sections.put(lastedLineName, routes);  
66 - lastedLineName = sr.getLineName();  
67 - routes = new ArrayList<>();  
68 - }  
69 - sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));  
70 - routes.add(sr);  
71 - }  
72 - LD_SectionBufferData.putLastedRoute(name2sections);  
73 - }catch (Exception e){  
74 - logger.error("", e);  
75 - }  
76 - }  
77 -} 1 +package com.bsth.server_rs.base_info.section.buffer;
  2 +
  3 +import com.bsth.server_rs.base_info.section.entity.LD_Section;
  4 +import com.bsth.server_rs.base_info.section.entity.LD_SectionRoute;
  5 +import com.bsth.server_rs.base_info.section.entity.RoadSpeed;
  6 +import org.slf4j.Logger;
  7 +import org.slf4j.LoggerFactory;
  8 +import org.springframework.beans.factory.annotation.Autowired;
  9 +import org.springframework.jdbc.core.BeanPropertyRowMapper;
  10 +import org.springframework.jdbc.core.JdbcTemplate;
  11 +import org.springframework.stereotype.Component;
  12 +
  13 +import java.util.ArrayList;
  14 +import java.util.HashMap;
  15 +import java.util.List;
  16 +import java.util.Map;
  17 +
  18 +/**
  19 + * Created by panzhao on 2017/3/27.
  20 + */
  21 +@Component
  22 +public class LD_SectionRefreshThread extends Thread{
  23 +
  24 + @Autowired
  25 + JdbcTemplate jdbcTemplate;
  26 +
  27 + Logger logger = LoggerFactory.getLogger(this.getClass());
  28 +
  29 + @Override
  30 + public void run() {
  31 +
  32 + try {
  33 +
  34 + //路段信息
  35 + List<LD_Section> sectionList = jdbcTemplate.query("select section_code,section_name,section_type,ST_AsText(gsection_vector) as gsection_vector,ST_AsText(bsection_vector) as bsection_vector,croses_road,versions from bsth_c_section ",
  36 + BeanPropertyRowMapper.newInstance(LD_Section.class));
  37 +
  38 + if(sectionList == null || sectionList.size() == 0)
  39 + return;
  40 +
  41 + LD_SectionBufferData.replaceAll(sectionList);
  42 +
  43 + //路段路由信息
  44 + List<LD_SectionRoute> routeList = jdbcTemplate.query("select line_code,section_code,directions,sectionroute_code,versions from bsth_c_sectionroute where destroy=0",
  45 + BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));
  46 +
  47 + for(LD_SectionRoute sr : routeList){
  48 + sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));
  49 + }
  50 +
  51 + LD_SectionBufferData.replaceRoutes(routeList);
  52 +
  53 + //查询路段限速信息
  54 + //List<RoadSpeed> roadSpeedList = jdbcTemplate.query("select id,name,ST_AsText(g_road_vector) as g_road_vector,speed,speed_start_date,speed_end_date,line,is_start,create_date,update_date from bsth_c_road_speed where is_start=0", BeanPropertyRowMapper.newInstance(RoadSpeed.class));
  55 + //if(roadSpeedList.size() > 0)
  56 + // LD_SectionBufferData.putRoadSpeeds(roadSpeedList);
  57 +
  58 + //查询最新版本路段信息
  59 + List<LD_SectionRoute> sectionRoutes = jdbcTemplate.query("select b.line_name,a.line_code,a.section_code,a.directions,a.sectionroute_code,a.versions from (select l.name line_name,l.line_code line_code,max(versions) versions from bsth_c_line l left join bsth_c_line_versions v on l.line_code = v.line_code where l.destroy = 0 group by l.name,l.line_code) b left join bsth_c_ls_sectionroute a on a.line_code = b.line_code and a.versions = b.versions where a.destroy = 0 order by a.line_code,a.directions,a.sectionroute_code", BeanPropertyRowMapper.newInstance(LD_SectionRoute.class));
  60 + Map<String, List<LD_SectionRoute>> name2sections = new HashMap<>();
  61 + List<LD_SectionRoute> routes = null;
  62 + String lastedLineName = "";
  63 + for (LD_SectionRoute sr : sectionRoutes) {
  64 + if ("".equals(lastedLineName) || !lastedLineName.equals(sr.getLineName())) {
  65 + name2sections.put(lastedLineName, routes);
  66 + lastedLineName = sr.getLineName();
  67 + routes = new ArrayList<>();
  68 + }
  69 + sr.setSection(LD_SectionBufferData.findOne(sr.getSectionCode()));
  70 + routes.add(sr);
  71 + }
  72 + LD_SectionBufferData.putLastedRoute(name2sections);
  73 + }catch (Exception e){
  74 + logger.error("", e);
  75 + }
  76 + }
  77 +}