Parcourir la source

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

wyyay il y a 2 ans
Parent
commit
60de5e0d01

+ 12 - 0
business-service/src/main/java/com/ozs/service/entity/BaseCameraManagement.java

@@ -106,6 +106,18 @@ public class BaseCameraManagement extends BaseEntity implements Serializable {
     @Excel(name = "物联网卡号")
     private String cardNum;
 
+    /**
+     * 是否开启录像(1开启2不开启)
+     */
+    @Excel(name = "是否开启录像")
+    private Integer startRecording;
+
+    /**
+     * 录像接口返回的任务ID
+     */
+    @Excel(name = "录像接口返回的任务ID")
+    private String taskId;
+
 
     /**
      * 监控相机安装里程位置字符串形式

+ 65 - 0
business-service/src/main/java/com/ozs/service/entity/BaseDept.java

@@ -0,0 +1,65 @@
+package com.ozs.service.entity;
+
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("Base部门表")
+public class BaseDept implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 部门ID
+     */
+    private Long deptId;
+
+    /**
+     * 父部门ID
+     */
+    private Long parentId;
+
+    /**
+     * 祖级列表
+     */
+    private String ancestors;
+
+    private String deptName;
+
+    private Integer orderNum;
+
+    /**
+     * 负责人
+     */
+    private String leader;
+
+    private String phone;
+
+    private String email;
+
+    /**
+     * 部门状态:0正常,1停用
+     */
+    private String status;
+
+    /**
+     * 删除标志(0代表存在 2代表删除)
+     */
+    private String delFlag;
+
+    /**
+     * 父部门名称
+     */
+    private String parentName;
+}

+ 63 - 0
business-service/src/main/java/com/ozs/service/entity/BaseUser.java

@@ -0,0 +1,63 @@
+package com.ozs.service.entity;
+
+
+import com.ozs.common.annotation.Excel;
+import com.ozs.common.annotation.Excels;
+import com.ozs.common.core.domain.entity.SysDept;
+import com.ozs.common.core.domain.entity.SysRole;
+import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @author Administrator
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@ApiModel("Base用户表")
+public class BaseUser implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /** 主键ID */
+    private Long id;
+
+    /** 用户ID */
+    private String userId;
+
+    /** 部门ID */
+    private Long deptId;
+
+    /** 用户账号 */
+    private String userName;
+
+    /** 用户昵称 */
+    private String nickName;
+
+    /** 用户邮箱 */
+    private String email;
+
+    /** 手机号码 */
+    private String phoneNum;
+
+    /** 用户性别 */
+    private Integer sex;
+
+    /** 用户头像 */
+    private String avatar;
+
+    /** 密码 */
+    private String password;
+
+    /** 帐号状态(0正常 1停用) */
+    private Integer status;
+
+    /** 删除标志(0代表存在 2代表删除) */
+    private Integer delFlag;
+}

+ 7 - 2
business-service/src/main/java/com/ozs/service/entity/vo/MsgAlarmResp.java

@@ -64,9 +64,9 @@ public class MsgAlarmResp implements Serializable {
     private String installLongitude;
 
     /**
-     * 解除人
+     * 报警是否解除 1已解除2未解除
      */
-    private String releasedBy;
+    private Integer isLock;
 
     /**
      * 解除时间
@@ -74,4 +74,9 @@ public class MsgAlarmResp implements Serializable {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private Date releasedTime;
 
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+
 }

+ 32 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseUserMapper.java

@@ -0,0 +1,32 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.BaseUser;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Administrator
+ */
+@Mapper
+public interface BaseUserMapper extends BaseMapper<BaseUser> {
+    
+    Set<String> getUserIdList(@Param("userId") String userId);
+
+    Set<String> getUserIdByDeptId(@Param("deptId") Long deptId);
+
+    List<Long> getDeptId(@Param("deptId") Long deptId);
+
+    Set<String> getUserIdByDeptIds(@Param("deptList") List<Long> deptList);
+
+    Set<String> getUserIdByDeptIdAndUserId(@Param("userId") String userId, @Param("deptId") Long deptId);
+
+    Set<String> getUserIdListBy5(@Param("userId") String userId);
+
+    Set<String> getUserIdByDeptIdsBy5(@Param("deptList") List<Long> deptList);
+
+    Set<String> getUserIdList6();
+}

+ 15 - 0
business-service/src/main/java/com/ozs/service/service/BaseUserService.java

@@ -0,0 +1,15 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.BaseCameraManagement;
+import com.ozs.service.entity.BaseUser;
+
+import java.util.Set;
+
+/**
+ * @author Administrator
+ */
+public interface BaseUserService extends IService<BaseUser> {
+
+    Set<String> getUserIdList(String createBy, Long deptId);
+}

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

@@ -56,7 +56,7 @@ public class BaseCameraManagementServiceImpl extends ServiceImpl<BaseCameraManag
                     lw.eq(BaseCameraManagement::getId, accountManagement.getCameraCode());
                 }
                 BaseCameraManagement baseAccountManagement = baseCameraManagementMapper.selectOne(lw);
