Quellcode durchsuchen

视屏监控列表及详情、添加编辑删除视屏监控列表

zhj vor 2 Jahren
Ursprung
Commit
9e381b58e2

+ 3 - 0
src/main/java/com/welampiot/common/InterfaceResultEnum.java

@@ -171,6 +171,9 @@ public enum InterfaceResultEnum {
     LACK_POLICY_TYPE_ERROR("0360","请选择策略类型","Please select a policy type","Пожалуйста, выберите тип стратегии"),
     LACK_OPERATE_TYPE_ERROR("0361","请选择使用方式","Please select a mode of use","Пожалуйста, выберите способ использования"),
     LACK_LIGHTER_NUMBER_ERROR("0362","请选择灯头编号","Please select a cap number","Пожалуйста, выберите номер лампочки"),
+    LACK_VIDEO_TYPE_ERROR("0363","请选择监控类型","Select a monitoring type","Пожалуйста, выберите тип слежки"),
+    LACK_DEV_CODE_ERROR("0364","设备验证码不能为空","The device verification code cannot be empty","Идентификационный код устройства не может быть пустым"),
+    DEV_SN_UNIQUE_ERROR("0365","设备序列号已存在","The device serial number already exists","Серийный номер устройства уже существует"),
     ;
     private String code;
     private String msgCn;

+ 119 - 5
src/main/java/com/welampiot/controller/VideoController.java

@@ -6,20 +6,17 @@ import com.alibaba.fastjson.JSONObject;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.Constant;
 import com.welampiot.common.InterfaceResultEnum;
-import com.welampiot.common.ResultEnum;
-import com.welampiot.dto.UserDTO;
 import com.welampiot.dto.VideoMonitorDTO;
-import com.welampiot.dto.WaterImmersionDevInfoDTO;
 import com.welampiot.service.SystemConfigService;
 import com.welampiot.service.VideoMonitorService;
-import com.welampiot.utils.MD5Utils;
 import com.welampiot.utils.ToolUtils;
 import com.welampiot.utils.VideoUtil;
 import com.welampiot.utils.WebUtils;
-import com.welampiot.vo.LoginVO;
+import com.welampiot.vo.VideoMonitorDetailVO;
 import com.welampiot.vo.VideoMonitorVO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -30,6 +27,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 @RestController
 @CrossOrigin
@@ -230,4 +228,120 @@ public class VideoController {
         WebUtils.requestPost(url, param);
         return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
     }
+
+    /**
+     * 视屏监控列表
+     * @param request 路段,关键字搜索,分页
+     * @return 视屏监控列表
+     */
+    @RequestMapping(value = "/getList", method = RequestMethod.POST)
+    public BaseResult<?> getList(HttpServletRequest request) {
+        Integer version = (Integer) toolUtils.getRequestContent(request,"version",1);
+        Integer page = (Integer) toolUtils.getRequestContent(request,"page",1);
+        Integer count = (Integer) toolUtils.getRequestContent(request,"count",1);
+        Integer areaId = (Integer) toolUtils.getRequestContent(request,"areaId",1);
+        Integer sectionId = (Integer) toolUtils.getRequestContent(request,"sectionId",1);
+        String keyword = (String) toolUtils.getRequestContent(request,"keyword",2);
+        if (page == 0) page = 1;
+        if (count == 0) count = 16;
+        VideoMonitorVO vo = new VideoMonitorVO();
+        vo.setLimit(count * (page - 1));
+        vo.setOffset(count);
+        vo.setAreaId(areaId);
+        vo.setSectionId(sectionId);
+        vo.setKeyword(keyword);
+        vo.setSectionList(toolUtils.getSectionList(request));
+        List<VideoMonitorDTO> videoList = videoMonitorService.getVideoListByVO(vo);
+        Integer total = videoMonitorService.getVideoTotal(vo);
+        VideoMonitorVO videoMonitorVO = new VideoMonitorVO();
+        videoMonitorVO.setList(videoList);
+        videoMonitorVO.setTotal((int) Math.ceil(total / (double) count));
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,videoMonitorVO);
+    }
+
+    /**
+     * 视屏监控详情
+     * @param vo id
+     * @return 视屏监控详情
+     */
+    @RequestMapping(value = "/info", method = RequestMethod.POST)
+    public BaseResult<?> info(VideoMonitorVO vo) {
+        if (vo.getVersion() == null) vo.setVersion(0);
+        Integer version = vo.getVersion();
+        Integer id = vo.getId();
+        if (id == null || id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        VideoMonitorDTO videoMonitorDTO = videoMonitorService.getVideoMonitorDetailsById(vo);
+        if (videoMonitorDTO == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        VideoMonitorDetailVO videoMonitorDetailVO = new VideoMonitorDetailVO();
+        BeanUtils.copyProperties(videoMonitorDTO,videoMonitorDetailVO);
+        if (videoMonitorDetailVO.getType() != null && videoMonitorDetailVO.getType() == 1) {
+            videoMonitorDetailVO.setTypeStr("NVR");
+        } else {
+            videoMonitorDetailVO.setTypeStr("IPC");
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version,videoMonitorDetailVO);
+    }
+
+    /**
+     * 添加/编辑视屏监控
+     * @param vo 视屏监控字段
+     * @return 添加/编辑视屏监控
+     */
+    @RequestMapping(value = "/save", method = RequestMethod.POST)
+    public BaseResult<?> save(VideoMonitorDetailVO vo) {
+        if (vo.getVersion() == null) vo.setVersion(0);
+        Integer version = vo.getVersion();
+        Integer id = vo.getId();
+        if (vo.getName() == null || vo.getName().trim().isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_NAME_ERROR,version);
+        if (vo.getSectionId() == null || vo.getSectionId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR,version);
+        if (vo.getAreaId() == null || vo.getAreaId() == 0)
+            return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR,version);
+        if (vo.getDevId() == null || vo.getDevId().isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_DEV_SN_ERROR,version);
+        if (vo.getPassword() == null || vo.getPassword().isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_DEV_CODE_ERROR,version);
+        if (vo.getDeviceType() == null)
+            return toolUtils.response(InterfaceResultEnum.LACK_DEV_TYPE_ERROR,version);
+        if (vo.getType() == null)
+            return toolUtils.response(InterfaceResultEnum.LACK_VIDEO_TYPE_ERROR,version);
+
+        VideoMonitorDTO videoMonitorDTO = new VideoMonitorDTO();
+        BeanUtils.copyProperties(vo,videoMonitorDTO);
+        VideoMonitorDTO dto = new VideoMonitorDTO();
+        if (id == null || id == 0) { // 添加
+            dto.setDevId(vo.getDevId());
+            if (videoMonitorService.checkVideoDevId(dto) > 0)
+                return toolUtils.response(InterfaceResultEnum.DEV_SN_UNIQUE_ERROR,version);
+            videoMonitorService.addVideoMonitorData(videoMonitorDTO);
+        } else { // 编辑
+            dto.setId(id);
+            dto.setDevId(vo.getDevId());
+            if (videoMonitorService.checkVideoDevId(dto) > 0)
+                return toolUtils.response(InterfaceResultEnum.DEV_SN_UNIQUE_ERROR,version);
+            videoMonitorService.updateVideoMonitorData(videoMonitorDTO);
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
+
+    /**
+     * 删除视屏监控
+     * @param vo id
+     * @return 删除视屏监控
+     */
+    @RequestMapping(value = "/del", method = RequestMethod.POST)
+    public BaseResult<?> del(VideoMonitorVO vo) {
+        if (vo.getVersion() == null) vo.setVersion(0);
+        Integer version = vo.getVersion();
+        String videoId = vo.getVideoId();
+        if (videoId == null || videoId.trim().isEmpty())
+            return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR,version);
+        String[] split = videoId.split(",");
+        for (String s : split) {
+            Integer id = Integer.valueOf(s);
+            videoMonitorService.deleteVideoMonitorById(id);
+        }
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,version);
+    }
 }

