Parcourir la source

Merge branch 'master' of http://124.70.58.209:3000/ytrd-project-management/VehicleMonitor

gao.qiang il y a 1 an
Parent
commit
10e03f1612

+ 3 - 0
business-service/src/main/java/com/ozs/entity/MsgAlarm.java

@@ -227,5 +227,8 @@ public class MsgAlarm extends BaseEntity implements Serializable {
     @TableField(exist = false)
     private String  isReleaseName;
 
+    /**
+     * 解除视频URL
+     */
     private String releasedUrl;
 }

+ 8 - 1
business-service/src/main/java/com/ozs/entity/vo/MsgAlarmResp.java

@@ -99,9 +99,16 @@ public class MsgAlarmResp implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date alarmTime;
 
-    /** 报警图片地址 */
+    /**
+     * 报警图片地址
+     */
     private List<String> imageUrls;
 
+    /**
+     * 1图片;2声音;3视频;4.录制视频的地址
+     */
+    private Integer alarmAttType;
+
     /**
      * 所属工务段编码(单位名称)
      */

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

@@ -8,6 +8,7 @@ import com.ozs.entity.vo.BaseCameraManagementVo;
 import com.ozs.entity.vo.BaseCameraManagementVos;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>

+ 1 - 4
business-service/src/main/java/com/ozs/service/impl/BaseCameraManagementServiceImpl.java

@@ -26,10 +26,7 @@ import javax.annotation.Resource;
 import javax.validation.Validator;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * <p>

+ 61 - 3
vehicle-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -40,9 +40,7 @@ import javax.validation.constraints.NotNull;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.List;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -631,6 +629,66 @@ public class BaseCameraManagementController extends BaseController {
         return new AjaxResult(200, "ok", CameraUtil.getPlayFlv(cameraCode, one.getChannel(), flay));
     }
 
+    @ApiOperation("查询回放视频根据报警ID")
+    @GetMapping("/api/getRecordByAlarmId")
+    @Log(title = "相机台账管理", businessType = BusinessType.OTHER)
+    public AjaxResult getRecordByAlarmId(@RequestParam("alarmId") String alarmId) {
+        LambdaQueryWrapper<MsgAlarm> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(MsgAlarm::getAlarmId, alarmId);
+        MsgAlarm msgAlarm = msgAlarmService.getOne(wrapper);
+        if (ObjectUtils.isEmpty(msgAlarm.getReleasedUrl())) {
+            LambdaQueryWrapper<BaseRailwayManagement> wrapperRailway = new LambdaQueryWrapper<>();
+            if (!ObjectUtils.isEmpty(msgAlarm.getRailwayCode())) {
+                wrapperRailway.eq(BaseRailwayManagement::getRailwayCode, msgAlarm.getRailwayCode());
+            }
+            BaseRailwayManagement baseRailwayManagement = baseRailwayManagementService.getOne(wrapperRailway);
+            if (StringUtils.isEmptySunhh(baseRailwayManagement)) {
+                return AjaxResult.error("报警线路编码:" + msgAlarm.getRailwayCode() + "不存在!");
+            }
+            // 查询里程位置最近的相机
+            LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<>();
+            if (!StringUtils.isEmptySunhh(msgAlarm.getRailwayCode())) {
+                lw.eq(BaseCameraManagement::getRailwayCode, msgAlarm.getRailwayCode());
+            }
+            if (!StringUtils.isEmptySunhh(msgAlarm.getAlarmMile())) {
+                lw.le(BaseCameraManagement::getBeginMile, msgAlarm.getAlarmMile());
+                lw.gt(BaseCameraManagement::getEndMile, msgAlarm.getAlarmMile());
+            }
+            List<BaseCameraManagement> baseCameraManagementList = baseCameraManagementService.list(lw);
+            BaseCameraManagement baseCameraManagement = new BaseCameraManagement();
+            if (!StringUtils.isEmptySunhh(baseCameraManagementList) && baseCameraManagementList.size() > 0) {
+                baseCameraManagement = baseCameraManagementList.get(0);
+            } else {
+                return AjaxResult.error("报警里程范围内:" + msgAlarm.getAlarmMile() + "没有可查看的相机!");
+            }
+            Map<String, Object> map = new HashMap<>();
+            map.put("isLock", msgAlarm.getIsRelease());
+            map.put("releasedTime", msgAlarm.getReleasedTime());
+            map.put("alarmTime", msgAlarm.getAlarmMile());
+            map.put("channel", baseCameraManagement.getChannel());
+            map.put("cameraCode", baseCameraManagement.getCameraCode());
+            // Map<String, Object> map = baseCameraManagementService.getCameraChannelByAlarmId(alarmId);
+            if (!ObjectUtils.isEmpty(map)
+                    && map.size() > 0
+                    && !org.apache.commons.lang3.StringUtils.isBlank(map.get("channel").toString())) {
+                String url = null;
+                if (map.get("isLock").toString().equals("1")) {
+                    url = com.ozs.web.core.util.CameraUtil.historyPlayListStr(map.get("channel").toString(),
+                            (Date) map.get("alarmTime"),
+                            (Date) map.get("releasedTime"),
+                            true);
+                    msgAlarm.setReleasedUrl(url);
+                    msgAlarmService.updateById(msgAlarm);
+                }
+                return error("报警ID为:【" + alarmId + "】的相机信息还未生成报警回放视频");
+            } else {
+                return error("报警ID为:【" + alarmId + "】的相机信息不存在");
+            }
+        } else {
+            return new AjaxResult(200, "ok", caneraConfig.getRecordUrl() + msgAlarm.getReleasedUrl());
+        }
+    }
+
     @ApiOperation("播放回放-new")
     @PostMapping("/api/record")
     @Log(title = "相机台账管理", businessType = BusinessType.OTHER)

