|
@@ -61,6 +61,7 @@ import com.ozs.service.TerminalIgnoreAlarmService;
|
|
|
import com.ozs.service.VehiclePositionService;
|
|
|
import com.ozs.system.domain.SysUserOnline;
|
|
|
import com.ozs.system.mapper.SysUserMapper;
|
|
|
+import com.ozs.web.common.Constant;
|
|
|
import com.ozs.web.controller.monitor.SysUserOnlineController;
|
|
|
import com.ozs.web.controller.websocket.WebSocketServer;
|
|
|
import com.ozs.web.core.util.CameraUtil;
|
|
@@ -503,7 +504,9 @@ public class GeoHazardMonitorTokenController {
|
|
|
log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
+ // 1. 解密参数
|
|
|
String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
+ // 2、 心跳参数
|
|
|
HeartbeatVo heartbeatVo = JSON.parseObject(s, HeartbeatVo.class);
|
|
|
if (ObjectUtils.isEmpty(heartbeatVo.getTerminalCode())) {
|
|
|
jsonObject.put("resultCode", 0);
|
|
@@ -550,6 +553,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
jsonObject.put("resultCode", 0);
|
|
|
jsonObject.put("message", "失败");
|
|
|
jsonObject.put("data", "司机目视距离填写错误");
|
|
|
+ // todo 请把目视距离写入到缓存(Redis)中 ,key 为终端编码+盐值 每次心跳监测都修改。
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
if (heartbeatVo.getSignalStrength() != 1 && heartbeatVo.getSignalStrength() != 2) {
|
|
@@ -573,6 +577,8 @@ public class GeoHazardMonitorTokenController {
|
|
|
vehiclePosition.setVehicleCode(baseTerminal.getVehicleCode());
|
|
|
vehiclePosition.setTerminalLatitude(heartbeatVo.getLatitude());
|
|
|
vehiclePosition.setTerminalLongitude(heartbeatVo.getLongitude());
|
|
|
+ vehiclePosition.setCreateTime(new Date());
|
|
|
+ vehiclePosition.setCurrentTime(vehiclePosition.getCreateTime());
|
|
|
//机车行驶表添加数据
|
|
|
boolean save = vehiclePositionService.save(vehiclePosition);
|
|
|
//修改车载终端经度纬度
|
|
@@ -582,27 +588,27 @@ public class GeoHazardMonitorTokenController {
|
|
|
LambdaQueryWrapper<BaseVehicleTerminal> terminal = new LambdaQueryWrapper<>();
|
|
|
terminal.eq(BaseVehicleTerminal::getTerminalCode, vehiclePosition.getTerminalCode());
|
|
|
boolean update = baseVehicleTerminalService.update(baseVehicleTerminal, terminal);
|
|
|
- //*******获取终端经度纬度,将车载终端code改为机车的code,便是机车的位置
|
|
|
- HeartbeatVo heartbeatVoCH = new HeartbeatVo();
|
|
|
- BeanUtils.copyProperties(heartbeatVo, heartbeatVoCH);
|
|
|
- //*******将终端关联的机车编码赋值给推送信息对象
|
|
|
- heartbeatVoCH.setVehicleCode(baseTerminal.getVehicleCode());
|
|
|
- String content = objStr(heartbeatVoCH);
|
|
|
- //获取在线用户
|
|
|
- List<SysUserOnline> rows = (List<SysUserOnline>) sysUserOnlineController.list(null, null).getRows();
|
|
|
- if (!ObjectUtils.isEmpty(rows)) {
|
|
|
- //拿到用户userNameList
|
|
|
- List<String> userNameList = rows.stream().map(SysUserOnline::getUserName).collect(Collectors.toList());
|
|
|
- LambdaQueryWrapper<SysUser> userWrapper = new LambdaQueryWrapper<>();
|
|
|
- userWrapper.in(SysUser::getUserName, userNameList);
|
|
|
- List<SysUser> sysUsers = sysUserMapper.selectList(userWrapper);
|
|
|
- //拿到用户userIdList
|
|
|
- List<Long> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
- for (Long userid : userIdList) {
|
|
|
- //推送给在线用户
|
|
|
- webSocketServer.sendOneMessage(String.valueOf(userid), content);
|
|
|
- }
|
|
|
- }
|
|
|
+// //*******获取终端经度纬度,将车载终端code改为机车的code,便是机车的位置
|
|
|
+// HeartbeatVo heartbeatVoCH = new HeartbeatVo();
|
|
|
+// BeanUtils.copyProperties(heartbeatVo, heartbeatVoCH);
|
|
|
+// //*******将终端关联的机车编码赋值给推送信息对象
|
|
|
+// heartbeatVoCH.setVehicleCode(baseTerminal.getVehicleCode());
|
|
|
+// String content = objStr(heartbeatVoCH);
|
|
|
+// //获取在线用户
|
|
|
+// List<SysUserOnline> rows = (List<SysUserOnline>) sysUserOnlineController.list(null, null).getRows();
|
|
|
+// if (!ObjectUtils.isEmpty(rows)) {
|
|
|
+// //拿到用户userNameList
|
|
|
+// List<String> userNameList = rows.stream().map(SysUserOnline::getUserName).collect(Collectors.toList());
|
|
|
+// LambdaQueryWrapper<SysUser> userWrapper = new LambdaQueryWrapper<>();
|
|
|
+// userWrapper.in(SysUser::getUserName, userNameList);
|
|
|
+// List<SysUser> sysUsers = sysUserMapper.selectList(userWrapper);
|
|
|
+// //拿到用户userIdList
|
|
|
+// List<Long> userIdList = sysUsers.stream().map(SysUser::getId).collect(Collectors.toList());
|
|
|
+// for (Long userid : userIdList) {
|
|
|
+// //推送给在线用户
|
|
|
+// webSocketServer.sendOneMessage(String.valueOf(userid), content);
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
//目视距离和里程位置
|
|
|
if (save && update) {
|
|
@@ -616,8 +622,8 @@ public class GeoHazardMonitorTokenController {
|
|
|
if (list.size() > 0) {
|
|
|
//获取报警里程所监控的所有相机
|
|
|
LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
- camera.ge(BaseCameraManagement::getBeginMile, list.get(0).getAlarmMile());
|
|
|
- camera.le(BaseCameraManagement::getEndMile, list.get(0).getAlarmMile());
|
|
|
+ camera.ge(BaseCameraManagement::getEndMile, list.get(0).getAlarmMile());
|
|
|
+ camera.le(BaseCameraManagement::getBeginMile, list.get(0).getAlarmMile());
|
|
|
camera.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
camera.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
|
|
|
camera.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
@@ -629,7 +635,8 @@ public class GeoHazardMonitorTokenController {
|
|
|
respHeartbeatVo.setCurrentStream(playFlv);
|
|
|
respHeartbeatVo.setIsAlarm(1);
|
|
|
respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
|
|
|
- twoMap.put(respHeartbeatVo.getCameraCode(), respHeartbeatVo.getCurrentStream());
|
|
|
+ twoMap.put("currentStream", playFlv);
|
|
|
+ twoMap.put("cameraCode", baseCameraManagementList.get(0).getCameraCode());
|
|
|
//alarmInfo对象
|
|
|
AlarmInfoVo alarmInfoVo = new AlarmInfoVo();
|
|
|
alarmInfoVo.setAlarmId(list.get(0).getAlarmId());
|
|
@@ -642,17 +649,13 @@ public class GeoHazardMonitorTokenController {
|
|
|
LambdaQueryWrapper<MsgAlarmExt> ext = new LambdaQueryWrapper<>();
|
|
|
ext.eq(MsgAlarmExt::getAlarmId, list.get(0).getAlarmId());
|
|
|
MsgAlarmExt one = msgAlarmExtService.getOne(ext);
|
|
|
- if (ObjectUtils.isEmpty(one)) {
|
|
|
- jsonObject.put("resultCode", 0);
|
|
|
- jsonObject.put("message", "失败");
|
|
|
- jsonObject.put("data", "没有该报警ID的关联信息");
|
|
|
- return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ if (!ObjectUtils.isEmpty(one)) {
|
|
|
+ files[0] = new AlarmFilesVo();
|
|
|
+ files[0].setAlarmAttType(one.getAlarmAttType());
|
|
|
+ files[0].setAlarmAttPath(one.getAlarmAttPath());
|
|
|
+ //返回结果
|
|
|
+ alarmInfoVo.setAlarmFiles(files);
|
|
|
}
|
|
|
- files[0] = new AlarmFilesVo();
|
|
|
- files[0].setAlarmAttType(one.getAlarmAttType());
|
|
|
- files[0].setAlarmAttPath(one.getAlarmAttPath());
|
|
|
- //返回结果
|
|
|
- alarmInfoVo.setAlarmFiles(files);
|
|
|
respHeartbeatVo.setAlarmInfo(alarmInfoVo);
|
|
|
} else {
|
|
|
jsonObject.put("resultCode", 0);
|
|
@@ -680,7 +683,6 @@ public class GeoHazardMonitorTokenController {
|
|
|
//alarmList对象
|
|
|
alarmListVo.setCameraStream(flv);
|
|
|
alarmListVo.setCameraCode(baseList.get(o).getCameraCode());
|
|
|
- twoMap.put(alarmListVo.getCameraCode(), alarmListVo.getCameraStream());
|
|
|
//alarmInfo对象
|
|
|
AlarmInfoVo alarmInfoVo1 = new AlarmInfoVo();
|
|
|
alarmInfoVo1.setAlarmId(list.get(i).getAlarmId());
|
|
@@ -692,13 +694,15 @@ public class GeoHazardMonitorTokenController {
|
|
|
LambdaQueryWrapper<MsgAlarmExt> alarm = new LambdaQueryWrapper<>();
|
|
|
alarm.eq(MsgAlarmExt::getAlarmId, list.get(0).getAlarmId());
|
|
|
List<MsgAlarmExt> list1 = msgAlarmExtService.list(alarm);
|
|
|
- AlarmFilesVo[] vo = new AlarmFilesVo[list1.size()];
|
|
|
- for (int i1 = 0; i1 < list1.size(); i1++) {
|
|
|
- vo[i1] = new AlarmFilesVo();
|
|
|
- vo[i1].setAlarmAttType(list1.get(i1).getAlarmAttType());
|
|
|
- vo[i1].setAlarmAttPath(list1.get(i1).getAlarmAttPath());
|
|
|
+ if (list1.size() > 0) {
|
|
|
+ AlarmFilesVo[] vo = new AlarmFilesVo[list1.size()];
|
|
|
+ for (int i1 = 0; i1 < list1.size(); i1++) {
|
|
|
+ vo[i1] = new AlarmFilesVo();
|
|
|
+ vo[i1].setAlarmAttType(list1.get(i1).getAlarmAttType());
|
|
|
+ vo[i1].setAlarmAttPath(list1.get(i1).getAlarmAttPath());
|
|
|
+ }
|
|
|
+ alarmInfoVo1.setAlarmFiles(vo);
|
|
|
}
|
|
|
- alarmInfoVo1.setAlarmFiles(vo);
|
|
|
alarmListVo.setAlarmInfo(alarmInfoVo1);
|
|
|
listVos.add(alarmListVo);
|
|
|
}
|
|
@@ -722,9 +726,10 @@ public class GeoHazardMonitorTokenController {
|
|
|
List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
|
|
|
CameraUtil.invite(list1.get(0).getCameraCode(), list1.get(0).getChannel());
|
|
|
String flv = CameraUtil.getPlayFlvRtsp(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
|
|
|
+ twoMap.put("currentStream", flv);
|
|
|
+ twoMap.put("cameraCode", list1.get(0).getCameraCode());
|
|
|
for (BaseCameraManagement baseCameraManagement : list1) {
|
|
|
String flv1 = CameraUtil.getPlayFlvRtsp(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), false);
|
|
|
- twoMap.put(baseCameraManagement.getCameraCode(), flv1);
|
|
|
CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
|
|
|
}
|
|
|
respHeartbeatVo.setCurrentStream(flv);
|
|
@@ -733,7 +738,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
respHeartbeatVo.setAlarmList(null);
|
|
|
respHeartbeatVo.setAlarmInfo(null);
|
|
|
}
|
|
|
- heartbeatUtils.createHeartbeat(heartbeatVo.getTerminalCode(), twoMap);
|
|
|
+ heartbeatUtils.createHeartbeat(Constant.HERTBEA_KEY+heartbeatVo.getTerminalCode(), twoMap);
|
|
|
jsonObject.put("resultCode", 1);
|
|
|
jsonObject.put("message", "ok");
|
|
|
jsonObject.put("data", respHeartbeatVo);
|
|
@@ -1075,47 +1080,46 @@ public class GeoHazardMonitorTokenController {
|
|
|
jsonObject.put("data", "没有该报警唯一UUID的报警数据");
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
} else {
|
|
|
- //获取报警里程所监控的所有相机
|
|
|
- LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
- camera.ge(BaseCameraManagement::getBeginMile, one.getAlarmMile());
|
|
|
- camera.le(BaseCameraManagement::getEndMile, one.getAlarmMile());
|
|
|
- camera.eq(BaseCameraManagement::getLineDir, one.getLineDir());
|
|
|
- camera.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
- List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
|
|
|
- if (baseCameraManagementList.size() > 0) {
|
|
|
- BaseCameraManagement baseCameraManagement = baseCameraManagementList.get(0);
|
|
|
- Object cacheObject = redisCache.getCacheObject("STREAMING_ALARM_VIDEO:" + baseCameraManagement.getCameraCode());
|
|
|
- if (ObjectUtils.isEmpty(cacheObject)) {
|
|
|
+ if (ObjectUtils.isEmpty(one.getReleasedUrl())) {
|
|
|
+ //获取报警里程所监控的所有相机
|
|
|
+ LambdaQueryWrapper<BaseCameraManagement> camera = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
+ camera.ge(BaseCameraManagement::getBeginMile, one.getAlarmMile());
|
|
|
+ camera.le(BaseCameraManagement::getEndMile, one.getAlarmMile());
|
|
|
+ camera.eq(BaseCameraManagement::getLineDir, one.getLineDir());
|
|
|
+ camera.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
+ List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
|
|
|
+ if (baseCameraManagementList.size() > 0) {
|
|
|
+ BaseCameraManagement baseCameraManagement = baseCameraManagementList.get(0);
|
|
|
+ long time = one.getAlarmTime().getTime();
|
|
|
+ long time2 = time - 600000L;
|
|
|
+ one.setAlarmTime(new Date(time2));
|
|
|
String url = null;
|
|
|
if ("1".equals(one.getIsRelease().toString())) {
|
|
|
url = CameraUtil.historyPlayListStr(baseCameraManagement.getChannel(),
|
|
|
one.getAlarmTime(),
|
|
|
one.getReleasedTime(),
|
|
|
true);
|
|
|
- redisCache.setCacheObject("STREAMING_ALARM_VIDEO:" + baseCameraManagement.getCameraCode(), url);
|
|
|
- redisCache.expire("STREAMING_ALARM_VIDEO:" + baseCameraManagement.getCameraCode(), 365L, TimeUnit.DAYS);
|
|
|
- } else {
|
|
|
+ }else {
|
|
|
url = CameraUtil.historyPlayListStr(baseCameraManagement.getChannel(),
|
|
|
one.getAlarmTime(),
|
|
|
new Date(),
|
|
|
false);
|
|
|
}
|
|
|
- urls = serverConfig.getUrl() + url;
|
|
|
+ one.setReleasedUrl(url);
|
|
|
+ msgAlarmService.updateById(one);
|
|
|
} else {
|
|
|
- urls = serverConfig.getUrl() + cacheObject;
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "没有该报警里程位置的相机");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
- } else {
|
|
|
- jsonObject.put("resultCode", 0);
|
|
|
- jsonObject.put("message", "失败");
|
|
|
- jsonObject.put("data", "没有该报警里程位置的相机");
|
|
|
- return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
- map.put("url", urls);
|
|
|
- jsonObject.put("resultCode", 1);
|
|
|
- jsonObject.put("message", "ok");
|
|
|
- jsonObject.put("data", map);
|
|
|
- return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
+ map.put("url", serverConfig.getUrl() + one.getReleasedUrl());
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
+ jsonObject.put("data", map);
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
} else {
|
|
|
jsonObject.put("resultCode", 2);
|
|
|
jsonObject.put("message", "失败");
|