+ 10 - 0
src/main/java/com/welampiot/dao/VideoMonitorDao.java

@@ -31,4 +31,14 @@ public interface VideoMonitorDao {
     void updateBackAddress(VideoMonitorDTO dto);
 
     List<VideoMonitorDTO> getVideoListBySectionId(@Param("sectionId") Integer sectionId);
+
+    List<VideoMonitorDTO> getVideoListByVO(VideoMonitorVO vo);
+
+    VideoMonitorDTO getVideoMonitorDetailsById(VideoMonitorVO vo);
+
+    void addVideoMonitorData(VideoMonitorDTO dto);
+
+    void updateVideoMonitorData(VideoMonitorDTO dto);
+
+    Integer checkVideoDevId(VideoMonitorDTO dto);
 }

+ 5 - 0
src/main/java/com/welampiot/service/VideoMonitorService.java

@@ -24,4 +24,9 @@ public interface VideoMonitorService {
     VideoMonitorDTO getOneByDbAddress(@Param("gbAddress") String gbAddress);
     void updateBackAddress(VideoMonitorDTO dto);
     List<VideoMonitorDTO> getVideoListBySectionId(Integer sectionId);
+    List<VideoMonitorDTO> getVideoListByVO(VideoMonitorVO vo);
+    VideoMonitorDTO getVideoMonitorDetailsById(VideoMonitorVO vo);
+    void addVideoMonitorData(VideoMonitorDTO dto);
+    void updateVideoMonitorData(VideoMonitorDTO dto);
+    Integer checkVideoDevId(VideoMonitorDTO dto);
 }

