|
@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.ozs.common.core.domain.AjaxResult;
|
|
|
+import com.ozs.common.core.domain.entity.SysUser;
|
|
|
import com.ozs.common.core.redis.RedisCache;
|
|
|
import com.ozs.common.exception.base.BaseException;
|
|
|
import com.ozs.common.utils.ApiTokenUtils;
|
|
@@ -19,6 +20,7 @@ import com.ozs.entity.BaseDeviceDynamicManagement;
|
|
|
import com.ozs.entity.BaseRailwayManagement;
|
|
|
import com.ozs.entity.BaseTerminal;
|
|
|
import com.ozs.entity.BaseUser;
|
|
|
+import com.ozs.entity.BaseVehicleTerminal;
|
|
|
import com.ozs.entity.CameraTree;
|
|
|
import com.ozs.entity.MsgAlarm;
|
|
|
import com.ozs.entity.MsgAlarmExt;
|
|
@@ -33,6 +35,8 @@ import com.ozs.entity.vo.CameraPlayVo;
|
|
|
import com.ozs.entity.vo.CameraVo;
|
|
|
import com.ozs.entity.vo.Files;
|
|
|
import com.ozs.entity.vo.HeartbeatVo;
|
|
|
+import com.ozs.entity.vo.MsgAlarmResp;
|
|
|
+import com.ozs.entity.vo.ParameterVo;
|
|
|
import com.ozs.entity.vo.QueryAlarmVo;
|
|
|
import com.ozs.entity.vo.ReleaseAlarmVo;
|
|
|
import com.ozs.entity.vo.ReqMsgAlarmVo;
|
|
@@ -48,12 +52,17 @@ import com.ozs.service.BaseDeviceDynamicManagementService;
|
|
|
import com.ozs.service.BaseRailwayManagementService;
|
|
|
import com.ozs.service.BaseTerminalService;
|
|
|
import com.ozs.service.BaseUserService;
|
|
|
+import com.ozs.service.BaseVehicleTerminalService;
|
|
|
import com.ozs.service.MsgAlarmExtService;
|
|
|
import com.ozs.service.MsgAlarmFrequencyService;
|
|
|
import com.ozs.service.MsgAlarmService;
|
|
|
import com.ozs.service.SvcAddressService;
|
|
|
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.controller.monitor.SysUserOnlineController;
|
|
|
+import com.ozs.web.controller.websocket.WebSocketServer;
|
|
|
import com.ozs.web.core.util.CameraUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
@@ -76,6 +85,7 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 1. 获取身份认证控制层
|
|
@@ -86,10 +96,11 @@ import java.util.concurrent.TimeUnit;
|
|
|
@Slf4j
|
|
|
public class GeoHazardMonitorTokenController {
|
|
|
public static final String PATTERN = "^([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$";
|
|
|
+ public static final String PATTERNS = "^[0-9]*$";
|
|
|
@Resource
|
|
|
private ApiTokenUtils apiTokenUtils;
|
|
|
- @Resource
|
|
|
- BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
|
|
|
+ @Autowired
|
|
|
+ WebSocketServer webSocketServer;
|
|
|
@Autowired
|
|
|
MsgAlarmService msgAlarmService;
|
|
|
@Autowired
|
|
@@ -98,6 +109,8 @@ public class GeoHazardMonitorTokenController {
|
|
|
SvcAddressService svcAddressService;
|
|
|
@Autowired
|
|
|
BaseCameraManagementService baseCameraManagementService;
|
|
|
+ @Autowired
|
|
|
+ SysUserOnlineController sysUserOnlineController;
|
|
|
// @Value("${sdk.publish}")
|
|
|
// private String sdkUrl;
|
|
|
@Autowired
|
|
@@ -120,6 +133,10 @@ public class GeoHazardMonitorTokenController {
|
|
|
private RedisCache redisCache;
|
|
|
@Autowired
|
|
|
private ServerConfig serverConfig;
|
|
|
+ @Autowired
|
|
|
+ private BaseVehicleTerminalService baseVehicleTerminalService;
|
|
|
+ @Resource
|
|
|
+ private SysUserMapper sysUserMapper;
|
|
|
|
|
|
/**
|
|
|
* 获取web访问令牌
|
|
@@ -139,11 +156,24 @@ public class GeoHazardMonitorTokenController {
|
|
|
jsonObject.put("data", "客户端编号不能为空");
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
+ if (!ObjectUtils.isEmpty(svcAddress.getGrantType())) {
|
|
|
+ if (!svcAddress.getGrantType().toString().matches(PATTERNS)) {
|
|
|
+ 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");
|
|
|
+ }
|
|
|
SvcAddress serviceOne = svcAddressService.getOne(lw);
|
|
|
if (!ObjectUtils.isEmpty(serviceOne)) {
|
|
|
String clientSecret = SM4Utils.decryptData_ECB(serviceOne.getClientSecret(), "4370780c9a8c43e5");
|
|
|
if (clientSecret.equals(svcAddress.getClientSecret())) {
|
|
|
- ArrayList<String> objects = apiTokenUtils.createGeoHazardMonitorToken(svcAddress.getGrantType(), svcAddress.getClientId(), svcAddress.getClientSecret());
|
|
|
+ ArrayList<String> objects = apiTokenUtils.createGeoHazardMonitorToken(svcAddress.getGrantType().toString(), svcAddress.getClientId(), svcAddress.getClientSecret());
|
|
|
if (objects.size() > 0) {
|
|
|
RespGeoHazardMonitorVo respGeoHazardMonitorVo = new RespGeoHazardMonitorVo();
|
|
|
respGeoHazardMonitorVo.setAccessToken(objects.get(1));
|
|
@@ -179,13 +209,13 @@ public class GeoHazardMonitorTokenController {
|
|
|
*/
|
|
|
@PostMapping("/api/alarm")
|
|
|
@Transactional
|
|
|
- public String alarm(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String alarm(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
|
|
|
if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmAttr())) {
|
|
|
if (!reqMsgAlarmVo.getAlarmAttr().matches(PATTERN)) {
|
|
@@ -195,6 +225,53 @@ public class GeoHazardMonitorTokenController {
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
}
|
|
|
+ if (!reqMsgAlarmVo.getAlarmMile().toString().matches(PATTERNS)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警里程位置填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (reqMsgAlarmVo.getLineDir() != 1 && reqMsgAlarmVo.getLineDir() != 2) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "行别填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
|
|
|
+ if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmRailway())) {
|
|
|
+ queryWrapper.eq(BaseRailwayManagement::getRailwayCode, reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ }
|
|
|
+ BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
|
|
|
+ if (ObjectUtils.isEmpty(baseRailwayManagement)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "填写的报警线路编码不存在");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmId())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警的唯一标识不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmTime())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警时间不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (reqMsgAlarmVo.getAlarmType() < 1 || reqMsgAlarmVo.getAlarmType() > 3) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警病害类型填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (!reqMsgAlarmVo.getAlarmLevel().toString().matches(PATTERNS)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警级别填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
if (reqMsgAlarmVo.getAlarmTime().toString().length() == 10) {
|
|
|
reqMsgAlarmVo.setAlarmTime(reqMsgAlarmVo.getAlarmTime() * 1000);
|
|
|
}
|
|
@@ -219,6 +296,12 @@ public class GeoHazardMonitorTokenController {
|
|
|
lw.eq(MsgAlarm::getAlarmId, reqMsgAlarmVo.getAlarmId());
|
|
|
}
|
|
|
MsgAlarm alarm = msgAlarmService.getOne(lw);
|
|
|
+ if (ObjectUtils.isEmpty(alarm)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "没有该报警唯一标识的报警信息");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
log.info("alarm:{}", alarm);
|
|
|
BaseUser admin = baseUserService.getUserName("admin");
|
|
|
MsgAlarmFrequency msgAlarmVice = new MsgAlarmFrequency();
|
|
@@ -237,6 +320,18 @@ public class GeoHazardMonitorTokenController {
|
|
|
Files[] files1 = reqMsgAlarmVo.getFiles();
|
|
|
if (files1.length > 0) {
|
|
|
for (int i = 0; i < files1.length; i++) {
|
|
|
+ if (ObjectUtils.isEmpty(files1[i].fileUrl)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "上传文件地址不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (files1[i].fileType < 1 || files1[i].fileType > 3) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "文件类型填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
MsgAlarmExt msgAlarmExt = new MsgAlarmExt();
|
|
|
msgAlarmExt.setAlarmId(msgAlarm.getAlarmId());
|
|
|
msgAlarmExt.setAlarmAttPath(files1[i].fileUrl);
|
|
@@ -314,19 +409,43 @@ public class GeoHazardMonitorTokenController {
|
|
|
/**
|
|
|
* 报警解除接口
|
|
|
*
|
|
|
- * @param parameter
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/releaseAlarm")
|
|
|
- public String releaseAlarm(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String releaseAlarm(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
ReleaseAlarmVo releaseAlarmVo = JSON.parseObject(s, ReleaseAlarmVo.class);
|
|
|
+ if (ObjectUtils.isEmpty(releaseAlarmVo.getAlarmId())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警的唯一标识不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseTime())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "解除报警时间不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseContent())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "解除原因不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(releaseAlarmVo.getReleaseTime())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "解除人不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(MsgAlarm::getAlarmId, releaseAlarmVo.getAlarmId());
|
|
|
MsgAlarm msgAlarm = msgAlarmService.getOne(wrapper);
|
|
@@ -369,36 +488,127 @@ public class GeoHazardMonitorTokenController {
|
|
|
/**
|
|
|
* 车载心跳机制交互
|
|
|
*
|
|
|
- * @param parameter
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/terminal/heartbeat")
|
|
|
- public String heartbeat(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ @Transactional
|
|
|
+ public String heartbeat(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
Map<String, Object> twoMap = new HashMap<>();
|
|
|
int distance = 0;
|
|
|
RespHeartbeatVo respHeartbeatVo = new RespHeartbeatVo();
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
HeartbeatVo heartbeatVo = JSON.parseObject(s, HeartbeatVo.class);
|
|
|
+ if (ObjectUtils.isEmpty(heartbeatVo.getTerminalCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "车载终端编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (!heartbeatVo.getCurrentMile().toString().matches(PATTERNS)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "当前里程位置填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(heartbeatVo.getLatitude())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "当前所在纬度不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(heartbeatVo.getLongitude())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "当前所在经度不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ LambdaQueryWrapper<BaseRailwayManagement> railway = new LambdaQueryWrapper<BaseRailwayManagement>();
|
|
|
+ if (!ObjectUtils.isEmpty(heartbeatVo.getRailwayCode())) {
|
|
|
+ railway.eq(BaseRailwayManagement::getRailwayCode, heartbeatVo.getRailwayCode());
|
|
|
+ }
|
|
|
+ BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(railway);
|
|
|
+ if (ObjectUtils.isEmpty(baseRailwayManagement)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "填写的线路编码不存在");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (heartbeatVo.getLineDir() != 1 && heartbeatVo.getLineDir() != 2) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "行别填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (!heartbeatVo.getVisualDistance().toString().matches(PATTERNS)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "司机目视距离填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (heartbeatVo.getSignalStrength() != 1 && heartbeatVo.getSignalStrength() != 2) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "信号强度填写错误");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
VehiclePosition vehiclePosition = new VehiclePosition();
|
|
|
BeanUtils.copyProperties(heartbeatVo, vehiclePosition);
|
|
|
LambdaQueryWrapper<BaseTerminal> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(BaseTerminal::getTerminalCode, vehiclePosition.getTerminalCode());
|
|
|
BaseTerminal baseTerminal = baseTerminalService.getOne(wrapper);
|
|
|
+ if (ObjectUtils.isEmpty(baseTerminal)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "关联表中没有改终端编码的信息");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
vehiclePosition.setTravelMile(heartbeatVo.getCurrentMile());
|
|
|
vehiclePosition.setVehicleCode(baseTerminal.getVehicleCode());
|
|
|
+ vehiclePosition.setTerminalLatitude(heartbeatVo.getLatitude());
|
|
|
+ vehiclePosition.setTerminalLongitude(heartbeatVo.getLongitude());
|
|
|
//机车行驶表添加数据
|
|
|
boolean save = vehiclePositionService.save(vehiclePosition);
|
|
|
+ //修改车载终端经度纬度
|
|
|
+ BaseVehicleTerminal baseVehicleTerminal = new BaseVehicleTerminal();
|
|
|
+ baseVehicleTerminal.setTerminalLatitude(heartbeatVo.getLatitude());
|
|
|
+ baseVehicleTerminal.setTerminalLongitude(heartbeatVo.getLongitude());
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//目视距离和里程位置
|
|
|
- if (save) {
|
|
|
+ if (save && update) {
|
|
|
LambdaQueryWrapper<MsgAlarm> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.le(MsgAlarm::getAlarmMile, heartbeatVo.getCurrentMile());
|
|
|
- queryWrapper.ge(MsgAlarm::getAlarmMile, (heartbeatVo.getCurrentMile() + 10000));
|
|
|
+ queryWrapper.ge(MsgAlarm::getAlarmMile, heartbeatVo.getCurrentMile());
|
|
|
+ queryWrapper.le(MsgAlarm::getAlarmMile, (heartbeatVo.getCurrentMile() + 10000));
|
|
|
queryWrapper.eq(MsgAlarm::getLineDir, heartbeatVo.getLineDir());
|
|
|
queryWrapper.orderByAsc(MsgAlarm::getAlarmMile);
|
|
|
List<MsgAlarm> list = msgAlarmService.list(queryWrapper);
|
|
@@ -409,12 +619,13 @@ public class GeoHazardMonitorTokenController {
|
|
|
camera.ge(BaseCameraManagement::getBeginMile, list.get(0).getAlarmMile());
|
|
|
camera.le(BaseCameraManagement::getEndMile, list.get(0).getAlarmMile());
|
|
|
camera.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
+ camera.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
|
|
|
camera.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
|
|
|
List<AlarmListVo> listVos = new ArrayList<>();
|
|
|
if (baseCameraManagementList.size() > 0) {
|
|
|
//获取视频点播地址
|
|
|
- String playFlv = CameraUtil.getPlayFlv(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(), false);
|
|
|
+ String playFlv = CameraUtil.getPlayFlvRtsp(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(), false);
|
|
|
respHeartbeatVo.setCurrentStream(playFlv);
|
|
|
respHeartbeatVo.setIsAlarm(1);
|
|
|
respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
|
|
@@ -424,12 +635,19 @@ public class GeoHazardMonitorTokenController {
|
|
|
alarmInfoVo.setAlarmId(list.get(0).getAlarmId());
|
|
|
alarmInfoVo.setAlarmMile(list.get(0).getAlarmMile());
|
|
|
alarmInfoVo.setAlarmTime(list.get(0).getAlarmTime().getTime());
|
|
|
+ alarmInfoVo.setAlarmContent(list.get(0).getContent());
|
|
|
alarmInfoVo.setAlarmType(list.get(0).getAlarmType());
|
|
|
alarmInfoVo.setAlarmLevel(list.get(0).getAlarmLevel());
|
|
|
AlarmFilesVo[] files = new AlarmFilesVo[1];
|
|
|
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");
|
|
|
+ }
|
|
|
files[0] = new AlarmFilesVo();
|
|
|
files[0].setAlarmAttType(one.getAlarmAttType());
|
|
|
files[0].setAlarmAttPath(one.getAlarmAttPath());
|
|
@@ -448,6 +666,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
ment.ge(BaseCameraManagement::getBeginMile, list.get(i).getAlarmMile());
|
|
|
ment.le(BaseCameraManagement::getEndMile, list.get(i).getAlarmMile());
|
|
|
ment.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
+ ment.eq(BaseCameraManagement::getRailwayCode, heartbeatVo.getRailwayCode());
|
|
|
ment.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
if (i == 0) {
|
|
|
wrapper.last("limit 1,1000000");
|
|
@@ -456,7 +675,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
List<BaseCameraManagement> baseList = baseCameraManagementService.list(camera);
|
|
|
if (baseList.size() > 0) {
|
|
|
for (int o = 0; o < baseList.size(); o++) {
|
|
|
- String flv = CameraUtil.getPlayFlv(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(), false);
|
|
|
+ String flv = CameraUtil.getPlayFlvRtsp(baseList.get(o).getCameraCode(), baseList.get(o).getChannel(), false);
|
|
|
AlarmListVo alarmListVo = new AlarmListVo();
|
|
|
//alarmList对象
|
|
|
alarmListVo.setCameraStream(flv);
|
|
@@ -468,6 +687,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
alarmInfoVo1.setAlarmMile(list.get(i).getAlarmMile());
|
|
|
alarmInfoVo1.setAlarmTime(list.get(i).getAlarmTime().getTime());
|
|
|
alarmInfoVo1.setAlarmType(list.get(i).getAlarmType());
|
|
|
+ alarmInfoVo1.setAlarmContent(list.get(i).getContent());
|
|
|
alarmInfoVo1.setAlarmLevel(list.get(i).getAlarmLevel());
|
|
|
LambdaQueryWrapper<MsgAlarmExt> alarm = new LambdaQueryWrapper<>();
|
|
|
alarm.eq(MsgAlarmExt::getAlarmId, list.get(0).getAlarmId());
|
|
@@ -495,22 +715,17 @@ public class GeoHazardMonitorTokenController {
|
|
|
//没有报警信息的时候
|
|
|
distance = heartbeatVo.getVisualDistance() + heartbeatVo.getCurrentMile();
|
|
|
LambdaQueryWrapper<BaseCameraManagement> base = new LambdaQueryWrapper<>();
|
|
|
- base.gt(BaseCameraManagement::getInstallMiles, distance);
|
|
|
+ base.gt(BaseCameraManagement::getInstallMile, distance);
|
|
|
base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
- base.orderByAsc(BaseCameraManagement::getInstallMiles);
|
|
|
- wrapper.last("limit 4");
|
|
|
+ base.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
+ base.last("limit 4");
|
|
|
List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
|
|
|
- String flv = CameraUtil.getPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
|
|
|
+ CameraUtil.invite(list1.get(0).getCameraCode(), list1.get(0).getChannel());
|
|
|
+ String flv = CameraUtil.getPlayFlvRtsp(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
|
|
|
for (BaseCameraManagement baseCameraManagement : list1) {
|
|
|
- String flv1 = CameraUtil.getPlayFlv(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), false);
|
|
|
+ String flv1 = CameraUtil.getPlayFlvRtsp(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel(), false);
|
|
|
twoMap.put(baseCameraManagement.getCameraCode(), flv1);
|
|
|
- String invite = CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
|
|
|
- if (!"304".equals(invite) && !"200".equals(invite)) {
|
|
|
- jsonObject.put("resultCode", 0);
|
|
|
- jsonObject.put("message", "失败");
|
|
|
- jsonObject.put("data", "视频邀约失败,视频中心没有该相机编码或通道编码的摄像头!!!");
|
|
|
- return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
- }
|
|
|
+ CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
|
|
|
}
|
|
|
respHeartbeatVo.setCurrentStream(flv);
|
|
|
respHeartbeatVo.setIsAlarm(2);
|
|
@@ -541,20 +756,32 @@ public class GeoHazardMonitorTokenController {
|
|
|
/**
|
|
|
* 司机忽略报警接口
|
|
|
*
|
|
|
- * @param parameter
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/terminal/ignore")
|
|
|
- public String terminalIgnore(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String terminalIgnore(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
TerminalIgnoreVo terminalIgnoreVo = JSON.parseObject(s, TerminalIgnoreVo.class);
|
|
|
+ if (ObjectUtils.isEmpty(terminalIgnoreVo.getTerminalCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "车载终端编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(terminalIgnoreVo.getAlarmId())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警唯一UUID不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
map.put("terminalCode", terminalIgnoreVo.getTerminalCode());
|
|
|
map.put("alarmId", terminalIgnoreVo.getAlarmId());
|
|
|
LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
|
|
@@ -598,19 +825,25 @@ public class GeoHazardMonitorTokenController {
|
|
|
/**
|
|
|
* 获取所有的相机列表接口定义
|
|
|
*
|
|
|
- * @param parameter
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/query/camera")
|
|
|
- public String camera(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String camera(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
CameraVo cameraVo = JSON.parseObject(s, CameraVo.class);
|
|
|
+ if (ObjectUtils.isEmpty(cameraVo.getTerminalCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "车载终端编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<>();
|
|
|
if (!ObjectUtils.isEmpty(cameraVo.getRailwayCode())) {
|
|
|
wrapper.eq(BaseCameraManagement::getRailwayCode, cameraVo.getRailwayCode());
|
|
@@ -619,12 +852,24 @@ public class GeoHazardMonitorTokenController {
|
|
|
wrapper.eq(BaseCameraManagement::getLineDir, cameraVo.getLineDir());
|
|
|
}
|
|
|
List<BaseCameraManagement> list = baseCameraManagementService.list(wrapper);
|
|
|
+ if (list.size() <= 0) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "没有该线路编码或行别的相机信息");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
for (BaseCameraManagement baseCameraManagement : list) {
|
|
|
LambdaQueryWrapper<BaseRailwayManagement> queryWrapper = new LambdaQueryWrapper<BaseRailwayManagement>();
|
|
|
if (!ObjectUtils.isEmpty(baseCameraManagement.getRailwayCode())) {
|
|
|
queryWrapper.eq(BaseRailwayManagement::getRailwayCode, baseCameraManagement.getRailwayCode());
|
|
|
}
|
|
|
BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(queryWrapper);
|
|
|
+ if (ObjectUtils.isEmpty(baseRailwayManagement)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "没有该线路编码的线路信息");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
baseCameraManagement.setRailwayName(baseRailwayManagement.getRailwayName());
|
|
|
}
|
|
|
list.sort(new Comparator<BaseCameraManagement>() {
|
|
@@ -665,21 +910,32 @@ public class GeoHazardMonitorTokenController {
|
|
|
/**
|
|
|
* 点播功能接口定义(直播流)
|
|
|
*
|
|
|
- * @param parameter
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/camera/play")
|
|
|
- public String cameraPlay(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String cameraPlay(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
CameraPlayVo cameraPlayVo = JSON.parseObject(s, CameraPlayVo.class);
|
|
|
-
|
|
|
+ if (ObjectUtils.isEmpty(cameraPlayVo.getTerminalCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "车载终端编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(cameraPlayVo.getCameraCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "相机编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
lw.eq(BaseCameraManagement::getCameraCode, cameraPlayVo.getCameraCode());
|
|
|
BaseCameraManagement one = baseCameraManagementService.getOne(lw);
|
|
@@ -689,7 +945,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
jsonObject.put("data", "没有该相机编码的相机");
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
- String flv = CameraUtil.getPlayFlv(one.getCameraCode(), one.getChannel());
|
|
|
+ String flv = CameraUtil.getPlayFlvRtsp(one.getCameraCode(), one.getChannel(), false);
|
|
|
map.put("url", flv);
|
|
|
jsonObject.put("resultCode", 1);
|
|
|
jsonObject.put("message", "ok");
|
|
@@ -707,19 +963,25 @@ public class GeoHazardMonitorTokenController {
|
|
|
/**
|
|
|
* 获取报警列表(已解除和未解除)
|
|
|
*
|
|
|
- * @param parameter
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/query/alarm")
|
|
|
- public String queryAlarm(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String queryAlarm(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
CameraVo cameraVo = JSON.parseObject(s, CameraVo.class);
|
|
|
+ if (ObjectUtils.isEmpty(cameraVo.getTerminalCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "车载终端编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
|
|
|
if (!ObjectUtils.isEmpty(cameraVo.getRailwayCode())) {
|
|
|
wrapper.eq(MsgAlarm::getRailwayCode, cameraVo.getRailwayCode());
|
|
@@ -728,6 +990,12 @@ public class GeoHazardMonitorTokenController {
|
|
|
wrapper.eq(MsgAlarm::getLineDir, cameraVo.getLineDir());
|
|
|
}
|
|
|
List<MsgAlarm> list = msgAlarmService.list(wrapper);
|
|
|
+ if (list.size() <= 0) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "没有该报警线路或行别的报警信息");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
QueryAlarmVo queryAlarmVo = new QueryAlarmVo();
|
|
|
List<RespAlarmList> listVos = new ArrayList<>();
|
|
|
for (MsgAlarm msgAlarm : list) {
|
|
@@ -741,14 +1009,16 @@ public class GeoHazardMonitorTokenController {
|
|
|
LambdaQueryWrapper<MsgAlarmExt> alarm = new LambdaQueryWrapper<>();
|
|
|
alarm.eq(MsgAlarmExt::getAlarmId, msgAlarm.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);
|
|
|
}
|
|
@@ -768,24 +1038,37 @@ public class GeoHazardMonitorTokenController {
|
|
|
|
|
|
/**
|
|
|
* 获取报警回放
|
|
|
- * @param parameter
|
|
|
+ *
|
|
|
+ * @param parameterVo
|
|
|
* @param request
|
|
|
* @return
|
|
|
*/
|
|
|
@PostMapping("/api/alarm/play")
|
|
|
- public String alarmPlay(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ public String alarmPlay(@RequestBody ParameterVo parameterVo, HttpServletRequest request) {
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
+ String urls = null;
|
|
|
String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
log.info("token:{}", token);
|
|
|
- log.info("parameter:{}", parameter);
|
|
|
+ log.info("parameter:{}", parameterVo);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
- String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameterVo.getParameter(), "4370780c9a8c43e5");
|
|
|
TerminalIgnoreVo terminalIgnoreVo = JSON.parseObject(s, TerminalIgnoreVo.class);
|
|
|
+ if (ObjectUtils.isEmpty(terminalIgnoreVo.getTerminalCode())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "车载终端编码不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (ObjectUtils.isEmpty(terminalIgnoreVo.getAlarmId())) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警唯一UUID不能为空");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
|
|
|
wrapper.eq(MsgAlarm::getAlarmId, terminalIgnoreVo.getAlarmId());
|
|
|
MsgAlarm one = msgAlarmService.getOne(wrapper);
|
|
|
- ArrayList<String> urls = new ArrayList<>();
|
|
|
if (ObjectUtils.isEmpty(one)) {
|
|
|
jsonObject.put("resultCode", 0);
|
|
|
jsonObject.put("message", "失败");
|
|
@@ -800,36 +1083,34 @@ public class GeoHazardMonitorTokenController {
|
|
|
camera.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
|
|
|
if (baseCameraManagementList.size() > 0) {
|
|
|
- for (BaseCameraManagement baseCameraManagement : baseCameraManagementList) {
|
|
|
- Object cacheObject = redisCache.getCacheObject("STREAMING_ALARM_VIDEO:" + baseCameraManagement.getCameraCode());
|
|
|
- if (ObjectUtils.isEmpty(cacheObject)) {
|
|
|
- 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 {
|
|
|
- url = CameraUtil.historyPlayListStr(baseCameraManagement.getChannel(),
|
|
|
- one.getAlarmTime(),
|
|
|
- new Date(),
|
|
|
- false);
|
|
|
- }
|
|
|
- urls.add(serverConfig.getUrl() + url);
|
|
|
- }else{
|
|
|
- urls.add(serverConfig.getUrl() + cacheObject);
|
|
|
+ BaseCameraManagement baseCameraManagement = baseCameraManagementList.get(0);
|
|
|
+ Object cacheObject = redisCache.getCacheObject("STREAMING_ALARM_VIDEO:" + baseCameraManagement.getCameraCode());
|
|
|
+ if (ObjectUtils.isEmpty(cacheObject)) {
|
|
|
+ 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 {
|
|
|
+ url = CameraUtil.historyPlayListStr(baseCameraManagement.getChannel(),
|
|
|
+ one.getAlarmTime(),
|
|
|
+ new Date(),
|
|
|
+ false);
|
|
|
}
|
|
|
+ urls = serverConfig.getUrl() + url;
|
|
|
+ } else {
|
|
|
+ urls = serverConfig.getUrl() + cacheObject;
|
|
|
}
|
|
|
} else {
|
|
|
- jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
jsonObject.put("message", "失败");
|
|
|
jsonObject.put("data", "没有该报警里程位置的相机");
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
- String[] array = urls.toArray(new String[]{});
|
|
|
- map.put("urls", array);
|
|
|
+ map.put("url", urls);
|
|
|
jsonObject.put("resultCode", 1);
|
|
|
jsonObject.put("message", "ok");
|
|
|
jsonObject.put("data", map);
|
|
@@ -843,10 +1124,26 @@ public class GeoHazardMonitorTokenController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private String objStr(HeartbeatVo heartbeatVoCH) {
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+ //data
|
|
|
+ obj.put("data", heartbeatVoCH);
|
|
|
+ //code
|
|
|
+ obj.put("code", 151);
|
|
|
+ log.info("【websocket消息】 机车地址信息:" + obj.toJSONString());
|
|
|
+ return obj.toJSONString();
|
|
|
+ }
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
JSONObject res = new JSONObject();
|
|
|
- res.put("terminalCode", "111");
|
|
|
+ res.put("terminalCode", "001");
|
|
|
+ res.put("currentMile", 2000);
|
|
|
+ res.put("longitude", "200");
|
|
|
+ res.put("latitude", "300");
|
|
|
+ res.put("railwayCode", "JT01");
|
|
|
+ res.put("lineDir", 1);
|
|
|
+ res.put("visualDistance", 500);
|
|
|
+ res.put("signalStrength", 1);
|
|
|
String s = SM4Utils.encryptData_ECB(JSONObject.toJSONString(res), "4370780c9a8c43e5");
|
|
|
System.out.println(s);
|
|
|
}
|