Commit f022c7c04ce15d63b5eb9597904eb647e99dbc9e

Authored by 王通
1 parent 5a575970

1.

src/main/java/com/bsth/controller/realcontrol/AdminUtilsController.java
@@ -9,6 +9,7 @@ import com.bsth.common.Setting; @@ -9,6 +9,7 @@ import com.bsth.common.Setting;
9 import com.bsth.data.BasicData; 9 import com.bsth.data.BasicData;
10 import com.bsth.security.SsoConfig; 10 import com.bsth.security.SsoConfig;
11 import com.bsth.service.SectionService; 11 import com.bsth.service.SectionService;
  12 +import com.bsth.service.StationService;
12 import com.bsth.service.schedule.utils.SpringUtils; 13 import com.bsth.service.schedule.utils.SpringUtils;
13 import com.bsth.util.MailUtils; 14 import com.bsth.util.MailUtils;
14 import com.fasterxml.jackson.core.JsonProcessingException; 15 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -81,6 +82,9 @@ public class AdminUtilsController { @@ -81,6 +82,9 @@ public class AdminUtilsController {
81 @Autowired 82 @Autowired
82 private SectionService sectionService; 83 private SectionService sectionService;
83 84
  85 + @Autowired
  86 + private StationService stationService;
  87 +
84 /** 88 /**
85 * 出现重复班次的车辆 89 * 出现重复班次的车辆
86 * 90 *
@@ -375,7 +379,7 @@ public class AdminUtilsController { @@ -375,7 +379,7 @@ public class AdminUtilsController {
375 } 379 }
376 380
377 @RequestMapping("/section/translateWgs2Bd") 381 @RequestMapping("/section/translateWgs2Bd")
378 - public String translateWgs2Bd() { 382 + public String translateWgs2Bd1() {
379 Map<String, Object> result = new HashMap<>(); 383 Map<String, Object> result = new HashMap<>();
380 try { 384 try {
381 sectionService.translateWgs2Bd(); 385 sectionService.translateWgs2Bd();
@@ -386,4 +390,17 @@ public class AdminUtilsController { @@ -386,4 +390,17 @@ public class AdminUtilsController {
386 390
387 return "error"; 391 return "error";
388 } 392 }
  393 +
  394 + @RequestMapping("/station/translateWgs2Bd")
  395 + public String translateWgs2Bd2() {
  396 + Map<String, Object> result = new HashMap<>();
  397 + try {
  398 + stationService.translateWgs2Bd();
  399 + return "success";
  400 + } catch (Exception e) {
  401 + e.printStackTrace();
  402 + }
  403 +
  404 + return "error";
  405 + }
389 } 406 }
390 \ No newline at end of file 407 \ No newline at end of file
src/main/java/com/bsth/service/StationService.java
@@ -57,4 +57,9 @@ public interface StationService extends BaseService&lt;Station, Integer&gt; { @@ -57,4 +57,9 @@ public interface StationService extends BaseService&lt;Station, Integer&gt; {
57 * @return 57 * @return
58 */ 58 */
59 List<Station> findStationByName(String stationName); 59 List<Station> findStationByName(String stationName);
  60 +
  61 + /**
  62 + * 将路段的WGS坐标数据转换到百度坐标并保存
  63 + */
  64 + void translateWgs2Bd();
60 } 65 }
src/main/java/com/bsth/service/impl/StationServiceImpl.java
@@ -12,12 +12,16 @@ import com.bsth.util.Geo.Point; @@ -12,12 +12,16 @@ import com.bsth.util.Geo.Point;
12 import com.bsth.util.GeoConverter; 12 import com.bsth.util.GeoConverter;
13 import org.geolatte.geom.codec.Wkt; 13 import org.geolatte.geom.codec.Wkt;
14 import org.springframework.beans.factory.annotation.Autowired; 14 import org.springframework.beans.factory.annotation.Autowired;
  15 +import org.springframework.jdbc.core.BatchPreparedStatementSetter;