+ 25 - 0
src/main/java/com/welampiot/service/impl/VideoMonitorServiceImpl.java

@@ -99,4 +99,29 @@ public class VideoMonitorServiceImpl implements VideoMonitorService {
     public List<VideoMonitorDTO> getVideoListBySectionId(Integer sectionId) {
         return videoMonitorDao.getVideoListBySectionId(sectionId);
     }
+
+    @Override
+    public List<VideoMonitorDTO> getVideoListByVO(VideoMonitorVO vo) {
+        return videoMonitorDao.getVideoListByVO(vo);
+    }
+
+    @Override
+    public VideoMonitorDTO getVideoMonitorDetailsById(VideoMonitorVO vo) {
+        return videoMonitorDao.getVideoMonitorDetailsById(vo);
+    }
+
+    @Override
+    public void addVideoMonitorData(VideoMonitorDTO dto) {
+        videoMonitorDao.addVideoMonitorData(dto);
+    }
+
+    @Override
+    public void updateVideoMonitorData(VideoMonitorDTO dto) {
+        videoMonitorDao.updateVideoMonitorData(dto);
+    }
+
+    @Override
+    public Integer checkVideoDevId(VideoMonitorDTO dto) {
+        return videoMonitorDao.checkVideoDevId(dto);
+    }
 }

+ 40 - 0
src/main/java/com/welampiot/vo/VideoMonitorDetailVO.java

@@ -0,0 +1,40 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: VideoMonitorDetailVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/8/21 - 17:25
+ * @Version: v1.0
+ */
+@Data
+public class VideoMonitorDetailVO implements Serializable {
+    private Integer id;
+    private String name;
+    private String longitude;
+    private String latitude;
+    private Integer deviceType;
+    private Integer netType;
+    private Integer areaId;
+    private Integer sectionId;
+    private String area;
+    private String section;
+    private String devId;
+    private String password;
+    private String channel;
+    private Integer type;
+    private String typeStr;
+    private Integer hls;
+    private String hlsHd;
+    private String rtmp;
+    private String rtmpHd;
+    private String installDate;
+    private String expirationDate;
+    private Integer version;
+}

+ 3 - 0
src/main/java/com/welampiot/vo/VideoMonitorVO.java

@@ -17,5 +17,8 @@ public class VideoMonitorVO {
     private Integer total;
     private Integer onlineCount;
     private Integer useCount;
+    private String keyword;
+    private Integer id;
+    private String videoId;
     private List<VideoMonitorDTO> list;
 }

+ 156 - 0
src/main/resources/mapper/VideoMonitorMapper.xml

@@ -218,5 +218,161 @@
         from video_monitor v
         where v.sectionid = #{sectionId}
     </select>