-                if (!ObjectUtils.isEmpty(baseAccountManagement)) {
+                if (ObjectUtils.isEmpty(baseAccountManagement)) {
                     BeanValidators.validateWithException(validator, accountManagement);
                     baseCameraManagementMapper.insert(accountManagement);
                     successNum++;

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

@@ -54,7 +54,7 @@ public class BaseRailwayManagementServiceImpl extends ServiceImpl<BaseRailwayMan
                     lw.eq(BaseRailwayManagement::getRailwayCode, railwayManagement.getRailwayCode());
                 }
                 BaseRailwayManagement baseLineManagement = baseRailwayManagementMapper.selectOne(lw);
-                if (!ObjectUtils.isEmpty(baseLineManagement)) {
+                if (ObjectUtils.isEmpty(baseLineManagement)) {
                     BeanValidators.validateWithException(validator, railwayManagement);
                     baseRailwayManagementMapper.insert(railwayManagement);
                     successNum++;

+ 56 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseUserServiceImpl.java

@@ -0,0 +1,56 @@
+package com.ozs.service.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.service.entity.BaseUser;
+import com.ozs.service.mapper.BaseUserMapper;
+import com.ozs.service.service.BaseUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Administrator
+ */
+@Service
+public class BaseUserServiceImpl extends ServiceImpl<BaseUserMapper, BaseUser> implements BaseUserService {
+    @Autowired
+    private BaseUserMapper baseUserMapper;
+
+    @Override
+    public Set<String> getUserIdList(String createBy, Long deptId) {
+        Set<String> set = new HashSet<>();
+        // 根据create_by、data_permission=1(本人)
+        Set<String> set1 = baseUserMapper.getUserIdList(createBy);
+        set.addAll(set1);
+        // 根据 dept_id(本部门)data_permission=2
+        Set<String> set2 = baseUserMapper.getUserIdByDeptId(deptId);
+        set.addAll(set2);
+        // 根据 dept_id(本部门及下级部门数据) data_permission=3
+        // 获取部门数据
+        List<Long> deptList = baseUserMapper.getDeptId(deptId);
+        // 获取用户列表
+        Set<String> set3 = baseUserMapper.getUserIdByDeptIds(deptList);
+        set.addAll(set3);
+        // 本人及本级部门数据 data_permission=4
+        Set<String> set4 = baseUserMapper.getUserIdByDeptIdAndUserId(createBy, deptId);
+        set.addAll(set4);
+        // 本人及本部门及下级部门数据 data_permission=5
+        // 获取本人
+        Set<String> setUser = baseUserMapper.getUserIdListBy5(createBy);
+        // 获取部门数据
+        List<Long> deptList5 = baseUserMapper.getDeptId(deptId);
+        // 获取用户列表
+        Set<String> setUsers = baseUserMapper.getUserIdByDeptIdsBy5(deptList5);
+        Set<String> set5 = new HashSet<>();
+        set5.addAll(setUser);
+        set5.addAll(setUsers);
+        set.addAll(set5);
+        // 全部 data_permission=6
+        Set<String> set6 = baseUserMapper.getUserIdList6();
+        set.addAll(set6);
+        return set;
+    }
+}

+ 1 - 0
business-service/src/main/resources/mapper/service/BaseCameraManagementMapper.xml

@@ -2,4 +2,5 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ozs.service.mapper.BaseCameraManagementMapper">
 
+
 </mapper>

+ 58 - 0
business-service/src/main/resources/mapper/service/BaseUserMapper.xml

@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.service.mapper.BaseUserMapper">
+
+    <select id="getUserIdList" resultType="java.lang.String" parameterType="java.lang.String">
+        select user_id
+        from sys_user
+        where user_id = #{userId}
+          and data_permission = 1
+    </select>
+
+    <select id="getUserIdByDeptId" resultType="java.lang.String" parameterType="java.lang.Long">
+        select user_id
+        from sys_user
+        where dept_id = #{deptId}
+          and data_permission = 2
+    </select>
+
+    <select id="getDeptId" resultType="java.lang.Long" parameterType="java.lang.Long">
+        select dept_id
+        from sys_dept
+        where find_in_set(#{deptId}, ancestors)
+    </select>
+
+    <select id="getUserIdByDeptIds" resultType="java.util.List" parameterType="java.lang.Long">
+        select user_id
+        from sys_user
+        where dept_id in #{deptList}
+          and data_permission = 3
+    </select>
+
+    <select id="getUserIdByDeptIdAndUserId" resultType="java.lang.String">
+        select user_id
+        from sys_user
+        where (user_id = #{userId} or dept_id = #{deptId})
+          and data_permission = 4
+    </select>
+
+    <select id="getUserIdListBy5" resultType="java.lang.String" parameterType="java.lang.String">
+        select user_id
+        from sys_user
+        where user_id = #{userId}
+          and data_permission = 5
+    </select>
+
+    <select id="getUserIdByDeptIdsBy5" resultType="java.util.List" parameterType="java.lang.Long">
+        select user_id
+        from sys_user
+        where dept_id in #{deptList}
+          and data_permission = 5
+    </select>
+
+    <select id="getUserIdList6" resultType="java.lang.String">
+        select user_id
+        from sys_user
+        where data_permission = 6
+    </select>
+</mapper>

+ 37 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseCameraManagementController.java

@@ -167,6 +167,14 @@ public class BaseCameraManagementController extends BaseController {
     @ApiOperation("新增相机台账管理信息")
     @Transactional
     public AjaxResult saveDistributionModule(@RequestBody BaseCameraManagement baseCameraManagement) {
+        LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
+        if (!ObjectUtils.isEmpty(baseCameraManagement.getCameraCode())) {
+            lw.eq(BaseCameraManagement::getCameraCode, baseCameraManagement.getCameraCode());
+        }
+        BaseCameraManagement cameraManagement = baseCameraManagementService.getOne(lw);
+        if (!ObjectUtils.isEmpty(cameraManagement)) {
+            return error("相机编码已存在,不能重复添加");
+        }
         int miles = AppendUtils.stringSplit(baseCameraManagement.getBeginMiles());
         baseCameraManagement.setBeginMile(miles);
         int install = AppendUtils.stringSplit(baseCameraManagement.getInstallMiles());
@@ -179,6 +187,13 @@ public class BaseCameraManagementController extends BaseController {
         baseDynamicManagement.setCameraCode(baseCameraManagement.getCameraCode());
         baseDynamicManagement.setUpdateBy(getUserId());
         baseDynamicManagement.setCreateBy(getUserId());
+        String start = HttpUtils.sendGet(CameraUtil.startRecording(baseCameraManagement.getCameraCode(), baseCameraManagement.getChannel()));
+        if (start.startsWith(baseCameraManagement.getCameraCode() + "/" + baseCameraManagement.getChannel())) {
+            baseCameraManagement.setStartRecording(1);
+            baseCameraManagement.setTaskId(start);
+        } else {
+            baseCameraManagement.setStartRecording(2);
+        }
         if (baseCameraManagementService.save(baseCameraManagement) && baseDeviceDynamicManagementService.save(baseDynamicManagement)) {
             return AjaxResult.success();
         }
@@ -194,6 +209,14 @@ public class BaseCameraManagementController extends BaseController {
     @PutMapping("/editAccountManagement")
     @ApiOperation("修改相机台账管理信息")
     public AjaxResult editAccountManagement(@RequestBody BaseCameraManagement baseCameraManagement) {
+        LambdaQueryWrapper<BaseCameraManagement> lw = new LambdaQueryWrapper<BaseCameraManagement>();
+        if (!ObjectUtils.isEmpty(baseCameraManagement.getCameraCode())) {
+            lw.eq(BaseCameraManagement::getCameraCode, baseCameraManagement.getCameraCode());
+        }
+        BaseCameraManagement cameraManagement = baseCameraManagementService.getOne(lw);
+        if (!ObjectUtils.isEmpty(cameraManagement)) {
+            return error("相机编码已存在,不能进行修改操作");
+        }
         int miles = AppendUtils.stringSplit(baseCameraManagement.getBeginMiles());
         baseCameraManagement.setBeginMile(miles);
         int install = AppendUtils.stringSplit(baseCameraManagement.getInstallMiles());
@@ -368,6 +391,20 @@ public class BaseCameraManagementController extends BaseController {
         return success(baseDeviceDynamicManagementService.cameraTree(name));
     }
 
+    @ApiOperation("关闭视频录制")
+    @GetMapping("/endRecording/{id}")
+    public AjaxResult endRecording(@PathVariable Long id) {
+        BaseCameraManagement baseCameraManagement = baseCameraManagementService.getById(id);
+        String start = HttpUtils.sendGet(CameraUtil.endRecording(baseCameraManagement.getTaskId()));
+        if ("success".equals(start)) {
+            baseCameraManagement.setStartRecording(2);
+            if (baseCameraManagementService.updateById(baseCameraManagement)) {
+                return success();
+            }
+        }
+        return error("关闭视频录制失败");
+    }
+
     @GetMapping(value = "/getAlarm/{cameraCode}")
     @ApiOperation("根据视频ID获取详细信息")
     public AjaxResult getAlarm(@PathVariable String cameraCode) {

+ 195 - 55
hazard-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java

@@ -3,15 +3,18 @@ package com.ozs.web.core.util;
 
 import com.alibaba.fastjson2.JSON;
 import com.ozs.common.config.BaseConfig;
+import com.ozs.common.core.domain.AjaxResult;
 import com.ozs.common.exception.base.BaseException;
 import com.ozs.common.utils.DateUtils;
 import com.ozs.common.utils.http.HttpUtils;
 import com.ozs.web.core.config.CaneraConfig;
+import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
+import org.springframework.web.bind.annotation.GetMapping;
 
 import javax.annotation.PostConstruct;
 import java.io.*;
@@ -45,12 +48,21 @@ public class CameraUtil {
      * @return
      * @throws IOException
      */
-    public static String historyPlay(List<String> fromVideoFileList, String ph) throws IOException {
+    public static String historyPlay(List<String> fromVideoFileList, String ph) {
         // 视频服务映射路径
         String NewfilePath = flvPath + ph;
         log.info("NewfilePath:{}", NewfilePath);
         log.info("fromVideoFileList:{}", fromVideoFileList);
-        convetor(fromVideoFileList, NewfilePath);
+        new Thread(() -> {
+            try {
+                myConvetor(fromVideoFileList, NewfilePath);
+            } catch (IOException e) {
+                log.error(e.getMessage());
+                e.printStackTrace();
+            }
+        }).start();
+        // windows可以 linux不行
+//        convetor(fromVideoFileList, NewfilePath);
         return mappingUrl + "record/flv/hazard/" + ph;
     }
 
@@ -65,6 +77,27 @@ public class CameraUtil {
         return historyUrl + "/hdl/" + channel + "/" + cameraCode + ".flv";
     }
 
+    /**
+     * 开启录制功能
+     *
+     * @param cameraCode 相机编码
+     * @param channel    相机通道
+     * @return
+     */
+    public static String startRecording(String cameraCode, String channel) {
+        return historyUrl + "/api/record/flv/start?streamPath=" + channel + "/" + cameraCode;
+    }
+
+    /**
+     * 关闭录制功能
+     *
+     * @param taskId 录像接口返回的任务ID
+     * @return
+     */
+    public static String endRecording(String taskId) {
+        return historyUrl + "/api/record/flv/stop?id=" + taskId;
+    }
+
     /**
      * 实时播放
      *
@@ -83,12 +116,12 @@ public class CameraUtil {
 
     public static String historyPlayListStr(String channel, Date startTm, Date endTm) {
         List<String> list = historyPlayList(channel, startTm, endTm, filePath);
-        String ph = "flv/" + DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date())
-                + "-" + channel + "-"
+        String ph = "flv/" + DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, new Date())
+                + "/" + channel + "/"
                 + UUID.randomUUID().toString() + ".flv";
         try {
             return historyPlay(list, ph);
-        } catch (IOException e) {
+        } catch (Exception e) {
             log.error(e.getMessage());
             e.printStackTrace();
         }
@@ -167,61 +200,82 @@ public class CameraUtil {
      * **String NewfilePath 合并后的视频存放地址,如:E:/mergevideo.mp4***
      */
     public static void convetor(List<String> fromVideoFileList,
-                                String NewfilePath) throws IOException {
+                                String newfilePath) throws IOException {
+        File file = new File(newfilePath);
+        if (!file.getParentFile().exists()) {
+            file.getParentFile().mkdirs();
+            log.info("创建文件夹:{}", file.getParentFile().getPath());
+        }
+        log.info("newfilePath:{}", newfilePath);
+        Runtime.getRuntime().exec("chmod 777 " + file.getParentFile().getPath());
         List<String> voidTS = new ArrayList<>();
         Process process = null;
         ProcessBuilder builder = null;
         List<String> command = null;
-
+        String substr = fromVideoFileList.get(0).substring(0, fromVideoFileList.get(0).lastIndexOf("/"));
+        log.info("substr:{}", substr);
+        Runtime.getRuntime().exec("chmod 777 " + substr);
+        // 转化为临时文件 .ts  放入到 voidTS里面
         for (int i = 0; i < fromVideoFileList.size(); i++) {
             String fromVideoFile = fromVideoFileList.get(i);
-            command = new ArrayList<String>();
-            command.add(ffmpegPath);
-            command.add("-y");
-            command.add("-i");
-            command.add(fromVideoFile);
-            command.add("-vcodec");
-            command.add("copy");
-            command.add("-bsf:v");
-            command.add("h264_mp4toannexb");
-            command.add("-f");
-            command.add("mpegts");
-            fromVideoFile = fromVideoFile.substring(fromVideoFile.lastIndexOf("/") + 1, fromVideoFile.length());
-            String n = flvPath + fromVideoFile.substring(0,
-                    fromVideoFile.lastIndexOf("."));
-            command.add(n + ".ts");
-            builder = new ProcessBuilder(command);
-            voidTS.add(n + ".ts");
-            try {
-                process = builder.start();
-                InputStream errorStream = process
-                        .getErrorStream();
-                InputStreamReader inputStreamReader = new InputStreamReader(
-                        errorStream);
-                BufferedReader br = new BufferedReader(
-                        inputStreamReader);
-                String line = "";
-                StringBuffer sb = new StringBuffer();
-                while ((line = br.readLine()) != null) {
-                    sb.append(line);
+            File file1 = new File(fromVideoFile);
+            if (file1.exists()) {
+                log.info("文件存在:{}", fromVideoFile);
+                command = new ArrayList<String>();
+                command.add(ffmpegPath);
+                command.add("-y");
+                command.add("-i");
+                command.add(fromVideoFile);
+                command.add("-vcodec");
+                command.add("copy");
+                command.add("-bsf:v");
+                command.add("h264_mp4toannexb");
+                command.add("-f");
+                command.add("mpegts");
+                command.add(fromVideoFile.substring(0,
+                        fromVideoFile.lastIndexOf(".")) + ".ts");
+                builder = new ProcessBuilder(command);
+                voidTS.add(fromVideoFile.substring(0,
+                        fromVideoFile.lastIndexOf(".")) + ".ts");
+                try {
+                    process = builder.start();
+                    InputStream errorStream = process
+                            .getErrorStream();
+                    InputStreamReader inputStreamReader = new InputStreamReader(
+                            errorStream);
+                    BufferedReader br = new BufferedReader(
+                            inputStreamReader);
+                    String line = "";
+                    StringBuffer sb = new StringBuffer();
+                    while ((line = br.readLine()) != null) {
+                        sb.append(line);
+                    }
+                    String regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
+                    Pattern pattern = Pattern
+                            .compile(regexDuration);
+                    Matcher m = pattern.matcher(sb.toString());
+                    System.out.println(sb.toString());
+                    br.close();
+                    inputStreamReader.close();
+                    errorStream.close();
+                } catch (IOException e) {
+                    log.error(e.getMessage());
+                    e.printStackTrace();
                 }
-                String regexDuration = "Duration: (.*?), start: (.*?), bitrate: (\\d*) kb\\/s";
-                Pattern pattern = Pattern
-                        .compile(regexDuration);
-                Matcher m = pattern.matcher(sb.toString());
-                System.out.println(sb.toString());
-                br.close();
-                inputStreamReader.close();
-                errorStream.close();
-            } catch (IOException e) {
-                e.printStackTrace();
+            } else {
+                log.info("文件不存在:{}", fromVideoFile);
             }
         }
+        for (String voidT : voidTS) {
+            Runtime.getRuntime().exec("chmod 777 " + voidT);
+        }
+        log.info("ffmpegPath:{}", ffmpegPath);
         List<String> dos = new ArrayList<>();
         StringBuffer tsPath = new StringBuffer();
         tsPath.append(ffmpegPath);
         tsPath.append(" -i ");
         tsPath.append("concat:");
+        log.info("voidTS:{}", voidTS);
         for (int t = 0; t < voidTS.size(); t++) {
             if (t != voidTS.size() - 1) {
                 tsPath.append(voidTS.get(t) + "|");
@@ -235,7 +289,8 @@ public class CameraUtil {
         tsPath.append(" aac_adtstoasc ");
         tsPath.append(" -movflags ");
         tsPath.append(" +faststart ");
-        tsPath.append(NewfilePath);
+        tsPath.append(newfilePath);
+        log.info("执行的命令:{}", tsPath.toString());
         Process pr = Runtime.getRuntime().exec(
                 tsPath.toString());
         process.getInputStream();
@@ -243,19 +298,104 @@ public class CameraUtil {
         pr.getInputStream().close();
         pr.getErrorStream().close();
         try {
-            pr.waitFor();
-            Thread.sleep(1000);
-            pr.destroy();
+            int i = pr.waitFor();
+            System.out.println("********");
+            log.info("********");
+            System.out.println(i);
+            log.info(i + "");
+            log.info("********");
+            System.out.println("********");
         } catch (InterruptedException e) {
-            // TODO Auto-generated catch block
+            log.error(e.getMessage());
             e.printStackTrace();
+        } finally {
+            pr.destroy();
         }
+
         //删除生成的ts文件
-        for (String filePath : voidTS) {
-            File file = new File(filePath);
-            file.delete();
-            pr.destroy();
+//        for (String filePath : voidTS) {
+//            File filet = new File(filePath);
+//            filet.delete();
+//            pr.destroy();
+//        }
+    }
+
+
+    public static void myConvetor(List<String> fromVideoFileList,
+                                  String newfilePath) throws IOException {
+        /*
+        * for f in *.flv; do echo "file '$f'" >> mylist.txt; done
+            ffmpeg -f concat -i mylist.txt -c copy output.flv
+        * */
+
+        List<String> rspList = new ArrayList<String>();
+        File file = new File(newfilePath);
+        boolean flay = false;
+        if (!file.getParentFile().exists()) {
+            file.getParentFile().mkdirs();
+            log.info("创建文件夹:{}", file.getParentFile().getPath());
+            flay = true;
+        }
+        log.info("newfilePath:{}", newfilePath);
+
+
+        StringBuffer sm = new StringBuffer("for f in ");
+        for (int t = 0; t < fromVideoFileList.size(); t++) {
+            File ft = new File(fromVideoFileList.get(t));
+            if (ft.exists()) {
+                if (t != fromVideoFileList.size() - 1) {
+                    sm.append(fromVideoFileList.get(t) + " ");
+                } else {
+                    sm.append(fromVideoFileList.get(t));
+                }
+            }
+        }
+        String substring = newfilePath.substring(0, newfilePath.lastIndexOf("."));
+        substring = substring + ".txt";
+        log.info("临时转化的文件:{}", substring);
+
+
+        sm.append("; do echo \"file '$f'\" >> " + substring + "; done");
+        String commit = sm.toString();
+        log.info("合并转化文件的命令:{}", commit);
+        Process proc = Runtime.getRuntime().exec("/bin/bash", null, null);
+        BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
+        PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
+
+        try {
+            String commit1 = ffmpegPath + " -f concat -safe 0 -i " + substring + " -c copy " + newfilePath;
+            List<String> commands = new ArrayList<>();
+            if (flay) {
+                commands.add("chomd -R 777 " + file.getParentFile().getPath());
+            }
+            // 合并成一个临时文件
+            commands.add(commit);
+            // 临时文件转化为 flv
+            commands.add(commit1);
+            for (String line : commands) {
+                out.println(line);
+            }
+            out.println("exit");// 这个命令必须执行,否则in流不结束。
+            String rspLine = "";
+            while ((rspLine = in.readLine()) != null) {
+                System.out.println(rspLine);
+                rspList.add(rspLine);
+            }
+            int i = proc.waitFor();
+            log.info("执行结果:{}", i);
+            //删除生成的ts文件
+            File file1 = new File(substring);
+            if (file1.exists()) {
+                file1.delete();
+            }
+        } catch (InterruptedException e) {
+            e.printStackTrace();
+        } finally {
+            in.close();
+            out.close();
+            proc.destroy();
         }
+        log.info("返回结果:{}", rspList);
     }
 
     public static void main(String[] args) throws IOException {

+ 0 - 5
hazard-sdk/pom.xml

@@ -48,11 +48,6 @@
             <artifactId>druid-spring-boot-starter</artifactId>
             <version>1.2.15</version>
         </dependency>
-<!--        &lt;!&ndash; 系统模块&ndash;&gt;-->
-<!--        <dependency>-->
-<!--            <groupId>com.ozs</groupId>-->
-<!--            <artifactId>base-system</artifactId>-->
-<!--        </dependency>-->
         <!-- 业务代码-->
         <dependency>
             <groupId>com.ozs</groupId>

+ 19 - 26
hazard-sdk/src/main/java/com/ozs/controller/upload/GeoHazardMonitorTokenController.java

@@ -14,19 +14,18 @@ import com.ozs.service.entity.BaseDeviceDynamicManagement;
 import com.ozs.service.entity.MsgAlarm;
 import com.ozs.service.entity.MsgAlarmFrequency;
 import com.ozs.service.entity.SvcAddress;
+import com.ozs.service.mapper.BaseUserMapper;
 import com.ozs.service.service.BaseCameraManagementService;
 import com.ozs.service.service.BaseDeviceDynamicManagementService;
+import com.ozs.service.service.BaseUserService;
 import com.ozs.service.service.MsgAlarmFrequencyService;
 import com.ozs.service.service.MsgAlarmService;
 import com.ozs.service.service.SvcAddressService;
-//import com.ozs.system.service.ISysUserService;
 import com.ozs.vo.ReqDeviceVo;
 import com.ozs.vo.ReqMsgAlarmVo;
 import com.ozs.vo.RespGeoHazardMonitorVo;
 import com.ozs.vo.RespMsgAlarmVo;
 import com.ozs.websocket.WebSocketServer;
-import io.lettuce.core.ScriptOutputType;
-import io.swagger.models.auth.In;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,11 +38,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 1. 获取身份认证控制层
@@ -57,8 +52,6 @@ public class GeoHazardMonitorTokenController {
     @Resource
     private ApiTokenUtils apiTokenUtils;
     @Resource
-    private AppTokenUtils appTokenUtils;
-    @Resource
     BaseDeviceDynamicManagementService baseDeviceDynamicManagementService;
     @Autowired
     MsgAlarmService msgAlarmService;
@@ -68,10 +61,10 @@ public class GeoHazardMonitorTokenController {
     SvcAddressService svcAddressService;
     @Autowired
     BaseCameraManagementService baseCameraManagementService;
-//    @Autowired
-//    private ISysUserService userService;
     @Autowired
     private WebSocketServer webSocketServer;
+    @Autowired
+    private BaseUserService baseUserService;
 
     /**
      * 获取web访问令牌
@@ -133,6 +126,15 @@ public class GeoHazardMonitorTokenController {
         if (StringUtils.isNotEmpty(token)) {
             String s = SM4Utils.decryptData_ECB(parameter, "4370780c9a8c43e5");
             ReqMsgAlarmVo reqMsgAlarmVo = JSON.parseObject(s, ReqMsgAlarmVo.class);
+            log.info("reqMsgAlarmVo:{}", reqMsgAlarmVo);
+            RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
+            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
+            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmCamera())) {
+                wrapper.eq(BaseCameraManagement::getCameraCode, reqMsgAlarmVo.getAlarmCamera());
+            }
+            BaseCameraManagement baseCameraManagement = baseCameraManagementService.getOne(wrapper);
+            // 获取推送人ID列表
+            Set<String> set1 = baseUserService.getUserIdList(baseCameraManagement.getCreateBy(), baseCameraManagement.getDeptId());
             // 推送消息reqMsgAlarmVo
             // 初始化 -> 运行中 -> 成功或失败
 //            try {
@@ -148,13 +150,6 @@ public class GeoHazardMonitorTokenController {
 //                e.printStackTrace();
 //                throw new RuntimeException("构建失败");
 //            }
-            log.info("reqMsgAlarmVo:{}", reqMsgAlarmVo);
-            RespMsgAlarmVo respMsgAlarmVo = new RespMsgAlarmVo();
-            LambdaQueryWrapper<BaseCameraManagement> wrapper = new LambdaQueryWrapper<BaseCameraManagement>();
-            if (!ObjectUtils.isEmpty(reqMsgAlarmVo.getAlarmCamera())) {
-                wrapper.eq(BaseCameraManagement::getCameraCode, reqMsgAlarmVo.getAlarmCamera());
-            }
-            BaseCameraManagement baseCameraManagement = baseCameraManagementService.getOne(wrapper);
             log.info("baseCameraManagement:{}", baseCameraManagement);
             if (ObjectUtils.isEmpty(reqMsgAlarmVo.getLineDir())) {
                 reqMsgAlarmVo.setLineDir(baseCameraManagement.getLineDir());
@@ -165,7 +160,6 @@ public class GeoHazardMonitorTokenController {
             }
             MsgAlarm alarm = msgAlarmService.getOne(lw);
             log.info("alarm:{}", alarm);
-//            SysUser sysUser = userService.selectUserById(1L);
             if (ObjectUtils.isEmpty(alarm)) {
                 MsgAlarm msgAlarm = new MsgAlarm();
                 BeanUtils.copyProperties(reqMsgAlarmVo, msgAlarm);
@@ -177,8 +171,8 @@ public class GeoHazardMonitorTokenController {
                     buffer.append(";");
                 }
                 msgAlarm.setImageUrl(buffer.toString());
-//                msgAlarm.setCreateBy(sysUser.getUserId());
-//                msgAlarm.setUpdateBy(sysUser.getUserId());
+                msgAlarm.setCreateBy("admin");
+                msgAlarm.setUpdateBy("admin");
                 msgAlarm.setAlarmMile(baseCameraManagement.getInstallMile());
                 msgAlarm.setAlarmTime(new Date(reqMsgAlarmVo.getAlarmTime()));
                 msgAlarmService.save(msgAlarm);
@@ -196,8 +190,8 @@ public class GeoHazardMonitorTokenController {
                     buffer.append(";");
                 }
                 msgAlarmVice.setImageUrl(buffer.toString());
-//                msgAlarmVice.setCreateBy(sysUser.getUserId());
-//                msgAlarmVice.setUpdateBy(sysUser.getUserId());
+                msgAlarmVice.setCreateBy("admin");
+                msgAlarmVice.setUpdateBy("admin");
                 msgAlarmFrequencyService.save(msgAlarmVice);
                 respMsgAlarmVo.setAlarmId(reqMsgAlarmVo.getAlarmId());
                 respMsgAlarmVo.setCameraCode(reqMsgAlarmVo.getAlarmCamera());
@@ -240,12 +234,11 @@ public class GeoHazardMonitorTokenController {
                 jsonObject.put("message", "信息编码为空!");
                 return SM4Utils.encryptData_ECB(JSONObject.toJSONString(jsonObject), "4370780c9a8c43e5");
             }
-            //SysUser sysUser = userService.selectUserById(1L);
             lw.eq(BaseDeviceDynamicManagement::getCameraCode, reqDeviceVo.getCameraCode());
             BaseDeviceDynamicManagement baseDynamicManagement = baseDeviceDynamicManagementService.getOne(lw);
             baseDynamicManagement.setElectricity(reqDeviceVo.getElectricity());
             baseDynamicManagement.setUpdateTime(new Date(reqDeviceVo.getTime()));
-//            baseDynamicManagement.setUpdateBy(sysUser.getUserId());
+            baseDynamicManagement.setUpdateBy("admin");
             log.info("reqDeviceVo:{}", baseDynamicManagement);
             if (baseDeviceDynamicManagementService.updateById(baseDynamicManagement)) {
                 jsonObject.put("resultCode", 1);

+ 0 - 9
pom.xml

@@ -14,7 +14,6 @@
     <properties>
         <base.version>1.0-SNAPSHOT</base.version>
         <hazard.version>1.0-SNAPSHOT</hazard.version>
-        <system.version>1.0-SNAPSHOT</system.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
@@ -39,14 +38,6 @@
                 <artifactId>base-common</artifactId>
                 <version>${base.version}</version>
             </dependency>
-
-            <!-- 系统模块-->
-            <dependency>
-                <groupId>com.ozs</groupId>
-                <artifactId>base-system</artifactId>
-                <version>${base.version}</version>
-            </dependency>
-
             <dependency>
                 <groupId>com.ozs</groupId>
                 <artifactId>base-framework</artifactId>