|
@@ -3,30 +3,53 @@ package com.ozs.web.controller.sdk;
|
|
|
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.exception.base.BaseException;
|
|
|
import com.ozs.common.utils.ApiTokenUtils;
|
|
|
+import com.ozs.common.utils.ChineseToPingyin;
|
|
|
+import com.ozs.common.utils.HeartbeatUtils;
|
|
|
import com.ozs.common.utils.HttpClientUtil;
|
|
|
+import com.ozs.common.utils.IgnoreUtils;
|
|
|
import com.ozs.common.utils.StringUtils;
|
|
|
+import com.ozs.common.utils.http.HttpUtils;
|
|
|
import com.ozs.common.utils.stateSecrets.SM4Utils;
|
|
|
import com.ozs.entity.BaseCameraManagement;
|
|
|
import com.ozs.entity.BaseDeviceDynamicManagement;
|
|
|
+import com.ozs.entity.BaseRailwayManagement;
|
|
|
+import com.ozs.entity.BaseTerminal;
|
|
|
import com.ozs.entity.BaseUser;
|
|
|
+import com.ozs.entity.CameraTree;
|
|
|
import com.ozs.entity.MsgAlarm;
|
|
|
import com.ozs.entity.MsgAlarmExt;
|
|
|
import com.ozs.entity.MsgAlarmFrequency;
|
|
|
import com.ozs.entity.SvcAddress;
|
|
|
+import com.ozs.entity.TerminalIgnoreAlarm;
|
|
|
+import com.ozs.entity.VehiclePosition;
|
|
|
+import com.ozs.entity.vo.AlarmFilesVo;
|
|
|
+import com.ozs.entity.vo.AlarmInfoVo;
|
|
|
+import com.ozs.entity.vo.AlarmListVo;
|
|
|
+import com.ozs.entity.vo.CameraVo;
|
|
|
import com.ozs.entity.vo.Files;
|
|
|
import com.ozs.entity.vo.HeartbeatVo;
|
|
|
import com.ozs.entity.vo.ReleaseAlarmVo;
|
|
|
import com.ozs.entity.vo.ReqMsgAlarmVo;
|
|
|
+import com.ozs.entity.vo.RespCameraVo;
|
|
|
import com.ozs.entity.vo.RespGeoHazardMonitorVo;
|
|
|
+import com.ozs.entity.vo.RespHeartbeatVo;
|
|
|
import com.ozs.entity.vo.RespMsgAlarmVo;
|
|
|
+import com.ozs.entity.vo.TerminalIgnoreVo;
|
|
|
import com.ozs.service.BaseCameraManagementService;
|
|
|
import com.ozs.service.BaseDeviceDynamicManagementService;
|
|
|
+import com.ozs.service.BaseRailwayManagementService;
|
|
|
+import com.ozs.service.BaseTerminalService;
|
|
|
import com.ozs.service.BaseUserService;
|
|
|
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.web.core.util.CameraUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -42,6 +65,7 @@ import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
import java.text.ParseException;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Comparator;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
@@ -74,6 +98,18 @@ public class GeoHazardMonitorTokenController {
|
|
|
private BaseUserService baseUserService;
|
|
|
@Autowired
|
|
|
private MsgAlarmExtService msgAlarmExtService;
|
|
|
+ @Autowired
|
|
|
+ private BaseTerminalService baseTerminalService;
|
|
|
+ @Autowired
|
|
|
+ private VehiclePositionService vehiclePositionService;
|
|
|
+ @Autowired
|
|
|
+ private HeartbeatUtils heartbeatUtils;
|
|
|
+ @Autowired
|
|
|
+ private TerminalIgnoreAlarmService terminalIgnoreAlarmService;
|
|
|
+ @Autowired
|
|
|
+ private IgnoreUtils ignoreUtils;
|
|
|
+ @Autowired
|
|
|
+ private BaseRailwayManagementService baseRailwayManagementService;
|
|
|
|
|
|
/**
|
|
|
* 获取web访问令牌
|
|
@@ -105,7 +141,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
respGeoHazardMonitorVo.setExpiresIn(l / 1000);
|
|
|
respGeoHazardMonitorVo.setTokenType("令牌类型");
|
|
|
jsonObject.put("resultCode", 1);
|
|
|
- jsonObject.put("message", "成功");
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
jsonObject.put("data", respGeoHazardMonitorVo);
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
} else {
|
|
@@ -154,21 +190,20 @@ public class GeoHazardMonitorTokenController {
|
|
|
}
|
|
|
log.info("reqMsgAlarmVo:{}", reqMsgAlarmVo);
|
|
|
|
|
|
-// RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
|
|
|
-// LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
-// if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmMile())) {
|
|
|
-// wrapper.ge(BaseCameraManagement::getBeginMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
-// wrapper.le(BaseCameraManagement::getEndMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
-// }
|
|
|
-// List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(wrapper);
|
|
|
-// log.info("baseCameraManagement:{}", baseCameraManagementList);
|
|
|
-// if (baseCameraManagementList.size() <= 0) {
|
|
|
-// jsonObject.put("resultCode", 0);
|
|
|
-// jsonObject.put("message", "失败");
|
|
|
-// jsonObject.put("data", "报警里程位置没有可用的相机!!!");
|
|
|
-// return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
-// }
|
|
|
- //todo 需要根据报警里程位置 拉取相机的录制视频
|
|
|
+ RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
|
|
|
+ LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
+ if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmMile())) {
|
|
|
+ wrapper.ge(BaseCameraManagement::getBeginMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
+ wrapper.le(BaseCameraManagement::getEndMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
+ }
|
|
|
+ List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(wrapper);
|
|
|
+ log.info("baseCameraManagement:{}", baseCameraManagementList);
|
|
|
+ if (baseCameraManagementList.size() <= 0) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警里程位置没有可用的相机!!!");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
LambdaQueryWrapper<MsgAlarm> lw = new LambdaQueryWrapper<MsgAlarm>();
|
|
|
if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmId())) {
|
|
|
lw.eq(MsgAlarm::getAlarmId, reqMsgAlarmVo.getAlarmId());
|
|
@@ -204,9 +239,33 @@ public class GeoHazardMonitorTokenController {
|
|
|
msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
msgAlarmFrequencyService.save(msgAlarmVice);
|
|
|
-// respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
|
|
|
-// respMsgAlarmVo.setIsCancel(2);
|
|
|
-// respMsgAlarmVo.setCancelTime(null);
|
|
|
+ for (BaseCameraManagement baseCameraManagement : baseCameraManagementList) {
|
|
|
+ String invite = CameraUtil.invite(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel());
|
|
|
+ if ("304".equals(invite) || "200".equals(invite)) {
|
|
|
+ String start = HttpUtils.sendGet(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
|
|
|
+ log.info("startRecording------------" + start);
|
|
|
+ if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
|
|
|
+ baseCameraManagement.setTaskId(start);
|
|
|
+ baseCameraManagement.setUpdateBy(admin.getUserId());
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "视频录制失败:请确认流是否存在!!!");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ if (!baseCameraManagementService.updateById(baseCameraManagement)) {
|
|
|
+ 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");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
} else {
|
|
|
BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
|
|
@@ -215,13 +274,6 @@ public class GeoHazardMonitorTokenController {
|
|
|
msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
msgAlarmFrequencyService.save(msgAlarmVice);
|
|
|
-// respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
|
|
|
-// respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
|
|
|
-// respMsgAlarmVo.setIsCancel(alarm.getIsRelease());
|
|
|
-// if (!ObjectUtils.isEmpty(alarm.getReleasedTime())) {
|
|
|
-// respMsgAlarmVo.setCancelTime(alarm.getReleasedTime().getTime());
|
|
|
-// }
|
|
|
-// respMsgAlarmVo.setCancelTime(null);
|
|
|
}
|
|
|
// try {
|
|
|
// MsgAlarm alarms = msgAlarmService.getOne(lw);
|
|
@@ -238,7 +290,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
// return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
// }
|
|
|
jsonObject.put("resultCode", 1);
|
|
|
- jsonObject.put("message", "成功");
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
jsonObject.put("data", null);
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
} else {
|
|
@@ -287,7 +339,7 @@ public class GeoHazardMonitorTokenController {
|
|
|
if (count) {
|
|
|
map.put("releaseState", 1);
|
|
|
jsonObject.put("resultCode", 1);
|
|
|
- jsonObject.put("message", "成功");
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
jsonObject.put("data", map);
|
|
|
} else {
|
|
|
map.put("releaseState", 2);
|
|
@@ -304,9 +356,18 @@ public class GeoHazardMonitorTokenController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+ /**
|
|
|
+ * 车载心跳机制交互
|
|
|
+ *
|
|
|
+ * @param parameter
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@PostMapping("/api/terminal/heartbeat")
|
|
|
public String heartbeat(@RequestParam("parameter") String parameter, 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);
|
|
@@ -314,11 +375,204 @@ public class GeoHazardMonitorTokenController {
|
|
|
if (StringUtils.isNotEmpty(token)) {
|
|
|
String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
HeartbeatVo heartbeatVo = JSON.parseObject(s, HeartbeatVo.class);
|
|
|
-// BeanUtils.copyProperties(heartbeatVo, msgAlarm);
|
|
|
+ VehiclePosition vehiclePosition = new VehiclePosition();
|
|
|
+ BeanUtils.copyProperties(heartbeatVo, vehiclePosition);
|
|
|
+ LambdaQueryWrapper<BaseTerminal> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(BaseTerminal::getTerminalCode, vehiclePosition.getTerminalCode());
|
|
|
+ BaseTerminal baseTerminal = baseTerminalService.getOne(wrapper);
|
|
|
+ vehiclePosition.setTravelMile(heartbeatVo.getCurrentMile());
|
|
|
+ vehiclePosition.setVehicleCode(baseTerminal.getVehicleCode());
|
|
|
+ //机车行驶表添加数据
|
|
|
+ boolean save = vehiclePositionService.save(vehiclePosition);
|
|
|
+ //目视距离和里程位置
|
|
|
+ if (save) {
|
|
|
+ LambdaQueryWrapper<MsgAlarm> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.le(MsgAlarm::getAlarmMile, heartbeatVo.getCurrentMile());
|
|
|
+ queryWrapper.ge(MsgAlarm::getAlarmMile, (heartbeatVo.getCurrentMile() + 10000));
|
|
|
+ queryWrapper.eq(MsgAlarm::getLineDir, heartbeatVo.getLineDir());
|
|
|
+ queryWrapper.orderByAsc(MsgAlarm::getAlarmMile);
|
|
|
+ List<MsgAlarm> list = msgAlarmService.list(queryWrapper);
|
|
|
+ //有报警信息的时候
|
|
|
+ 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.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
+ camera.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
+ List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(camera);
|
|
|
+ if (baseCameraManagementList.size() > 0) {
|
|
|
+ //获取视频点播地址
|
|
|
+ String playFlv = CameraUtil.getPlayFlv(baseCameraManagementList.get(0).getCameraCode(), baseCameraManagementList.get(0).getChannel(), false);
|
|
|
+ respHeartbeatVo.setCurrentStream(playFlv);
|
|
|
+ respHeartbeatVo.setIsAlarm(1);
|
|
|
+ respHeartbeatVo.setCameraCode(baseCameraManagementList.get(0).getCameraCode());
|
|
|
+ twoMap.put(respHeartbeatVo.getCameraCode(), respHeartbeatVo.getCurrentStream());
|
|
|
+ //alarmInfo对象
|
|
|
+ AlarmInfoVo alarmInfoVo = new AlarmInfoVo();
|
|
|
+ alarmInfoVo.setAlarmId(list.get(0).getAlarmId());
|
|
|
+ alarmInfoVo.setAlarmMile(list.get(0).getAlarmMile());
|
|
|
+ alarmInfoVo.setAlarmTime(list.get(0).getAlarmTime().getTime());
|
|
|
+ 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);
|
|
|
+ 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);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警里程无可用相机");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
+ //获取剩余的报警信息
|
|
|
+ LambdaQueryWrapper<BaseCameraManagement> ment = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
+ ment.ge(BaseCameraManagement::getBeginMile, list.get(i).getAlarmMile());
|
|
|
+ ment.le(BaseCameraManagement::getEndMile, list.get(i).getAlarmMile());
|
|
|
+ ment.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
+ ment.orderByAsc(BaseCameraManagement::getInstallMile);
|
|
|
+ if (i == 0) {
|
|
|
+ wrapper.last("limit 1,1000000");
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ List<AlarmListVo> listVos = new ArrayList<>();
|
|
|
+ AlarmListVo alarmListVo = new AlarmListVo();
|
|
|
+ //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());
|
|
|
+ alarmInfoVo1.setAlarmMile(list.get(i).getAlarmMile());
|
|
|
+ alarmInfoVo1.setAlarmTime(list.get(i).getAlarmTime().getTime());
|
|
|
+ alarmInfoVo1.setAlarmType(list.get(i).getAlarmType());
|
|
|
+ alarmInfoVo1.setAlarmLevel(list.get(i).getAlarmLevel());
|
|
|
+ AlarmFilesVo[] vo = new AlarmFilesVo[1];
|
|
|
+ LambdaQueryWrapper<MsgAlarmExt> alarm = new LambdaQueryWrapper<>();
|
|
|
+ alarm.eq(MsgAlarmExt::getAlarmId, list.get(0).getAlarmId());
|
|
|
+ MsgAlarmExt msgAlarmExt = msgAlarmExtService.getOne(alarm);
|
|
|
+ vo[0] = new AlarmFilesVo();
|
|
|
+ vo[0].setAlarmAttType(msgAlarmExt.getAlarmAttType());
|
|
|
+ vo[0].setAlarmAttPath(msgAlarmExt.getAlarmAttPath());
|
|
|
+ //返回结果
|
|
|
+ alarmInfoVo1.setAlarmFiles(vo);
|
|
|
+ listVos.add(alarmListVo);
|
|
|
+ AlarmListVo[] array = listVos.toArray(new AlarmListVo[]{});
|
|
|
+ respHeartbeatVo.setAlarmList(array);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "报警里程无可用相机");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //没有报警信息的时候
|
|
|
+ distance = heartbeatVo.getVisualDistance() + heartbeatVo.getCurrentMile();
|
|
|
+ LambdaQueryWrapper<BaseCameraManagement> base = new LambdaQueryWrapper<>();
|
|
|
+ base.gt(BaseCameraManagement::getInstallMiles, distance);
|
|
|
+ base.eq(BaseCameraManagement::getLineDir, heartbeatVo.getLineDir());
|
|
|
+ base.orderByAsc(BaseCameraManagement::getInstallMiles);
|
|
|
+ wrapper.last("limit 4");
|
|
|
+ List<BaseCameraManagement> list1 = baseCameraManagementService.list(base);
|
|
|
+ String flv = CameraUtil.getPlayFlv(list1.get(0).getCameraCode(), list1.get(0).getChannel(), false);
|
|
|
+ for (BaseCameraManagement baseCameraManagement : list1) {
|
|
|
+ String flv1 = CameraUtil.getPlayFlv(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");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ respHeartbeatVo.setCurrentStream(flv);
|
|
|
+ respHeartbeatVo.setIsAlarm(2);
|
|
|
+ respHeartbeatVo.setCameraCode(list1.get(0).getCameraCode());
|
|
|
+ respHeartbeatVo.setAlarmList(null);
|
|
|
+ respHeartbeatVo.setAlarmInfo(null);
|
|
|
+ }
|
|
|
+ heartbeatUtils.createHeartbeat(heartbeatVo.getTerminalCode(), twoMap);
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
+ jsonObject.put("data", respHeartbeatVo);
|
|
|
+ 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");
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ jsonObject.put("resultCode", 2);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "token验证失败");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
|
|
|
- jsonObject.put("resultCode", 1);
|
|
|
- jsonObject.put("message", "成功");
|
|
|
- jsonObject.put("data", null);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 司机忽略报警接口
|
|
|
+ *
|
|
|
+ * @param parameter
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/api/terminal/ignore")
|
|
|
+ public String terminalIgnore(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ log.info("token:{}", token);
|
|
|
+ log.info("parameter:{}", parameter);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ if (StringUtils.isNotEmpty(token)) {
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ TerminalIgnoreVo terminalIgnoreVo = JSON.parseObject(s, TerminalIgnoreVo.class);
|
|
|
+ map.put("terminalCode", terminalIgnoreVo.getTerminalCode());
|
|
|
+ map.put("alarmId", terminalIgnoreVo.getAlarmId());
|
|
|
+ LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(MsgAlarm::getAlarmId, terminalIgnoreVo.getAlarmId());
|
|
|
+ MsgAlarm msgAlarm = msgAlarmService.getOne(wrapper);
|
|
|
+ if (ObjectUtils.isEmpty(msgAlarm)) {
|
|
|
+ map.put("isIgnore", 1);
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", map);
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
+ TerminalIgnoreAlarm terminalIgnoreAlarm = new TerminalIgnoreAlarm();
|
|
|
+ terminalIgnoreAlarm.setAlarmId(terminalIgnoreVo.getAlarmId());
|
|
|
+ terminalIgnoreAlarm.setTerminalCode(terminalIgnoreVo.getTerminalCode());
|
|
|
+ terminalIgnoreAlarm.setIgnoreTime(new Date());
|
|
|
+ terminalIgnoreAlarm.setCreateBy(terminalIgnoreVo.getTerminalCode());
|
|
|
+ terminalIgnoreAlarm.setUpdateBy(terminalIgnoreVo.getTerminalCode());
|
|
|
+ boolean save = terminalIgnoreAlarmService.save(terminalIgnoreAlarm);
|
|
|
+ if (save) {
|
|
|
+ ignoreUtils.createIgnore("HL" + terminalIgnoreAlarm.getTerminalCode(), terminalIgnoreAlarm.getAlarmId());
|
|
|
+ map.put("isIgnore", 2);
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
+ jsonObject.put("data", map);
|
|
|
+ } else {
|
|
|
+ map.put("isIgnore", 3);
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", map);
|
|
|
+ }
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
} else {
|
|
|
jsonObject.put("resultCode", 2);
|
|
@@ -326,15 +580,79 @@ public class GeoHazardMonitorTokenController {
|
|
|
jsonObject.put("data", "token验证失败");
|
|
|
return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取所有的相机列表接口定义
|
|
|
+ *
|
|
|
+ * @param parameter
|
|
|
+ * @param request
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/api/query/camera")
|
|
|
+ public String camera(@RequestParam("parameter") String parameter, HttpServletRequest request) {
|
|
|
+ String token = apiTokenUtils.getGeoHazardMonitorToken(request);
|
|
|
+ log.info("token:{}", token);
|
|
|
+ log.info("parameter:{}", parameter);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ if (StringUtils.isNotEmpty(token)) {
|
|
|
+ String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
|
|
|
+ CameraVo cameraVo = JSON.parseObject(s, CameraVo.class);
|
|
|
+ LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ if (!ObjectUtils.isEmpty(cameraVo.getRailwayCode())) {
|
|
|
+ wrapper.eq(BaseCameraManagement::getRailwayCode, cameraVo.getRailwayCode());
|
|
|
+ }
|
|
|
+ if (!ObjectUtils.isEmpty(cameraVo.getLineDir())) {
|
|
|
+ wrapper.eq(BaseCameraManagement::getLineDir, cameraVo.getLineDir());
|
|
|
+ }
|
|
|
+ List<BaseCameraManagement> list = baseCameraManagementService.list(wrapper);
|
|
|
+ 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);
|
|
|
+ baseCameraManagement.setRailwayName(baseRailwayManagement.getRailwayName());
|
|
|
+ }
|
|
|
+ list.sort(new Comparator<BaseCameraManagement>() {
|
|
|
+ @Override
|
|
|
+ public int compare(BaseCameraManagement o1, BaseCameraManagement o2) {
|
|
|
+ String name1 = ChineseToPingyin.convertHanziToPinyin(o1.getRailwayName());
|
|
|
+ String substring1 = name1.substring(0, 1);
|
|
|
+ String name2 = ChineseToPingyin.convertHanziToPinyin(o2.getRailwayName());
|
|
|
+ String substring2 = name2.substring(0, 1);
|
|
|
+ int i = substring1.compareTo(substring2);
|
|
|
+ if (i == 0) {
|
|
|
+ return -o1.getInstallMile() - o2.getInstallMile();
|
|
|
+ } else {
|
|
|
+ return i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ List<RespCameraVo> cameraVos=new ArrayList<>();
|
|
|
+ for (BaseCameraManagement baseCameraManagement : list) {
|
|
|
+ RespCameraVo respCameraVo=new RespCameraVo();
|
|
|
+ BeanUtils.copyProperties(baseCameraManagement, respCameraVo);
|
|
|
+ respCameraVo.setRailwayCame(baseCameraManagement.getRailwayName());
|
|
|
+ cameraVos.add(respCameraVo);
|
|
|
+ }
|
|
|
+
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
+ jsonObject.put("data", cameraVos);
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }else {
|
|
|
+ jsonObject.put("resultCode", 2);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "token验证失败");
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
public static void main(String[] args) {
|
|
|
JSONObject res = new JSONObject();
|
|
|
- res.put("alarmId", "42010001541320001115");
|
|
|
- res.put("releaseTime", 1681200512L);
|
|
|
- res.put("releaseContent", "已处理");
|
|
|
- res.put("operator", 1);
|
|
|
+ res.put("terminalCode", "111");
|
|
|
String s = SM4Utils.encryptData_ECB(JSONObject.toJSONString(res), "4370780c9a8c43e5");
|
|
|
System.out.println(s);
|
|
|
}
|