|
@@ -67,117 +67,126 @@ public class CamelDataUtil {
|
|
|
exchange.getMessage().setHeader("CamelPahoOverrideTopic","/dev/"+o.get("devtype")+"/"+o.get("devcode"));
|
|
exchange.getMessage().setHeader("CamelPahoOverrideTopic","/dev/"+o.get("devtype")+"/"+o.get("devcode"));
|
|
|
exchange.getMessage().setBody(body.getBytes("gb2312"));
|
|
exchange.getMessage().setBody(body.getBytes("gb2312"));
|
|
|
}
|
|
}
|
|
|
- public void ReciveData(String body, Exchange exchange){
|
|
|
|
|
- if(exchange.getMessage().getHeaders().get("CamelMqttTopic").toString().contains("gps")){
|
|
|
|
|
- String devicecode = exchange.getMessage().getHeaders().get("CamelMqttTopic").toString().split("/")[3];
|
|
|
|
|
- GpsData gpsData = new GpsData();
|
|
|
|
|
- gpsData.setDevicecode(devicecode);
|
|
|
|
|
- gpsData.setLat(JSONUtil.parseObj(body).getDouble("LAT"));
|
|
|
|
|
- gpsData.setLng(JSONUtil.parseObj(body).getDouble("LNG"));
|
|
|
|
|
- gpsData.setAlt(JSONUtil.parseObj(body).getDouble("ALT"));
|
|
|
|
|
- gpsData.setSpeed(JSONUtil.parseObj(body).getDouble("SPD"));
|
|
|
|
|
- log.info("body:{}",JSONUtil.toJsonStr(gpsData));
|
|
|
|
|
- gpsDataService.insertData(gpsData);
|
|
|
|
|
-
|
|
|
|
|
- //缓存最新数据到redis
|
|
|
|
|
- RedisUtils.setCacheObject(StringUtils.format("gps_{}", devicecode), gpsData);
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- threadPoolExecutor.execute(new Runnable() {
|
|
|
|
|
- @Override
|
|
|
|
|
- public void run() {
|
|
|
|
|
-
|
|
|
|
|
- TblCarInfoBo carInfoBo = new TblCarInfoBo();
|
|
|
|
|
- carInfoBo.setDeviceInfos(devicecode);
|
|
|
|
|
- List<TblCarInfoVo> carInfoVos = tblCarInfoService.queryList(carInfoBo);
|
|
|
|
|
- if(carInfoVos.size()>0){
|
|
|
|
|
- TblCarInfoVo carInfoVo = carInfoVos.get(0);
|
|
|
|
|
- if(StringUtils.isNotEmpty(carInfoVo.getCarNum())){
|
|
|
|
|
- //查询车辆信息
|
|
|
|
|
- TblCarInfoBo carInfoBo1 = new TblCarInfoBo();
|
|
|
|
|
- carInfoBo1.setCarNum(carInfoVo.getCarNum());
|
|
|
|
|
- List<TblCarInfoVo> carInfoVos1 = tblCarInfoService.queryList(carInfoBo1);
|
|
|
|
|
- if(carInfoVos1.size()>0){
|
|
|
|
|
- // 查询车辆信息
|
|
|
|
|
- TblCarInfoVo carInfoVo1 = carInfoVos1.get(0);
|
|
|
|
|
- RedisUtils.setCacheObject(StringUtils.format("gps_{}", carInfoVo1.getId()), gpsData);
|
|
|
|
|
- TblCarScheduleBo tblCarScheduleBo = new TblCarScheduleBo();
|
|
|
|
|
- tblCarScheduleBo.setCarNum(carInfoVo1.getCarNum());
|
|
|
|
|
- Map<String, Object> map = Map.of("scheduleDate", DateUtils.parseDate(DateUtils.getDate()+" 00:00:00") );
|
|
|
|
|
- tblCarScheduleBo.setParams(map);
|
|
|
|
|
- List<TblCarScheduleVo> list = tblCarScheduleService.queryList(tblCarScheduleBo);
|
|
|
|
|
- if(list.size()>0){
|
|
|
|
|
- long t0 = 10;
|
|
|
|
|
- TblCarScheduleVo scheduleVo = null;
|
|
|
|
|
- for (TblCarScheduleVo vo : list) {
|
|
|
|
|
- if(vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime()<0){
|
|
|
|
|
- if(t0>0){
|
|
|
|
|
- t0 = vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime();
|
|
|
|
|
- scheduleVo = vo;
|
|
|
|
|
- }
|
|
|
|
|
- if(t0<vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime()){
|
|
|
|
|
- t0 = vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime();
|
|
|
|
|
- scheduleVo = vo;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+
|
|
|
|
|
+ public void processGpsData(GpsData gpsData){
|
|
|
|
|
+
|
|
|
|
|
+ log.info("body:{}",JSONUtil.toJsonStr(gpsData));
|
|
|
|
|
+ gpsDataService.insertData(gpsData);
|
|
|
|
|
+
|
|
|
|
|
+ //缓存最新数据到redis
|
|
|
|
|
+ RedisUtils.setCacheObject(StringUtils.format("gps_{}", gpsData.getDevicecode()), gpsData);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ threadPoolExecutor.execute(new Runnable() {
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void run() {
|
|
|
|
|
+
|
|
|
|
|
+ TblCarInfoBo carInfoBo = new TblCarInfoBo();
|
|
|
|
|
+ carInfoBo.setDeviceInfos(gpsData.getDevicecode());
|
|
|
|
|
+ List<TblCarInfoVo> carInfoVos = tblCarInfoService.queryList(carInfoBo);
|
|
|
|
|
+ if(carInfoVos.size()>0){
|
|
|
|
|
+ TblCarInfoVo carInfoVo = carInfoVos.get(0);
|
|
|
|
|
+ if(StringUtils.isNotEmpty(carInfoVo.getCarNum())){
|
|
|
|
|
+ //查询车辆信息
|
|
|
|
|
+ TblCarInfoBo carInfoBo1 = new TblCarInfoBo();
|
|
|
|
|
+ carInfoBo1.setCarNum(carInfoVo.getCarNum());
|
|
|
|
|
+ List<TblCarInfoVo> carInfoVos1 = tblCarInfoService.queryList(carInfoBo1);
|
|
|
|
|
+ if(carInfoVos1.size()>0){
|
|
|
|
|
+ // 查询车辆信息
|
|
|
|
|
+ TblCarInfoVo carInfoVo1 = carInfoVos1.get(0);
|
|
|
|
|
+ RedisUtils.setCacheObject(StringUtils.format("gps_{}", carInfoVo1.getId()), gpsData);
|
|
|
|
|
+ TblCarScheduleBo tblCarScheduleBo = new TblCarScheduleBo();
|
|
|
|
|
+ tblCarScheduleBo.setCarNum(carInfoVo1.getCarNum());
|
|
|
|
|
+ Map<String, Object> map = Map.of("scheduleDate", DateUtils.parseDate(DateUtils.getDate()+" 00:00:00") );
|
|
|
|
|
+ tblCarScheduleBo.setParams(map);
|
|
|
|
|
+ List<TblCarScheduleVo> list = tblCarScheduleService.queryList(tblCarScheduleBo);
|
|
|
|
|
+ if(list.size()>0){
|
|
|
|
|
+ long t0 = 10;
|
|
|
|
|
+ TblCarScheduleVo scheduleVo = null;
|
|
|
|
|
+ for (TblCarScheduleVo vo : list) {
|
|
|
|
|
+ if(vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime()<0){
|
|
|
|
|
+ if(t0>0){
|
|
|
|
|
+ t0 = vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime();
|
|
|
|
|
+ scheduleVo = vo;
|
|
|
|
|
+ }
|
|
|
|
|
+ if(t0<vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime()){
|
|
|
|
|
+ t0 = vo.getScheduleDate().getTime()-DateUtils.getNowDate().getTime();
|
|
|
|
|
+ scheduleVo = vo;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- // 查询路线信息
|
|
|
|
|
- if(scheduleVo!=null){
|
|
|
|
|
- try{
|
|
|
|
|
- JSONArray lines = JSONUtil.parseObj(scheduleVo.getPathInfo()).getJSONArray("pathLine");
|
|
|
|
|
- for (JSONObject jsonObject : lines.toList(JSONObject.class)) {
|
|
|
|
|
- double distance = DistanceCalculator.calculateDistance(jsonObject.getStr("location"),StringUtils.format("{},{}", gpsData.getLng(),gpsData.getLat()));
|
|
|
|
|
- String configdistance = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.car.distance");
|
|
|
|
|
- if(Double.parseDouble(configdistance)>distance){
|
|
|
|
|
- //靠近站点
|
|
|
|
|
- String stationName = RedisUtils.getCacheObject(StringUtils.format("car_{}_{}_tip",carInfoVo1.getCarNum(),DateFormatUtils.format( scheduleVo.getScheduleDate(),DateUtils.YYYYMMDDHHMMSS) ));
|
|
|
|
|
- if(stationName!=null && stationName.contains(jsonObject.getStr("stationName"))){
|
|
|
|
|
- //提报过的不再提报
|
|
|
|
|
-
|
|
|
|
|
- }else{
|
|
|
|
|
- stationName=stationName==null?"":stationName;
|
|
|
|
|
- RedisUtils.setCacheObject(StringUtils.format("car_{}_{}_tip",carInfoVo1.getCarNum(), DateFormatUtils.format( scheduleVo.getScheduleDate(),DateUtils.YYYYMMDDHHMMSS) ), stationName+","+jsonObject.getStr("stationName"),Duration.ofSeconds(3600*24));
|
|
|
|
|
- //开始播报
|
|
|
|
|
- //获取站点设备信息
|
|
|
|
|
- SysDictDataBo sysDictData = new SysDictDataBo();
|
|
|
|
|
- sysDictData.setDictLabel(jsonObject.getStr("stationName"));
|
|
|
|
|
- sysDictData.setDictType("tbl_sites");
|
|
|
|
|
- List<SysDictDataVo> stations = sysDictDataService.selectDictDataList(sysDictData);
|
|
|
|
|
- if(stations.size()>0){
|
|
|
|
|
- //满足条件播报(led or 广播)
|
|
|
|
|
- String message = StringUtils.format("{}即将到达,请准备接车,请等待。。。", carInfoVo1.getCarNum());
|
|
|
|
|
- List<JSONObject> devicedatas = JSONUtil.parseArray( stations.get(0).getRemark()).toList(JSONObject.class);
|
|
|
|
|
- for (JSONObject i :devicedatas) {
|
|
|
|
|
- if(i.getStr("type").equals("led")){
|
|
|
|
|
- MessageUtils.sendLed(i.getStr("code"), message);
|
|
|
|
|
- }
|
|
|
|
|
- if(i.getStr("type").equals("tts")){
|
|
|
|
|
- MessageUtils.sendTTs(i.getStr("code"), message);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ // 查询路线信息
|
|
|
|
|
+ if(scheduleVo!=null){
|
|
|
|
|
+ try{
|
|
|
|
|
+ JSONArray lines = JSONUtil.parseObj(scheduleVo.getPathInfo()).getJSONArray("pathLine");
|
|
|
|
|
+ for (JSONObject jsonObject : lines.toList(JSONObject.class)) {
|
|
|
|
|
+ double distance = DistanceCalculator.calculateDistance(jsonObject.getStr("location"),StringUtils.format("{},{}", gpsData.getLng(),gpsData.getLat()));
|
|
|
|
|
+ String configdistance = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.car.distance");
|
|
|
|
|
+ if(Double.parseDouble(configdistance)>distance){
|
|
|
|
|
+ //靠近站点
|
|
|
|
|
+ String stationName = RedisUtils.getCacheObject(StringUtils.format("car_{}_{}_tip",carInfoVo1.getCarNum(),DateFormatUtils.format( scheduleVo.getScheduleDate(),DateUtils.YYYYMMDDHHMMSS) ));
|
|
|
|
|
+ if(stationName!=null && stationName.contains(jsonObject.getStr("stationName"))){
|
|
|
|
|
+ //提报过的不再提报
|
|
|
|
|
+
|
|
|
|
|
+ }else{
|
|
|
|
|
+ stationName=stationName==null?"":stationName;
|
|
|
|
|
+ RedisUtils.setCacheObject(StringUtils.format("car_{}_{}_tip",carInfoVo1.getCarNum(), DateFormatUtils.format( scheduleVo.getScheduleDate(),DateUtils.YYYYMMDDHHMMSS) ), stationName+","+jsonObject.getStr("stationName"),Duration.ofSeconds(3600*24));
|
|
|
|
|
+ //开始播报
|
|
|
|
|
+ //获取站点设备信息
|
|
|
|
|
+ SysDictDataBo sysDictData = new SysDictDataBo();
|
|
|
|
|
+ sysDictData.setDictLabel(jsonObject.getStr("stationName"));
|
|
|
|
|
+ sysDictData.setDictType("tbl_sites");
|
|
|
|
|
+ List<SysDictDataVo> stations = sysDictDataService.selectDictDataList(sysDictData);
|
|
|
|
|
+ if(stations.size()>0){
|
|
|
|
|
+ //满足条件播报(led or 广播)
|
|
|
|
|
+ String message = StringUtils.format("{}即将到达,请准备接车,请等待。。。", carInfoVo1.getCarNum());
|
|
|
|
|
+ List<JSONObject> devicedatas = JSONUtil.parseArray( stations.get(0).getRemark()).toList(JSONObject.class);
|
|
|
|
|
+ for (JSONObject i :devicedatas) {
|
|
|
|
|
+ if(i.getStr("type").equals("led")){
|
|
|
|
|
+ MessageUtils.sendLed(i.getStr("code"), message);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(i.getStr("type").equals("tts")){
|
|
|
|
|
+ MessageUtils.sendTTs(i.getStr("code"), message);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
- }catch (Exception e){
|
|
|
|
|
- log.error("---------------------");
|
|
|
|
|
- log.error(e.getMessage());
|
|
|
|
|
- log.error("---------------------");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }catch (Exception e){
|
|
|
|
|
+ log.error("---------------------");
|
|
|
|
|
+ log.error(e.getMessage());
|
|
|
|
|
+ log.error("---------------------");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ public void ReciveData(String body, Exchange exchange){
|
|
|
|
|
+ if(exchange.getMessage().getHeaders().get("CamelMqttTopic").toString().contains("gps")){
|
|
|
|
|
+ String devicecode = exchange.getMessage().getHeaders().get("CamelMqttTopic").toString().split("/")[3];
|
|
|
|
|
+ GpsData gpsData = new GpsData();
|
|
|
|
|
+ gpsData.setDevicecode(devicecode);
|
|
|
|
|
+ gpsData.setLat(JSONUtil.parseObj(body).getDouble("LAT"));
|
|
|
|
|
+ gpsData.setLng(JSONUtil.parseObj(body).getDouble("LNG"));
|
|
|
|
|
+ gpsData.setAlt(JSONUtil.parseObj(body).getDouble("ALT"));
|
|
|
|
|
+ gpsData.setSpeed(JSONUtil.parseObj(body).getDouble("SPD"));
|
|
|
|
|
+ if(JSONUtil.parseObj(body).getDouble("SPD")>0){
|
|
|
|
|
+ processGpsData(gpsData);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
log.info("body:{}",body);
|
|
log.info("body:{}",body);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|