15 import org.springframework.jdbc.core.BeanPropertyRowMapper; 16 import org.springframework.jdbc.core.BeanPropertyRowMapper;
16 import org.springframework.jdbc.core.JdbcTemplate; 17 import org.springframework.jdbc.core.JdbcTemplate;
17 import org.springframework.stereotype.Service; 18 import org.springframework.stereotype.Service;
18 import org.springframework.transaction.annotation.Transactional; 19 import org.springframework.transaction.annotation.Transactional;
19 import org.springframework.util.StringUtils; 20 import org.springframework.util.StringUtils;
20 21
  22 +import java.sql.PreparedStatement;
  23 +import java.sql.SQLException;
  24 +import java.util.ArrayList;
21 import java.util.HashMap; 25 import java.util.HashMap;
22 import java.util.List; 26 import java.util.List;
23 import java.util.Map; 27 import java.util.Map;
@@ -127,6 +131,26 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -127,6 +131,26 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
127 return jdbcTemplate.query(query, new Object[]{ stationName }, BeanPropertyRowMapper.newInstance(Station.class)); 131 return jdbcTemplate.query(query, new Object[]{ stationName }, BeanPropertyRowMapper.newInstance(Station.class));
128 } 132 }
129 133
  134 + @Override
  135 + public void translateWgs2Bd() {
  136 + String query = "SELECT id, ST_AsText(center_point_wgs) center_point_wgs_wkt FROM bsth_c_station";
  137 + List<Station> stations = jdbcTemplate.query(query, BeanPropertyRowMapper.newInstance(Station.class));
  138 + List<Station> stations1 = new ArrayList<>();
  139 + StationBatchPreparedStatementSetter preparedStatementSetter = new StationBatchPreparedStatementSetter();
  140 + preparedStatementSetter.setStations(stations1);
  141 + for (int i = 0;i < stations.size();i++) {
  142 + stations1.add(stations.get(i));
  143 + if (i != 0 && i % 2000 == 0) {
  144 + jdbcTemplate.batchUpdate("UPDATE bsth_c_station SET b_jwpoints = ?, center_point = ST_GeomFromText(?) WHERE id = ?", preparedStatementSetter);
  145 + stations1.clear();
  146 + }
  147 + }
  148 + if (stations1.size() > 0) {
  149 + jdbcTemplate.batchUpdate("UPDATE bsth_c_station SET b_jwpoints = ?, center_point = ST_GeomFromText(?) WHERE id = ?", preparedStatementSetter);
  150 + stations1.clear();
  151 + }
  152 + }
  153 +
130 /** 154 /**
131 * 存在wkt 则转换wkt为geo信息 155 * 存在wkt 则转换wkt为geo信息
132 * @param station 156 * @param station
@@ -141,4 +165,35 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem @@ -141,4 +165,35 @@ public class StationServiceImpl extends BaseServiceImpl&lt;Station, Integer&gt; implem
141 station.setCenterPointWgs(wgs); 165 station.setCenterPointWgs(wgs);
142 } 166 }
143 } 167 }
  168 +
  169 + final static class StationBatchPreparedStatementSetter implements BatchPreparedStatementSetter {
  170 +
  171 + private List<Station> stations;
  172 +
  173 + @Override
  174 + public void setValues(PreparedStatement ps, int i) throws SQLException {
  175 + Station station = stations.get(i);
  176 + ps.setString(1, CoordinateConverter.transformFromWGSToBD(CoordinateConverter.LocationMake(station.getCenterPointWgsWkt())).toString());
  177 + ps.setString(2, String.format("POINT(%s)", CoordinateConverter.transformFromWGSToBD(CoordinateConverter.LocationMake(station.getCenterPointWgsWkt())).toString()));
  178 + ps.setInt(3, station.getId());
  179 + }
  180 +
  181 + @Override
  182 + public int getBatchSize() {
  183 + return stations.size();
  184 + }
  185 +
  186 + public List<Station> getStations() {
  187 + return stations;
  188 + }
  189 +
  190 + public void setStations(List<Station> stations) {
  191 + this.stations = stations;
  192 + }
  193 + }
  194 +
  195 + public static void main(String[] args) {
  196 + String coordinates = "43.97675 36.19718";
  197 + System.out.println(CoordinateConverter.transformFromWGSToBD(CoordinateConverter.LocationMake(coordinates)).toString());
  198 + }
144 } 199 }
145 \ No newline at end of file 200 \ No newline at end of file