|
@@ -1,5 +1,6 @@
|
|
|
package com.ozs.web.controller.accountmanagment;
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.ozs.common.annotation.Log;
|
|
|
import com.ozs.common.core.controller.BaseController;
|
|
@@ -7,17 +8,43 @@ import com.ozs.common.core.domain.AjaxResult;
|
|
|
import com.ozs.common.enums.BusinessType;
|
|
|
import com.ozs.common.utils.IdempotenceUtils;
|
|
|
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.BaseRailwayManagement;
|
|
|
+import com.ozs.entity.BaseUser;
|
|
|
+import com.ozs.entity.MsgAlarm;
|
|
|
+import com.ozs.entity.MsgAlarmExt;
|
|
|
+import com.ozs.entity.MsgAlarmFrequency;
|
|
|
+import com.ozs.entity.vo.Files;
|
|
|
import com.ozs.entity.vo.MsgAlarmTemporary;
|
|
|
+import com.ozs.entity.vo.ReqMsgAlarmVo;
|
|
|
+import com.ozs.service.BaseCameraManagementService;
|
|
|
+import com.ozs.service.BaseRailwayManagementService;
|
|
|
+import com.ozs.service.BaseUserService;
|
|
|
+import com.ozs.service.MsgAlarmExtService;
|
|
|
+import com.ozs.service.MsgAlarmFrequencyService;
|
|
|
+import com.ozs.service.MsgAlarmService;
|
|
|
import com.ozs.service.MsgAlarmTemporaryService;
|
|
|
+import com.ozs.service.SvcAddressService;
|
|
|
+import com.ozs.web.controller.monitor.SysUserOnlineController;
|
|
|
+import com.ozs.web.controller.websocket.WebSocketCommon;
|
|
|
+import com.ozs.web.core.util.CameraUtil;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
+import org.springframework.web.bind.annotation.GetMapping;
|
|
|
+import org.springframework.web.bind.annotation.PathVariable;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* @author Administrator
|
|
@@ -26,12 +53,35 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
@RequestMapping("/service/msgAlarmTemporary")
|
|
|
public class MsgAlarmTemporaryController extends BaseController {
|
|
|
|
|
|
+ public static final String PATTERN = "^([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+),([0-9]+)$";
|
|
|
+ public static final String PATTERNS = "^[0-9]*$";
|
|
|
+
|
|
|
@Autowired
|
|
|
private IdempotenceUtils idempotenceUtils;
|
|
|
|
|
|
@Autowired
|
|
|
private MsgAlarmTemporaryService msgAlarmTemporaryService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private BaseRailwayManagementService baseRailwayManagementService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ SvcAddressService svcAddressService;
|
|
|
+ @Autowired
|
|
|
+ BaseCameraManagementService baseCameraManagementService;
|
|
|
+ @Autowired
|
|
|
+ SysUserOnlineController sysUserOnlineController;
|
|
|
+ @Autowired
|
|
|
+ private BaseUserService baseUserService;
|
|
|
+ @Autowired
|
|
|
+ private MsgAlarmExtService msgAlarmExtService;
|
|
|
+ @Autowired
|
|
|
+ WebSocketCommon webSocketCommon;
|
|
|
+ @Autowired
|
|
|
+ private MsgAlarmService msgAlarmService;
|
|
|
+ @Autowired
|
|
|
+ private MsgAlarmFrequencyService msgAlarmFrequencyService;
|
|
|
+
|
|
|
|
|
|
@PostMapping("/saveMsgAlarmTemporary")
|
|
|
@ApiOperation("新增报警信息临时表信息")
|
|
@@ -58,4 +108,179 @@ public class MsgAlarmTemporaryController extends BaseController {
|
|
|
idempotenceUtils.deleteIdempotence(msgAlarmTemporary.getAlarmId());
|
|
|
return AjaxResult.error();
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/alarm/{id}")
|
|
|
+ @ApiOperation("报警推送假数据")
|
|
|
+ public String alarm(@PathVariable Long id) {
|
|
|
+ MsgAlarmTemporary msgAlarmTemporary = msgAlarmTemporaryService.getById(id);
|
|
|
+ ReqMsgAlarmVo reqMsgAlarmVo = new ReqMsgAlarmVo();
|
|
|
+ com.ozs.common.utils.bean.BeanUtils.copyProperties(msgAlarmTemporary, reqMsgAlarmVo);
|
|
|
+ reqMsgAlarmVo.setAlarmRailway(msgAlarmTemporary.getRailwayCode());
|
|
|
+ reqMsgAlarmVo.setAlarmTime(msgAlarmTemporary.getAlarmTime().getTime());
|
|
|
+ Files files=new Files();
|
|
|
+ files.setFileType(1);
|
|
|
+ files.setFileUrl(msgAlarmTemporary.getFileUrl());
|
|
|
+ Files[] files2=new Files[1];
|
|
|
+ files2[0]=files;
|
|
|
+ reqMsgAlarmVo.setFiles(files2);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmAttr())) {
|
|
|
+ if (!reqMsgAlarmVo.getAlarmAttr().matches(PATTERN)) {
|
|
|
+ jsonObject.put("resultCode", 0);
|
|
|
+ jsonObject.put("message", "失败");
|
|
|
+ jsonObject.put("data", "你填写的报警病害属性不符合规则!!!");
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
|
|
|
+ if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmMile())) {
|
|
|
+ wrapper.le(BaseCameraManagement::getBeginMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
+ wrapper.ge(BaseCameraManagement::getEndMile, reqMsgAlarmVo.getAlarmMile());
|
|
|
+ wrapper.eq(BaseCameraManagement::getRailwayCode, reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ wrapper.eq(BaseCameraManagement::getLineDir, reqMsgAlarmVo.getLineDir());
|
|
|
+ }
|
|
|
+ List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(wrapper);
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ MsgAlarm alarm = msgAlarmService.getOne(lw);
|
|
|
+ BaseUser admin = baseUserService.getUserName("admin");
|
|
|
+ MsgAlarmFrequency msgAlarmVice = new MsgAlarmFrequency();
|
|
|
+ if (ObjectUtils.isEmpty(alarm)) {
|
|
|
+ MsgAlarm msgAlarm = new MsgAlarm();
|
|
|
+ BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarm);
|
|
|
+ BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarmVice);
|
|
|
+ msgAlarm.setCreateBy(admin.getUserId());
|
|
|
+ msgAlarm.setUpdateBy(admin.getUserId());
|
|
|
+ msgAlarm.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ msgAlarm.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ msgAlarm.setSource("source");
|
|
|
+ msgAlarmService.save(msgAlarm);
|
|
|
+ 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);
|
|
|
+ msgAlarmExt.setAlarmAttType(files1[i].fileType);
|
|
|
+ msgAlarmExtService.save(msgAlarmExt);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ msgAlarmVice.setCreateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setUpdateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ msgAlarmFrequencyService.save(msgAlarmVice);
|
|
|
+ webSocketCommon.publish(msgAlarm);
|
|
|
+ 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()));
|
|
|
+ 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);
|
|
|
+ msgAlarmVice.setCreateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setUpdateBy(admin.getUserId());
|
|
|
+ msgAlarmVice.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
|
|
|
+ msgAlarmVice.setRailwayCode(reqMsgAlarmVo.getAlarmRailway());
|
|
|
+ msgAlarmFrequencyService.save(msgAlarmVice);
|
|
|
+ }
|
|
|
+ jsonObject.put("resultCode", 1);
|
|
|
+ jsonObject.put("message", "ok");
|
|
|
+ jsonObject.put("data", null);
|
|
|
+ return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
|
|
|
+ }
|
|
|
}
|