Commit 0ccf4fdcfe41753bc4dff866d53c99cb373b3323
1 parent
4f1f960c
1.加入历史到离站信息查询接口
Showing
3 changed files
with
449 additions
and
407 deletions
src/main/java/com/bsth/server_rs/gps/GpsRestService.java
| 1 | -package com.bsth.server_rs.gps; | ||
| 2 | - | ||
| 3 | -import java.text.ParseException; | ||
| 4 | -import java.util.ArrayList; | ||
| 5 | -import java.util.Collection; | ||
| 6 | -import java.util.Date; | ||
| 7 | -import java.util.HashMap; | ||
| 8 | -import java.util.List; | ||
| 9 | -import java.util.Map; | ||
| 10 | -import java.util.Set; | ||
| 11 | - | ||
| 12 | -import javax.ws.rs.GET; | ||
| 13 | -import javax.ws.rs.Path; | ||
| 14 | -import javax.ws.rs.PathParam; | ||
| 15 | -import javax.ws.rs.Produces; | ||
| 16 | -import javax.ws.rs.core.MediaType; | ||
| 17 | - | ||
| 18 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 19 | -import org.springframework.stereotype.Component; | ||
| 20 | - | ||
| 21 | -import com.bsth.server_rs.gps.buffer.BasicDataBuffer; | ||
| 22 | -import com.bsth.server_rs.gps.buffer.GpsRealDataBuffer; | ||
| 23 | -import com.bsth.server_rs.gps.dao.HistoryGpsDao; | ||
| 24 | -import com.bsth.server_rs.gps.entity.GpsEntity; | ||
| 25 | -import com.bsth.server_rs.gps.entity.LineInfo; | ||
| 26 | -import com.bsth.server_rs.gps.entity.StopInfo; | ||
| 27 | -import com.bsth.util.ThreadLocalDateUtil; | ||
| 28 | - | ||
| 29 | -/** | ||
| 30 | - * Created by panzhao on 2017/3/28. | ||
| 31 | - */ | ||
| 32 | -@Component | ||
| 33 | -@Path("/gps") | ||
| 34 | -@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) | ||
| 35 | -public class GpsRestService { | ||
| 36 | - | ||
| 37 | - @Autowired | ||
| 38 | - HistoryGpsDao historyGpsDao; | ||
| 39 | - | ||
| 40 | - @GET | ||
| 41 | - @Path("/{deviceId}") | ||
| 42 | - public GpsEntity findOne(@PathParam("deviceId") String deviceId) { | ||
| 43 | - return GpsRealDataBuffer.get(deviceId); | ||
| 44 | - } | ||
| 45 | - | ||
| 46 | - @GET | ||
| 47 | - @Path("/all") | ||
| 48 | - public Collection<GpsEntity> findAll() { | ||
| 49 | - return GpsRealDataBuffer.all(); | ||
| 50 | - } | ||
| 51 | - | ||
| 52 | - @GET | ||
| 53 | - @Path("/history/{nbbm}/{st}/{et}") | ||
| 54 | - public Collection<Map<String, Object>> history(@PathParam("nbbm") String nbbm | ||
| 55 | - , @PathParam("st") String st | ||
| 56 | - , @PathParam("et") String et) { | ||
| 57 | - return historyGpsDao.query(nbbm, Long.parseLong(st), Long.parseLong(et)); | ||
| 58 | - } | ||
| 59 | - | ||
| 60 | - @GET | ||
| 61 | - @Path("/gpsReport") | ||
| 62 | - public List<Map<String, Object>> gpsReport() { | ||
| 63 | - List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); | ||
| 64 | - Collection<GpsEntity> gpss = GpsRealDataBuffer.all(); | ||
| 65 | - Set<Integer> lines = BasicDataBuffer.getAllLine(); | ||
| 66 | - for (GpsEntity gps : gpss) { | ||
| 67 | - String device = gps.getDeviceId(); | ||
| 68 | - if (lines.contains(Integer.parseInt(gps.getLineId()))) { | ||
| 69 | - Map<String, Object> map = new HashMap<String, Object>(); | ||
| 70 | - map.put("vehicleNumberPlate", BasicDataBuffer.getPlateByDevice(device)); | ||
| 71 | - try { | ||
| 72 | - map.put("gpsDateTime", ThreadLocalDateUtil.formatDate(new Date(gps.getTimestamp()))); | ||
| 73 | - } catch (ParseException e) { | ||
| 74 | - // TODO Auto-generated catch block | ||
| 75 | - e.printStackTrace(); | ||
| 76 | - } | ||
| 77 | - map.put("gpsLongitude", gps.getLon()); | ||
| 78 | - map.put("gpsLatitude", gps.getLat()); | ||
| 79 | - map.put("gpsDirection", gps.getDirection()); | ||
| 80 | - map.put("gpsSpeed", gps.getSpeed()); | ||
| 81 | - map.put("gpsIsValid", gps.getValid()); | ||
| 82 | - map.put("lineId", gps.getLineId()); | ||
| 83 | - map.put("lineVersion", 0); | ||
| 84 | - map.put("upDownMark", gps.getUpDown()); | ||
| 85 | - map.put("stationOrder", getCurrStop(gps)); | ||
| 86 | - map.put("inOutStationState", gps.getInOrOutStation()); | ||
| 87 | - map.put("operationalState", gps.getState()); | ||
| 88 | - | ||
| 89 | - result.add(map); | ||
| 90 | - } | ||
| 91 | - } | ||
| 92 | - | ||
| 93 | - return result; | ||
| 94 | - } | ||
| 95 | - | ||
| 96 | - private static int getCurrStop(GpsEntity gps) { | ||
| 97 | - int res = 0; | ||
| 98 | - | ||
| 99 | - LineInfo line = BasicDataBuffer.getLineById(Integer.parseInt(gps.getLineId())); | ||
| 100 | - if (line != null) { | ||
| 101 | - List<StopInfo> upStops = new ArrayList<>(line.getStopsUp()), downStops = new ArrayList<>(line.getStopsDown()); | ||
| 102 | - int updown = gps.getUpDown(); | ||
| 103 | - // 环线、内外换的线路 | ||
| 104 | - boolean isRing = line.getLinePlayType() == 1; | ||
| 105 | - if (isRing) { | ||
| 106 | - updown = 0; | ||
| 107 | - downStops.clear(); | ||
| 108 | - } | ||
| 109 | - List<StopInfo> stops = new ArrayList<StopInfo>(); | ||
| 110 | - stops.addAll(upStops); | ||
| 111 | - stops.addAll(downStops); | ||
| 112 | - | ||
| 113 | - int idx = 1; | ||
| 114 | - if (updown == 0) { | ||
| 115 | - for (StopInfo stop : upStops) { | ||
| 116 | - if (gps.getStopNo().trim().equals(stop.getStationCod())) break; | ||
| 117 | - idx++; | ||
| 118 | - } | ||
| 119 | - } else { | ||
| 120 | - for (StopInfo stop : downStops) { | ||
| 121 | - if (gps.getStopNo().trim().equals(stop.getStationCod())) break; | ||
| 122 | - idx++; | ||
| 123 | - } | ||
| 124 | - } | ||
| 125 | - if (idx <= stops.size()) { | ||
| 126 | - res = idx; | ||
| 127 | - } | ||
| 128 | - } | ||
| 129 | - | ||
| 130 | - return res; | ||
| 131 | - } | ||
| 132 | -} | 1 | +package com.bsth.server_rs.gps; |
| 2 | + | ||
| 3 | +import java.text.ParseException; | ||
| 4 | +import java.util.ArrayList; | ||
| 5 | +import java.util.Collection; | ||
| 6 | +import java.util.Date; | ||
| 7 | +import java.util.HashMap; | ||
| 8 | +import java.util.List; | ||
| 9 | +import java.util.Map; | ||
| 10 | +import java.util.Set; | ||
| 11 | + | ||
| 12 | +import javax.ws.rs.GET; | ||
| 13 | +import javax.ws.rs.Path; | ||
| 14 | +import javax.ws.rs.PathParam; | ||
| 15 | +import javax.ws.rs.Produces; | ||
| 16 | +import javax.ws.rs.core.MediaType; | ||
| 17 | + | ||
| 18 | +import com.bsth.server_rs.gps.entity.HistoryArrivalEntity; | ||
| 19 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 20 | +import org.springframework.stereotype.Component; | ||
| 21 | + | ||
| 22 | +import com.bsth.server_rs.gps.buffer.BasicDataBuffer; | ||
| 23 | +import com.bsth.server_rs.gps.buffer.GpsRealDataBuffer; | ||
| 24 | +import com.bsth.server_rs.gps.dao.HistoryGpsDao; | ||
| 25 | +import com.bsth.server_rs.gps.entity.GpsEntity; | ||
| 26 | +import com.bsth.server_rs.gps.entity.LineInfo; | ||
| 27 | +import com.bsth.server_rs.gps.entity.StopInfo; | ||
| 28 | +import com.bsth.util.ThreadLocalDateUtil; | ||
| 29 | + | ||
| 30 | +/** | ||
| 31 | + * Created by panzhao on 2017/3/28. | ||
| 32 | + */ | ||
| 33 | +@Component | ||
| 34 | +@Path("/gps") | ||
| 35 | +@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) | ||
| 36 | +public class GpsRestService { | ||
| 37 | + | ||
| 38 | + @Autowired | ||
| 39 | + HistoryGpsDao historyGpsDao; | ||
| 40 | + | ||
| 41 | + @GET | ||
| 42 | + @Path("/{deviceId}") | ||
| 43 | + public GpsEntity findOne(@PathParam("deviceId") String deviceId) { | ||
| 44 | + return GpsRealDataBuffer.get(deviceId); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + @GET | ||
| 48 | + @Path("/all") | ||
| 49 | + public Collection<GpsEntity> findAll() { | ||
| 50 | + return GpsRealDataBuffer.all(); | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + @GET | ||
| 54 | + @Path("/history/{nbbm}/{st}/{et}") | ||
| 55 | + public Collection<Map<String, Object>> history(@PathParam("nbbm") String nbbm | ||
| 56 | + , @PathParam("st") String st | ||
| 57 | + , @PathParam("et") String et) { | ||
| 58 | + return historyGpsDao.query(nbbm, Long.parseLong(st), Long.parseLong(et)); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + @GET | ||
| 62 | + @Path("/history-arrival/{line}/{st}/{et}") | ||
| 63 | + public List<HistoryArrivalEntity> historyArrival(@PathParam("line") String line | ||
| 64 | + , @PathParam("st") String st | ||
| 65 | + , @PathParam("et") String et) { | ||
| 66 | + return historyGpsDao.queryArrival(line, Long.parseLong(st), Long.parseLong(et)); | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + @GET | ||
| 70 | + @Path("/gpsReport") | ||
| 71 | + public List<Map<String, Object>> gpsReport() { | ||
| 72 | + List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); | ||
| 73 | + Collection<GpsEntity> gpss = GpsRealDataBuffer.all(); | ||
| 74 | + Set<Integer> lines = BasicDataBuffer.getAllLine(); | ||
| 75 | + for (GpsEntity gps : gpss) { | ||
| 76 | + String device = gps.getDeviceId(); | ||
| 77 | + if (lines.contains(Integer.parseInt(gps.getLineId()))) { | ||
| 78 | + Map<String, Object> map = new HashMap<String, Object>(); | ||
| 79 | + map.put("vehicleNumberPlate", BasicDataBuffer.getPlateByDevice(device)); | ||
| 80 | + try { | ||
| 81 | + map.put("gpsDateTime", ThreadLocalDateUtil.formatDate(new Date(gps.getTimestamp()))); | ||
| 82 | + } catch (ParseException e) { | ||
| 83 | + // TODO Auto-generated catch block | ||
| 84 | + e.printStackTrace(); | ||
| 85 | + } | ||
| 86 | + map.put("gpsLongitude", gps.getLon()); | ||
| 87 | + map.put("gpsLatitude", gps.getLat()); | ||
| 88 | + map.put("gpsDirection", gps.getDirection()); | ||
| 89 | + map.put("gpsSpeed", gps.getSpeed()); | ||
| 90 | + map.put("gpsIsValid", gps.getValid()); | ||
| 91 | + map.put("lineId", gps.getLineId()); | ||
| 92 | + map.put("lineVersion", 0); | ||
| 93 | + map.put("upDownMark", gps.getUpDown()); | ||
| 94 | + map.put("stationOrder", getCurrStop(gps)); | ||
| 95 | + map.put("inOutStationState", gps.getInOrOutStation()); | ||
| 96 | + map.put("operationalState", gps.getState()); | ||
| 97 | + | ||
| 98 | + result.add(map); | ||
| 99 | + } | ||
| 100 | + } | ||
| 101 | + | ||
| 102 | + return result; | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + private static int getCurrStop(GpsEntity gps) { | ||
| 106 | + int res = 0; | ||
| 107 | + | ||
| 108 | + LineInfo line = BasicDataBuffer.getLineById(Integer.parseInt(gps.getLineId())); | ||
| 109 | + if (line != null) { | ||
| 110 | + List<StopInfo> upStops = new ArrayList<>(line.getStopsUp()), downStops = new ArrayList<>(line.getStopsDown()); | ||
| 111 | + int updown = gps.getUpDown(); | ||
| 112 | + // 环线、内外换的线路 | ||
| 113 | + boolean isRing = line.getLinePlayType() == 1; | ||
| 114 | + if (isRing) { | ||
| 115 | + updown = 0; | ||
| 116 | + downStops.clear(); | ||
| 117 | + } | ||
| 118 | + List<StopInfo> stops = new ArrayList<StopInfo>(); | ||
| 119 | + stops.addAll(upStops); | ||
| 120 | + stops.addAll(downStops); | ||
| 121 | + | ||
| 122 | + int idx = 1; | ||
| 123 | + if (updown == 0) { | ||
| 124 | + for (StopInfo stop : upStops) { | ||
| 125 | + if (gps.getStopNo().trim().equals(stop.getStationCod())) break; | ||
| 126 | + idx++; | ||
| 127 | + } | ||
| 128 | + } else { | ||
| 129 | + for (StopInfo stop : downStops) { | ||
| 130 | + if (gps.getStopNo().trim().equals(stop.getStationCod())) break; | ||
| 131 | + idx++; | ||
| 132 | + } | ||
| 133 | + } | ||
| 134 | + if (idx <= stops.size()) { | ||
| 135 | + res = idx; | ||
| 136 | + } | ||
| 137 | + } | ||
| 138 | + | ||
| 139 | + return res; | ||
| 140 | + } | ||
| 141 | +} |
src/main/java/com/bsth/server_rs/gps/dao/HistoryGpsDao.java
| 1 | -package com.bsth.server_rs.gps.dao; | ||
| 2 | - | ||
| 3 | -import com.bsth.redis.util.DateUtils; | ||
| 4 | -import com.bsth.server_rs.base_info.car.Car; | ||
| 5 | -import com.bsth.server_rs.base_info.car.buffer.CarBufferData; | ||
| 6 | -import com.bsth.server_rs.gps.entity.DeviceChange; | ||
| 7 | -import com.bsth.server_rs.gps.entity.HistoryGpsEntity; | ||
| 8 | -import com.bsth.util.DBUtils_MS; | ||
| 9 | -import org.apache.commons.lang3.StringUtils; | ||
| 10 | -import org.joda.time.format.DateTimeFormat; | ||
| 11 | -import org.joda.time.format.DateTimeFormatter; | ||
| 12 | -import org.slf4j.Logger; | ||
| 13 | -import org.slf4j.LoggerFactory; | ||
| 14 | -import org.springframework.beans.factory.annotation.Autowired; | ||
| 15 | -import org.springframework.jdbc.core.BeanPropertyRowMapper; | ||
| 16 | -import org.springframework.jdbc.core.JdbcTemplate; | ||
| 17 | -import org.springframework.stereotype.Component; | ||
| 18 | - | ||
| 19 | -import java.util.*; | ||
| 20 | - | ||
| 21 | -/** | ||
| 22 | - * Created by panzhao on 2017/8/31. | ||
| 23 | - */ | ||
| 24 | -@Component | ||
| 25 | -public class HistoryGpsDao { | ||
| 26 | - | ||
| 27 | - Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 28 | - | ||
| 29 | - @Autowired | ||
| 30 | - JdbcTemplate jdbcTemplate; | ||
| 31 | - | ||
| 32 | - /** | ||
| 33 | - * 最大查询间隔 | ||
| 34 | - */ | ||
| 35 | - private static final long GPS_RANGE = 1000 * 60 * 60 * 24; | ||
| 36 | - | ||
| 37 | - private static DateTimeFormatter fmtyyyy = DateTimeFormat.forPattern("yyyy"); | ||
| 38 | - | ||
| 39 | - public Collection<Map<String, Object>> query(String nbbm, Long st, Long et) { | ||
| 40 | - List<Map<String, Object>> list = new ArrayList<>(); | ||
| 41 | - if (et - st > GPS_RANGE) | ||
| 42 | - return list; | ||
| 43 | - | ||
| 44 | - // day_of_year 分区字段 | ||
| 45 | - Calendar sCal = Calendar.getInstance(); | ||
| 46 | - sCal.setTime(new Date(st)); | ||
| 47 | - int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR); | ||
| 48 | - Calendar eCal = Calendar.getInstance(); | ||
| 49 | - eCal.setTime(new Date(et)); | ||
| 50 | - int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR); | ||
| 51 | - | ||
| 52 | - List<DeviceChange> dcs = findDeviceChangeLogs(nbbm, et, st); | ||
| 53 | - | ||
| 54 | - //按年分表 | ||
| 55 | - String tableName = "bsth_c_gps_info_" + fmtyyyy.print(st); | ||
| 56 | - | ||
| 57 | - StringBuilder sql = new StringBuilder(""); | ||
| 58 | - long t1,t2; | ||
| 59 | - DeviceChange dc; | ||
| 60 | - for(int i = 0,len=dcs.size(); i < len; i++){ | ||
| 61 | - t1 = st; | ||
| 62 | - t2 = et; | ||
| 63 | - dc = dcs.get(i); | ||
| 64 | - if(dc.getSt() > st) | ||
| 65 | - t1 = dc.getSt(); | ||
| 66 | - if(dc.getEt() < et && dc.getEt()!=0) | ||
| 67 | - t2 = dc.getEt(); | ||
| 68 | - | ||
| 69 | - sql.append("select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO,DIRECTION,LINE_ID,SPEED_GPS,SECTION_CODE from "+tableName+" where days_year in ("+sDayOfYear+","+eDayOfYear+") " + | ||
| 70 | - " and device_id='"+dc.getDevice()+"' and ts >= "+t1+" and ts <= "+t2+" "); | ||
| 71 | - | ||
| 72 | - if(i == len - 1) | ||
| 73 | - sql.append(" ORDER BY device_id,ts,stop_no"); | ||
| 74 | - else | ||
| 75 | - sql.append(" UNION "); | ||
| 76 | - } | ||
| 77 | - | ||
| 78 | - logger.info("轨迹回放 nbbm: " + nbbm + " -st: " + st + " -et: " + et + " -sql: " + sql.toString()); | ||
| 79 | - | ||
| 80 | - //查询GPS数据 | ||
| 81 | - JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); | ||
| 82 | - List<Map<String, Object>> dataList = jdbcTemplate_ms.queryForList(sql.toString()); | ||
| 83 | - | ||
| 84 | - Float lon, lat; | ||
| 85 | - int inOutStop; | ||
| 86 | - long serviceState; | ||
| 87 | - | ||
| 88 | - Map<String, Object> map; | ||
| 89 | - for(Map<String, Object> rs : dataList){ | ||
| 90 | - serviceState = map_get_long(rs, "SERVICE_STATE"); | ||
| 91 | - if(getGpsValid(serviceState) == 1) | ||
| 92 | - continue; | ||
| 93 | - | ||
| 94 | - map = new HashMap<>(); | ||
| 95 | - | ||
| 96 | - lon = map_get_float(rs, "LON"); | ||
| 97 | - lat = map_get_float(rs, "LAT"); | ||
| 98 | - //原始坐标 | ||
| 99 | - map.put("lon", lon); | ||
| 100 | - map.put("lat", lat); | ||
| 101 | - | ||
| 102 | - map.put("deviceId", map_get_str(rs, "DEVICE_ID")); | ||
| 103 | - map.put("ts", map_get_long(rs, "TS")); | ||
| 104 | - map.put("timestamp", map_get_long(rs, "TS")); | ||
| 105 | - map.put("stopNo", map_get_str(rs, "STOP_NO")); | ||
| 106 | - map.put("direction", map_get_float(rs,"DIRECTION")); | ||
| 107 | - | ||
| 108 | - map.put("lineId", map_get_str(rs, "LINE_ID")); | ||
| 109 | - map.put("speed", map_get_float(rs,"SPEED_GPS")); | ||
| 110 | - | ||
| 111 | - inOutStop = Integer.parseInt(rs.get("INOUT_STOP").toString()); | ||
| 112 | - map.put("inout_stop", inOutStop); | ||
| 113 | - | ||
| 114 | - | ||
| 115 | - map.put("nbbm", nbbm); | ||
| 116 | - map.put("state", getService(serviceState)); | ||
| 117 | - // 上下行 | ||
| 118 | - map.put("upDown", getUpOrDown(serviceState)); | ||
| 119 | - //路段编码 | ||
| 120 | - map.put("section_code", map_get_str(rs,"SECTION_CODE")); | ||
| 121 | - list.add(map); | ||
| 122 | - } | ||
| 123 | - // 按时间排序 | ||
| 124 | - Collections.sort(list, new Comparator<Map<String, Object>>() { | ||
| 125 | - | ||
| 126 | - @Override | ||
| 127 | - public int compare(Map<String, Object> o1, Map<String, Object> o2) { | ||
| 128 | - return (int) (Long.parseLong(o1.get("ts").toString()) - Long.parseLong(o2.get("ts").toString())); | ||
| 129 | - } | ||
| 130 | - }); | ||
| 131 | - | ||
| 132 | - return list; | ||
| 133 | - } | ||
| 134 | - | ||
| 135 | - | ||
| 136 | - private List<DeviceChange> findDeviceChangeLogs(String nbbm, long et, long st){ | ||
| 137 | - List<DeviceChange> dcs = null; | ||
| 138 | - List<DeviceChange> rs = new ArrayList<>(); | ||
| 139 | - try{ | ||
| 140 | - | ||
| 141 | - dcs = jdbcTemplate.query("select cl_zbh as nbbm,new_device_no as device,old_device_no as old_device,UNIX_TIMESTAMP(qyrq) * 1000 as st from bsth_c_car_device where is_cancel=0 and cl_zbh='"+nbbm+"' order by qyrq" | ||
| 142 | - , BeanPropertyRowMapper.newInstance(DeviceChange.class)); | ||
| 143 | - | ||
| 144 | - | ||
| 145 | - //生成一条初始记录 | ||
| 146 | - if(dcs.size() > 0){ | ||
| 147 | - DeviceChange first = dcs.get(0); | ||
| 148 | - | ||
| 149 | - DeviceChange initDv = new DeviceChange(); | ||
| 150 | - initDv.setDevice(first.getOldDevice()); | ||
| 151 | - if(StringUtils.isNotEmpty(initDv.getDevice())){ | ||
| 152 | - initDv.setNbbm(first.getNbbm()); | ||
| 153 | - initDv.setSt(0); | ||
| 154 | - initDv.setEt(first.getSt()); | ||
| 155 | - dcs.add(0, initDv); | ||
| 156 | - } | ||
| 157 | - } | ||
| 158 | - for(int i = 0,len=dcs.size(); i < len - 1; i++){ | ||
| 159 | - dcs.get(i).setEt(dcs.get(i + 1).getSt()); | ||
| 160 | - } | ||
| 161 | - | ||
| 162 | - for(DeviceChange dc : dcs){ | ||
| 163 | - if(dc.getEt() < st && dc.getEt() != 0) | ||
| 164 | - continue; | ||
| 165 | - if(dc.getSt() > et) | ||
| 166 | - continue; | ||
| 167 | - | ||
| 168 | - rs.add(dc); | ||
| 169 | - } | ||
| 170 | - | ||
| 171 | - //没有设备变更记录,则参考车辆信息上的设备号 | ||
| 172 | - if(null == rs || rs.size() == 0){ | ||
| 173 | - Car car = CarBufferData.findOne(nbbm); | ||
| 174 | - | ||
| 175 | - if(null != car){ | ||
| 176 | - DeviceChange dc = new DeviceChange(); | ||
| 177 | - dc.setNbbm(nbbm); | ||
| 178 | - dc.setDevice(car.getEquipmentCode()); | ||
| 179 | - dc.setSt(st); | ||
| 180 | - dc.setEt(et); | ||
| 181 | - dc.setType(1); | ||
| 182 | - | ||
| 183 | - rs.add(dc); | ||
| 184 | - } | ||
| 185 | - } | ||
| 186 | - }catch (Exception e){ | ||
| 187 | - logger.error("", e); | ||
| 188 | - } | ||
| 189 | - return rs; | ||
| 190 | - } | ||
| 191 | - | ||
| 192 | - private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"); | ||
| 193 | - private List<HistoryGpsEntity> query(String deviceId, Calendar sCal, Calendar eCal) { | ||
| 194 | - int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR); | ||
| 195 | - int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR); | ||
| 196 | - long st = sCal.getTimeInMillis(); | ||
| 197 | - long et = eCal.getTimeInMillis(); | ||
| 198 | - | ||
| 199 | - List<HistoryGpsEntity> list = new ArrayList<>(); | ||
| 200 | - // 如果是同一天 | ||
| 201 | - if (sDayOfYear == eDayOfYear) { | ||
| 202 | - list = query(sDayOfYear, st, et, deviceId); | ||
| 203 | - } else { | ||
| 204 | - // 跨天 | ||
| 205 | - Long tempSt, tempEt; | ||
| 206 | - for (int i = sDayOfYear; i <= eDayOfYear; i++) { | ||
| 207 | - | ||
| 208 | - if (i == sDayOfYear) { | ||
| 209 | - tempSt = st; | ||
| 210 | - tempEt = fmtyyyyMMdd.parseMillis(fmtyyyyMMdd.print(tempSt)) + 1000 * 60 * 60 * 24; | ||
| 211 | - } else if (i == eDayOfYear) { | ||
| 212 | - tempSt = fmtyyyyMMdd.parseMillis(fmtyyyyMMdd.print(et)); | ||
| 213 | - tempEt = et; | ||
| 214 | - } else { | ||
| 215 | - tempSt = DateUtils.getTimesmorning(sCal) * 1000; | ||
| 216 | - tempEt = DateUtils.getTimesnight(sCal); | ||
| 217 | - } | ||
| 218 | - | ||
| 219 | - list.addAll(query(sDayOfYear, tempSt, tempEt, deviceId)); | ||
| 220 | - // 加一天 | ||
| 221 | - sCal.add(Calendar.DATE, 1); | ||
| 222 | - } | ||
| 223 | - } | ||
| 224 | - return list; | ||
| 225 | - } | ||
| 226 | - | ||
| 227 | - private List<HistoryGpsEntity> query(int dayOfYear, Long st, Long et, String deviceId) { | ||
| 228 | - String sql = "select device_id,line_id,service_state,direction,lon,lat,ts,stop_no,speed_gps as speed,inout_stop,section_code from bsth_c_gps_info where days_year=" + dayOfYear + " and device_id='"+deviceId+"' and ts > " + st + " and ts < " + et; | ||
| 229 | - | ||
| 230 | - JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); | ||
| 231 | - List<HistoryGpsEntity> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(HistoryGpsEntity.class)); | ||
| 232 | - return list; | ||
| 233 | - } | ||
| 234 | - | ||
| 235 | - /** | ||
| 236 | - * 王通 2016/6/29 9:23:24 获取车辆线路上下行 | ||
| 237 | - * | ||
| 238 | - * @return -1无效 0上行 1下行 | ||
| 239 | - */ | ||
| 240 | - private static byte getUpOrDown(long serviceState) { | ||
| 241 | - if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000 | ||
| 242 | - || (serviceState & 0x01000000) == 0x01000000 || (serviceState & 0x08000000) == 0x08000000) | ||
| 243 | - return -1; | ||
| 244 | - return (byte) (((serviceState & 0x10000000) == 0x10000000) ? 1 : 0); | ||
| 245 | - } | ||
| 246 | - | ||
| 247 | - /** | ||
| 248 | - * 获取运营状态 | ||
| 249 | - * | ||
| 250 | - * @return -1无效 0运营 1未运营 | ||
| 251 | - */ | ||
| 252 | - private static byte getService(long serviceState) { | ||
| 253 | - if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000) | ||
| 254 | - return -1; | ||
| 255 | - return (byte) (((serviceState & 0x02000000) == 0x02000000) ? 1 : 0); | ||
| 256 | - } | ||
| 257 | - | ||
| 258 | - private String map_get_str(Map<String, Object> map, String key){ | ||
| 259 | - return map.containsKey(key)?map.get(key).toString():""; | ||
| 260 | - } | ||
| 261 | - | ||
| 262 | - private Long map_get_long(Map<String, Object> map, String key){ | ||
| 263 | - return map.containsKey(key)?Long.parseLong(map.get(key).toString()):-1; | ||
| 264 | - } | ||
| 265 | - | ||
| 266 | - private Float map_get_float(Map<String, Object> map, String key){ | ||
| 267 | - return map.containsKey(key)?Float.parseFloat(map.get(key).toString()):-1; | ||
| 268 | - } | ||
| 269 | - | ||
| 270 | - public static byte getGpsValid(long serviceState) { | ||
| 271 | - return (byte)(((serviceState & 0x80000000) == 0x80000000) ? 1 : 0); | ||
| 272 | - } | ||
| 273 | -} | 1 | +package com.bsth.server_rs.gps.dao; |
| 2 | + | ||
| 3 | +import com.bsth.redis.util.DateUtils; | ||
| 4 | +import com.bsth.server_rs.base_info.car.Car; | ||
| 5 | +import com.bsth.server_rs.base_info.car.buffer.CarBufferData; | ||
| 6 | +import com.bsth.server_rs.gps.entity.DeviceChange; | ||
| 7 | +import com.bsth.server_rs.gps.entity.HistoryArrivalEntity; | ||
| 8 | +import com.bsth.server_rs.gps.entity.HistoryGpsEntity; | ||
| 9 | +import com.bsth.util.DBUtils_MS; | ||
| 10 | +import org.apache.commons.lang3.StringUtils; | ||
| 11 | +import org.joda.time.format.DateTimeFormat; | ||
| 12 | +import org.joda.time.format.DateTimeFormatter; | ||
| 13 | +import org.slf4j.Logger; | ||
| 14 | +import org.slf4j.LoggerFactory; | ||
| 15 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 16 | +import org.springframework.jdbc.core.BeanPropertyRowMapper; | ||
| 17 | +import org.springframework.jdbc.core.JdbcTemplate; | ||
| 18 | +import org.springframework.stereotype.Component; | ||
| 19 | + | ||
| 20 | +import java.util.*; | ||
| 21 | + | ||
| 22 | +/** | ||
| 23 | + * Created by panzhao on 2017/8/31. | ||
| 24 | + */ | ||
| 25 | +@Component | ||
| 26 | +public class HistoryGpsDao { | ||
| 27 | + | ||
| 28 | + Logger logger = LoggerFactory.getLogger(this.getClass()); | ||
| 29 | + | ||
| 30 | + @Autowired | ||
| 31 | + JdbcTemplate jdbcTemplate; | ||
| 32 | + | ||
| 33 | + /** | ||
| 34 | + * 最大查询间隔 | ||
| 35 | + */ | ||
| 36 | + private static final long GPS_RANGE = 1000 * 60 * 60 * 24; | ||
| 37 | + | ||
| 38 | + private static DateTimeFormatter fmtyyyy = DateTimeFormat.forPattern("yyyy"); | ||
| 39 | + | ||
| 40 | + public Collection<Map<String, Object>> query(String nbbm, Long st, Long et) { | ||
| 41 | + List<Map<String, Object>> list = new ArrayList<>(); | ||
| 42 | + if (et - st > GPS_RANGE) | ||
| 43 | + return list; | ||
| 44 | + | ||
| 45 | + // day_of_year 分区字段 | ||
| 46 | + Calendar sCal = Calendar.getInstance(); | ||
| 47 | + sCal.setTime(new Date(st)); | ||
| 48 | + int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR); | ||
| 49 | + Calendar eCal = Calendar.getInstance(); | ||
| 50 | + eCal.setTime(new Date(et)); | ||
| 51 | + int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR); | ||
| 52 | + | ||
| 53 | + List<DeviceChange> dcs = findDeviceChangeLogs(nbbm, et, st); | ||
| 54 | + | ||
| 55 | + //按年分表 | ||
| 56 | + String tableName = "bsth_c_gps_info_" + fmtyyyy.print(st); | ||
| 57 | + | ||
| 58 | + StringBuilder sql = new StringBuilder(""); | ||
| 59 | + long t1,t2; | ||
| 60 | + DeviceChange dc; | ||
| 61 | + for(int i = 0,len=dcs.size(); i < len; i++){ | ||
| 62 | + t1 = st; | ||
| 63 | + t2 = et; | ||
| 64 | + dc = dcs.get(i); | ||
| 65 | + if(dc.getSt() > st) | ||
| 66 | + t1 = dc.getSt(); | ||
| 67 | + if(dc.getEt() < et && dc.getEt()!=0) | ||
| 68 | + t2 = dc.getEt(); | ||
| 69 | + | ||
| 70 | + sql.append("select DEVICE_ID,LON,LAT,TS,INOUT_STOP,SERVICE_STATE ,STOP_NO,DIRECTION,LINE_ID,SPEED_GPS,SECTION_CODE from "+tableName+" where days_year in ("+sDayOfYear+","+eDayOfYear+") " + | ||
| 71 | + " and device_id='"+dc.getDevice()+"' and ts >= "+t1+" and ts <= "+t2+" "); | ||
| 72 | + | ||
| 73 | + if(i == len - 1) | ||
| 74 | + sql.append(" ORDER BY device_id,ts,stop_no"); | ||
| 75 | + else | ||
| 76 | + sql.append(" UNION "); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + logger.info("轨迹回放 nbbm: " + nbbm + " -st: " + st + " -et: " + et + " -sql: " + sql.toString()); | ||
| 80 | + | ||
| 81 | + //查询GPS数据 | ||
| 82 | + JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); | ||
| 83 | + List<Map<String, Object>> dataList = jdbcTemplate_ms.queryForList(sql.toString()); | ||
| 84 | + | ||
| 85 | + Float lon, lat; | ||
| 86 | + int inOutStop; | ||
| 87 | + long serviceState; | ||
| 88 | + | ||
| 89 | + Map<String, Object> map; | ||
| 90 | + for(Map<String, Object> rs : dataList){ | ||
| 91 | + serviceState = map_get_long(rs, "SERVICE_STATE"); | ||
| 92 | + if(getGpsValid(serviceState) == 1) | ||
| 93 | + continue; | ||
| 94 | + | ||
| 95 | + map = new HashMap<>(); | ||
| 96 | + | ||
| 97 | + lon = map_get_float(rs, "LON"); | ||
| 98 | + lat = map_get_float(rs, "LAT"); | ||
| 99 | + //原始坐标 | ||
| 100 | + map.put("lon", lon); | ||
| 101 | + map.put("lat", lat); | ||
| 102 | + | ||
| 103 | + map.put("deviceId", map_get_str(rs, "DEVICE_ID")); | ||
| 104 | + map.put("ts", map_get_long(rs, "TS")); | ||
| 105 | + map.put("timestamp", map_get_long(rs, "TS")); | ||
| 106 | + map.put("stopNo", map_get_str(rs, "STOP_NO")); | ||
| 107 | + map.put("direction", map_get_float(rs,"DIRECTION")); | ||
| 108 | + | ||
| 109 | + map.put("lineId", map_get_str(rs, "LINE_ID")); | ||
| 110 | + map.put("speed", map_get_float(rs,"SPEED_GPS")); | ||
| 111 | + | ||
| 112 | + inOutStop = Integer.parseInt(rs.get("INOUT_STOP").toString()); | ||
| 113 | + map.put("inout_stop", inOutStop); | ||
| 114 | + | ||
| 115 | + | ||
| 116 | + map.put("nbbm", nbbm); | ||
| 117 | + map.put("state", getService(serviceState)); | ||
| 118 | + // 上下行 | ||
| 119 | + map.put("upDown", getUpOrDown(serviceState)); | ||
| 120 | + //路段编码 | ||
| 121 | + map.put("section_code", map_get_str(rs,"SECTION_CODE")); | ||
| 122 | + list.add(map); | ||
| 123 | + } | ||
| 124 | + // 按时间排序 | ||
| 125 | + Collections.sort(list, new Comparator<Map<String, Object>>() { | ||
| 126 | + | ||
| 127 | + @Override | ||
| 128 | + public int compare(Map<String, Object> o1, Map<String, Object> o2) { | ||
| 129 | + return (int) (Long.parseLong(o1.get("ts").toString()) - Long.parseLong(o2.get("ts").toString())); | ||
| 130 | + } | ||
| 131 | + }); | ||
| 132 | + | ||
| 133 | + return list; | ||
| 134 | + } | ||
| 135 | + | ||
| 136 | + public List<HistoryArrivalEntity> queryArrival(String line, Long st, Long et) { | ||
| 137 | + if (et - st > GPS_RANGE) | ||
| 138 | + return new ArrayList<>(); | ||
| 139 | + | ||
| 140 | + // day_of_year 分区字段 | ||
| 141 | + Calendar sCal = Calendar.getInstance(); | ||
| 142 | + sCal.setTime(new Date(st)); | ||
| 143 | + int startWeek = sCal.get(Calendar.WEEK_OF_YEAR), startYear = sCal.get(Calendar.YEAR); | ||
| 144 | + Calendar eCal = Calendar.getInstance(); | ||
| 145 | + eCal.setTime(new Date(et)); | ||
| 146 | + int endWeek = eCal.get(Calendar.WEEK_OF_YEAR), endYear = eCal.get(Calendar.YEAR); | ||
| 147 | + | ||
| 148 | + //按年分表 | ||
| 149 | + String tableName1 = "bsth_c_arrival_info_" + startYear, tableName2 = "bsth_c_arrival_info_" + endYear; | ||
| 150 | + | ||
| 151 | + String sql = "SELECT device_id, line_id, stop_no, ts, up_down, in_out FROM %s WHERE weeks_year = %d AND line_id = %s AND ts BETWEEN %d AND %d"; | ||
| 152 | + StringBuilder builder = new StringBuilder(String.format(sql, tableName1, startWeek, line, st, et)); | ||
| 153 | + if (startYear == endYear) { | ||
| 154 | + if (startWeek != endWeek) { | ||
| 155 | + builder.append(" UNION ").append(String.format(sql, tableName1, endWeek, line, st, et)); | ||
| 156 | + } | ||
| 157 | + } else { | ||
| 158 | + builder.append(" UNION ").append(String.format(sql, tableName2, endWeek, line, st, et)); | ||
| 159 | + } | ||
| 160 | + | ||
| 161 | + logger.info("到离站查询 line: {} -st: {} -et: {} -sql: {}", line, st, et, builder); | ||
| 162 | + | ||
| 163 | + //查询GPS数据 | ||
| 164 | + JdbcTemplate jdbcTemplate_ms = new JdbcTemplate(DBUtils_MS.getDataSource()); | ||
| 165 | + return jdbcTemplate_ms.query(builder.toString(), BeanPropertyRowMapper.newInstance(HistoryArrivalEntity.class)); | ||
| 166 | + } | ||
| 167 | + | ||
| 168 | + | ||
| 169 | + private List<DeviceChange> findDeviceChangeLogs(String nbbm, long et, long st){ | ||
| 170 | + List<DeviceChange> dcs = null; | ||
| 171 | + List<DeviceChange> rs = new ArrayList<>(); | ||
| 172 | + try{ | ||
| 173 | + | ||
| 174 | + dcs = jdbcTemplate.query("select cl_zbh as nbbm,new_device_no as device,old_device_no as old_device,UNIX_TIMESTAMP(qyrq) * 1000 as st from bsth_c_car_device where is_cancel=0 and cl_zbh='"+nbbm+"' order by qyrq" | ||
| 175 | + , BeanPropertyRowMapper.newInstance(DeviceChange.class)); | ||
| 176 | + | ||
| 177 | + | ||
| 178 | + //生成一条初始记录 | ||
| 179 | + if(dcs.size() > 0){ | ||
| 180 | + DeviceChange first = dcs.get(0); | ||
| 181 | + | ||
| 182 | + DeviceChange initDv = new DeviceChange(); | ||
| 183 | + initDv.setDevice(first.getOldDevice()); | ||
| 184 | + if(StringUtils.isNotEmpty(initDv.getDevice())){ | ||
| 185 | + initDv.setNbbm(first.getNbbm()); | ||
| 186 | + initDv.setSt(0); | ||
| 187 | + initDv.setEt(first.getSt()); | ||
| 188 | + dcs.add(0, initDv); | ||
| 189 | + } | ||
| 190 | + } | ||
| 191 | + for(int i = 0,len=dcs.size(); i < len - 1; i++){ | ||
| 192 | + dcs.get(i).setEt(dcs.get(i + 1).getSt()); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + for(DeviceChange dc : dcs){ | ||
| 196 | + if(dc.getEt() < st && dc.getEt() != 0) | ||
| 197 | + continue; | ||
| 198 | + if(dc.getSt() > et) | ||
| 199 | + continue; | ||
| 200 | + | ||
| 201 | + rs.add(dc); | ||
| 202 | + } | ||
| 203 | + | ||
| 204 | + //没有设备变更记录,则参考车辆信息上的设备号 | ||
| 205 | + if(null == rs || rs.size() == 0){ | ||
| 206 | + Car car = CarBufferData.findOne(nbbm); | ||
| 207 | + | ||
| 208 | + if(null != car){ | ||
| 209 | + DeviceChange dc = new DeviceChange(); | ||
| 210 | + dc.setNbbm(nbbm); | ||
| 211 | + dc.setDevice(car.getEquipmentCode()); | ||
| 212 | + dc.setSt(st); | ||
| 213 | + dc.setEt(et); | ||
| 214 | + dc.setType(1); | ||
| 215 | + | ||
| 216 | + rs.add(dc); | ||
| 217 | + } | ||
| 218 | + } | ||
| 219 | + }catch (Exception e){ | ||
| 220 | + logger.error("", e); | ||
| 221 | + } | ||
| 222 | + return rs; | ||
| 223 | + } | ||
| 224 | + | ||
| 225 | + private static DateTimeFormatter fmtyyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd"); | ||
| 226 | + private List<HistoryGpsEntity> query(String deviceId, Calendar sCal, Calendar eCal) { | ||
| 227 | + int sDayOfYear = sCal.get(Calendar.DAY_OF_YEAR); | ||
| 228 | + int eDayOfYear = eCal.get(Calendar.DAY_OF_YEAR); | ||
| 229 | + long st = sCal.getTimeInMillis(); | ||
| 230 | + long et = eCal.getTimeInMillis(); | ||
| 231 | + | ||
| 232 | + List<HistoryGpsEntity> list = new ArrayList<>(); | ||
| 233 | + // 如果是同一天 | ||
| 234 | + if (sDayOfYear == eDayOfYear) { | ||
| 235 | + list = query(sDayOfYear, st, et, deviceId); | ||
| 236 | + } else { | ||
| 237 | + // 跨天 | ||
| 238 | + Long tempSt, tempEt; | ||
| 239 | + for (int i = sDayOfYear; i <= eDayOfYear; i++) { | ||
| 240 | + | ||
| 241 | + if (i == sDayOfYear) { | ||
| 242 | + tempSt = st; | ||
| 243 | + tempEt = fmtyyyyMMdd.parseMillis(fmtyyyyMMdd.print(tempSt)) + 1000 * 60 * 60 * 24; | ||
| 244 | + } else if (i == eDayOfYear) { | ||
| 245 | + tempSt = fmtyyyyMMdd.parseMillis(fmtyyyyMMdd.print(et)); | ||
| 246 | + tempEt = et; | ||
| 247 | + } else { | ||
| 248 | + tempSt = DateUtils.getTimesmorning(sCal) * 1000; | ||
| 249 | + tempEt = DateUtils.getTimesnight(sCal); | ||
| 250 | + } | ||
| 251 | + | ||
| 252 | + list.addAll(query(sDayOfYear, tempSt, tempEt, deviceId)); | ||
| 253 | + // 加一天 | ||
| 254 | + sCal.add(Calendar.DATE, 1); | ||
| 255 | + } | ||
| 256 | + } | ||
| 257 | + return list; | ||
| 258 | + } | ||
| 259 | + | ||
| 260 | + private List<HistoryGpsEntity> query(int dayOfYear, Long st, Long et, String deviceId) { | ||
| 261 | + String sql = "select device_id,line_id,service_state,direction,lon,lat,ts,stop_no,speed_gps as speed,inout_stop,section_code from bsth_c_gps_info where days_year=" + dayOfYear + " and device_id='"+deviceId+"' and ts > " + st + " and ts < " + et; | ||
| 262 | + | ||
| 263 | + JdbcTemplate jdbcTemplate = new JdbcTemplate(DBUtils_MS.getDataSource()); | ||
| 264 | + List<HistoryGpsEntity> list = jdbcTemplate.query(sql, BeanPropertyRowMapper.newInstance(HistoryGpsEntity.class)); | ||
| 265 | + return list; | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + /** | ||
| 269 | + * 王通 2016/6/29 9:23:24 获取车辆线路上下行 | ||
| 270 | + * | ||
| 271 | + * @return -1无效 0上行 1下行 | ||
| 272 | + */ | ||
| 273 | + private static byte getUpOrDown(long serviceState) { | ||
| 274 | + if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000 | ||
| 275 | + || (serviceState & 0x01000000) == 0x01000000 || (serviceState & 0x08000000) == 0x08000000) | ||
| 276 | + return -1; | ||
| 277 | + return (byte) (((serviceState & 0x10000000) == 0x10000000) ? 1 : 0); | ||
| 278 | + } | ||
| 279 | + | ||
| 280 | + /** | ||
| 281 | + * 获取运营状态 | ||
| 282 | + * | ||
| 283 | + * @return -1无效 0运营 1未运营 | ||
| 284 | + */ | ||
| 285 | + private static byte getService(long serviceState) { | ||
| 286 | + if ((serviceState & 0x00020000) == 0x00020000 || (serviceState & 0x80000000) == 0x80000000) | ||
| 287 | + return -1; | ||
| 288 | + return (byte) (((serviceState & 0x02000000) == 0x02000000) ? 1 : 0); | ||
| 289 | + } | ||
| 290 | + | ||
| 291 | + private String map_get_str(Map<String, Object> map, String key){ | ||
| 292 | + return map.containsKey(key)?map.get(key).toString():""; | ||
| 293 | + } | ||
| 294 | + | ||
| 295 | + private Long map_get_long(Map<String, Object> map, String key){ | ||
| 296 | + return map.containsKey(key)?Long.parseLong(map.get(key).toString()):-1; | ||
| 297 | + } | ||
| 298 | + | ||
| 299 | + private Float map_get_float(Map<String, Object> map, String key){ | ||
| 300 | + return map.containsKey(key)?Float.parseFloat(map.get(key).toString()):-1; | ||
| 301 | + } | ||
| 302 | + | ||
| 303 | + public static byte getGpsValid(long serviceState) { | ||
| 304 | + return (byte)(((serviceState & 0x80000000) == 0x80000000) ? 1 : 0); | ||
| 305 | + } | ||
| 306 | +} |
src/main/java/com/bsth/server_rs/schedule/real/ScheduleRealService.java
| @@ -360,7 +360,7 @@ public class ScheduleRealService implements InitializingBean { | @@ -360,7 +360,7 @@ public class ScheduleRealService implements InitializingBean { | ||
| 360 | 360 | ||
| 361 | @Override | 361 | @Override |
| 362 | public void afterPropertiesSet() throws Exception { | 362 | public void afterPropertiesSet() throws Exception { |
| 363 | - Application.mainServices.scheduleWithFixedDelay(new Runnable() { | 363 | + /*Application.mainServices.scheduleWithFixedDelay(new Runnable() { |
| 364 | @Override | 364 | @Override |
| 365 | public void run() { | 365 | public void run() { |
| 366 | try { | 366 | try { |
| @@ -419,6 +419,6 @@ public class ScheduleRealService implements InitializingBean { | @@ -419,6 +419,6 @@ public class ScheduleRealService implements InitializingBean { | ||
| 419 | logger.error("kafka发电子路单调度异常", e); | 419 | logger.error("kafka发电子路单调度异常", e); |
| 420 | } | 420 | } |
| 421 | } | 421 | } |
| 422 | - }, 30, 240, TimeUnit.SECONDS); | 422 | + }, 30, 240, TimeUnit.SECONDS);*/ |
| 423 | } | 423 | } |
| 424 | } | 424 | } |