+ 17 - 2
vehicle-admin/src/main/java/com/ozs/web/controller/websocket/WebSocketCommon.java

@@ -5,11 +5,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ozs.common.core.domain.entity.SysUser;
 import com.ozs.common.utils.AppendUtils;
 import com.ozs.common.utils.StringUtils;
+import com.ozs.entity.BaseCameraManagement;
 import com.ozs.entity.MsgAlarm;
+import com.ozs.entity.MsgAlarmExt;
 import com.ozs.entity.MsgWebPush;
 import com.ozs.entity.vo.MsgAlarmResp;
 import com.ozs.service.BaseRailwayManagementService;
 import com.ozs.service.BaseUserService;
+import com.ozs.service.MsgAlarmExtService;
 import com.ozs.service.MsgWebPushService;
 import com.ozs.system.service.ISysDictDataService;
 import com.ozs.system.service.ISysUserService;
@@ -42,6 +45,8 @@ public class WebSocketCommon {
     private BaseUserService baseUserService;
     @Autowired
     private ISysDictDataService dictDataService;
+    @Autowired
+    private MsgAlarmExtService msgAlarmExtService;
 
     public Map publish(@RequestBody MsgAlarm msgAlarm) {
         String endMile = null;
@@ -73,8 +78,18 @@ public class WebSocketCommon {
         msgAlarmResp.setLineDirStr(msgAlarm.getLineDir() == 1 ? "上行" : "下行");
         msgAlarmResp.setAlarmTime(msgAlarm.getAlarmTime() != null ? msgAlarm.getAlarmTime() : new Date());
         // 图片
-        if (!StringUtils.isEmptySunhh(msgAlarm.getImageUrls())) {
-            msgAlarmResp.setImageUrls(msgAlarm.getImageUrls());
+        LambdaQueryWrapper<MsgAlarmExt> wrapper = new LambdaQueryWrapper<>();
+        if (!ObjectUtils.isEmpty(msgAlarm.getAlarmId())) {
+            wrapper.eq(MsgAlarmExt::getAlarmId, msgAlarm.getAlarmId());
+        }
+        MsgAlarmExt msgAlarmExt = msgAlarmExtService.getOne(wrapper);
+        if (!StringUtils.isEmptySunhh(msgAlarmExt) && !StringUtils.isEmptySunhh(msgAlarmExt.getAlarmAttType())
+                && !StringUtils.isEmptySunhh(msgAlarmExt.getAlarmAttPath())) {
+            String[] split = msgAlarmExt.getAlarmAttPath().split(";");
+            ArrayList<String> objects = new ArrayList<>(Arrays.asList(split));
+            log.info("publish--------" + objects);
+            msgAlarmResp.setImageUrls(objects);
+            msgAlarmResp.setAlarmAttType(msgAlarmExt.getAlarmAttType());
         }
         if (!StringUtils.isEmptySunhh(msgAlarm.getId())) {
             msgAlarmResp.setId(msgAlarm.getId());