소스 검색

第三方报警系统推送页面开发

gao.qiang 1 년 전
부모
커밋
94504a97b3

+ 3 - 2
business-service/src/main/java/com/ozs/entity/vo/MsgAlarmTemporary.java

@@ -7,6 +7,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ozs.common.annotation.Excel;
 import com.ozs.common.core.domain.BaseEntity;
 import com.ozs.entity.BaseRailwayManagement;
+import com.ozs.entity.MsgAlarmExt;
 import io.swagger.annotations.ApiModel;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
@@ -95,8 +96,8 @@ public class MsgAlarmTemporary  implements Serializable {
      */
     private String alarmAttr;
 
-    private String files;
-
+    private String fileUrl;
+    
     /**
      * 线路名称
      */

+ 1 - 0
business-service/src/main/java/com/ozs/service/MsgAlarmTemporaryService.java

@@ -1,6 +1,7 @@
 package com.ozs.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.entity.vo.MsgAlarmTemporary;
 
 public interface MsgAlarmTemporaryService extends IService<MsgAlarmTemporary> {

+ 2 - 0
business-service/src/main/java/com/ozs/service/impl/MsgAlarmTemporaryServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ozs.service.impl;
 
+
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ozs.entity.vo.MsgAlarmTemporary;
 import com.ozs.mapper.MsgAlarmTemporaryMapper;
@@ -8,4 +9,5 @@ import org.springframework.stereotype.Service;
 
 @Service
 public class MsgAlarmTemporaryServiceImpl extends ServiceImpl<MsgAlarmTemporaryMapper, MsgAlarmTemporary> implements MsgAlarmTemporaryService {
+    
 }

+ 225 - 0
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/MsgAlarmTemporaryController.java

@@ -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");
+    }
 }