+    
+    <select id="getVideoListByVO" resultType="VideoMonitorDTO">
+        select
+            v.id,
+            v.name,
+            v.image,
+            v.deviceType,
+            v.devid as devId,
+            v.netStatus
+        from video_monitor v
+        where 1=1
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            and v.sectionid in
+            <foreach collection="sectionList" item="item" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="keyword != null and keyword != ''">
+            and v.name like '%${keyword}%'
+        </if>
+        <if test="areaId != null and areaId != 0">
+            and v.areaid = #{areaId}
+        </if>
+        <if test="sectionId != null and sectionId != 0">
+            and v.sectionid = #{sectionId}
+        </if>
+        <if test="limit >= 0 and offset > 0">
+            limit #{limit},#{offset}
+        </if>
+    </select>
+
+    <select id="getVideoMonitorDetailsById" resultType="VideoMonitorDTO">
+        select
+            v.id,
+            v.name,
+            v.longitude,
+            v.latitude,
+            v.deviceType,
+            v.net_type as netType,
+            v.areaid as areaId,
+            v.sectionid as sectionId,
+            v.devid as devId,
+            v.password,
+            v.channel,
+            v.type,
+            v.hls,
+            v.hlsHd,
+            v.rtmp,
+            v.rtmpHd,
+            v.install_date as installDate,
+            v.expiration_date as expirationDate,
+            s.name as section
+            <choose>
+                <when test="version == 0">
+                    ,gl.chinese_name as area
+                </when>
+                <when test="version == 1">
+                    ,gl.english_name as area
+                </when>
+                <otherwise>
+                    ,gl.ru_name as area
+                </otherwise>
+            </choose>
+        from video_monitor v
+        left join section s on s.id = v.sectionid
+        left join global_location gl on s.pid = gl.id
+        where v.id = #{id}
+    </select>
+
+    <insert id="addVideoMonitorData" parameterType="VideoMonitorDTO" keyProperty="id" useGeneratedKeys="true">
+        insert into video_monitor(`name`,
+        sectionid,
+        areaid,
+        createtime,
+        devid,
+        `password`,
+        <if test="channel != null and channel != ''">
+            `channel`,
+        </if>
+        type,
+        <if test="longitude != null and longitude != ''">
+            longitude,
+        </if>
+        <if test="latitude != null and latitude != ''">
+            latitude,
+        </if>
+        <if test="netType != null">
+            net_type,
+        </if>
+        <if test="installDate != null and installDate != ''">
+            install_date,
+        </if>
+        <if test="expirationDate != null and expirationDate != ''">
+            expiration_date,
+        </if>
+        deviceType)
+        values (#{name},
+        #{sectionId},
+        #{areaId},
+        #{createTime},
+        #{devId},
+        #{password},
+        <if test="channel != null and channel != ''">
+            #{channel},
+        </if>
+        #{type},
+        <if test="longitude != null and longitude != ''">
+            #{longitude},
+        </if>
+        <if test="latitude != null and latitude != ''">
+            #{latitude},
+        </if>
+        <if test="netType != null">
+            #{netType},
+        </if>
+        <if test="installDate != null and installDate != ''">
+            #{installDate},
+        </if>
+        <if test="expirationDate != null and expirationDate != ''">
+            #{expirationDate},
+        </if>
+        #{deviceType}
+        )
+    </insert>
+
+    <update id="updateVideoMonitorData" parameterType="VideoMonitorDTO">
+        update
+            video_monitor v
+        set
+            v.name = #{name},
+            <if test="longitude != null and longitude != ''">
+                v.longitude = #{longitude},
+            </if>
+            <if test="latitude != null and latitude != ''">
+                v.latitude = #{latitude},
+            </if>
+            <if test="netType != null">
+                v.net_type = #{netType},
+            </if>
+            v.deviceType = #{deviceType}
+        where
+            v.id = #{id}
+    </update>
+
+    <select id="checkVideoDevId" resultType="Integer">
+        select
+            count(*)
+        from video_monitor v
+        where 1=1
+        <if test="devId != null and devId != ''">
+            and v.devid = #{devId}
+        </if>
+        <if test="id != null and id != 0">
+            and v.id != #{id}
+        </if>
+    </select>
 
 </mapper>