浏览代码

噪声监控:设备列表、设备详情

zhj 2 年之前
父节点
当前提交
aeec8d1356

+ 76 - 0
src/main/java/com/welampiot/controller/NoiseDevInfoController.java

@@ -0,0 +1,76 @@
+package com.welampiot.controller;
+
+import com.welampiot.common.BaseResult;
+import com.welampiot.common.InterfaceResultEnum;
+import com.welampiot.dto.NoiseDevInfoDTO;
+import com.welampiot.service.NoiseDevInfoService;
+import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.NoiseDevInfoVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * ClassName: NoiseDevInfoController
+ * Package: com.welampiot.controller
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/24 - 10:38
+ * @Version: v1.0
+ */
+@RestController
+@CrossOrigin
+@RequestMapping("/noiseDev")
+public class NoiseDevInfoController {
+    @Autowired
+    private NoiseDevInfoService noiseDevInfoService;
+
+    @Autowired
+    private ToolUtils toolUtils;
+
+    /**
+     * 获取噪声监控设备列表
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/devList", method = RequestMethod.POST)
+    public BaseResult<NoiseDevInfoDTO> devList(HttpServletRequest request){
+        int page = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
+        int count = request.getParameter("count") == null ? 16 : Integer.parseInt(request.getParameter("count"));
+        int online = request.getParameter("online") == null ? 0 : Integer.parseInt(request.getParameter("online"));
+        String keyword = request.getParameter("keyword") == null ? "" : request.getParameter("keyword");
+
+        NoiseDevInfoDTO dto = new NoiseDevInfoDTO();
+        dto.setStatus(online);
+        dto.setPage(count * (page - 1));
+        dto.setCount(count);
+        dto.setKeyword(keyword);
+        dto.setSectionList(toolUtils.getSectionList(request));
+
+        NoiseDevInfoVO vo = noiseDevInfoService.getDevListByNoiseDevInfoDTO(dto);
+        return BaseResult.success(vo);
+    }
+
+    /**
+     * 获取噪声监控设备详情
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/devInfo", method = RequestMethod.POST)
+    public BaseResult<NoiseDevInfoDTO> devInfo(HttpServletRequest request){
+        int id = request.getParameter("id") == null || request.getParameter("id").length() == 0 ? 0 : Integer.parseInt(request.getParameter("id"));
+        int version = request.getParameter("version") == null ? 0 : Integer.parseInt(request.getParameter("version"));
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL, version);
+        NoiseDevInfoDTO dto = new NoiseDevInfoDTO();
+        dto.setId(id);
+        dto.setSectionList(toolUtils.getSectionList(request));
+        NoiseDevInfoVO vo = noiseDevInfoService.getDevInfoByNoiseDevInfoDTO(dto);
+        if (vo == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        return BaseResult.success(vo);
+    }
+}

+ 24 - 0
src/main/java/com/welampiot/dao/NoiseDevInfoDao.java

@@ -0,0 +1,24 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.NoiseDevInfoDTO;
+
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/24 - 10:16
+ * @Version: v1.0
+ */
+public interface NoiseDevInfoDao {
+    List<NoiseDevInfoDTO> getDevListByNoiseDevInfoDTO(NoiseDevInfoDTO dto);
+
+    Integer getTotalByNoiseDevInfoDTO(NoiseDevInfoDTO dto);
+
+    Integer getOnlineTotalByNoiseDevInfoDTO(NoiseDevInfoDTO dto);
+
+    NoiseDevInfoDTO getDevInfoByNoiseDevInfoDTO(NoiseDevInfoDTO dto);
+}

+ 73 - 0
src/main/java/com/welampiot/dto/NoiseDevInfoDTO.java

@@ -0,0 +1,73 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/24 - 9:56
+ * @Version: v1.0
+ */
+@Data
+public class NoiseDevInfoDTO implements Serializable {
+    /** 主键 **/
+    private Integer id;
+
+    /** 设备名称 **/
+    private String name;
+
+    /** 设备地址 **/
+    private String address;
+
+    /** 在线状态(0 离线,1 在线)**/
+    private Integer online;
+
+    /** 灯杆id **/
+    private Integer lampPoleId;
+
+    /** 噪声 **/
+    private Float noise;
+
+    /** 数据更新时间 **/
+    private String updateTime;
+
+    /** 白天告警值 **/
+    private Float warringValue1;
+
+    /** 晚上告警值 **/
+    private Float warringValue2;
+
+    /** 串口号(0 3号串口,1 2号串口,2 1号串口)**/
+    private Integer serialPort;
+
+    /** 安装时间 **/
+    private String installDate;
+
+    /** 过期时间 **/
+    private String expirationDate;
+
+    /** 网关型号(0 G100,1 G200,2 G40,3 G300) **/
+    private Integer model;
+
+    private String lampPoleName;
+
+    private Integer timezone;
+
+    private Integer status;
+
+    private Integer page;
+
+    private Integer count;
+
+    private String keyword;
+
+    private List<Integer> sectionList;
+
+    private static final long serialVersionUID = 1L;
+}

+ 19 - 0
src/main/java/com/welampiot/service/NoiseDevInfoService.java

@@ -0,0 +1,19 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.NoiseDevInfoDTO;
+import com.welampiot.vo.NoiseDevInfoVO;
+
+/**
+ * ClassName: NoiseDevInfoService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/24 - 10:22
+ * @Version: v1.0
+ */
+public interface NoiseDevInfoService {
+    NoiseDevInfoVO getDevListByNoiseDevInfoDTO(NoiseDevInfoDTO dto);
+
+    NoiseDevInfoVO getDevInfoByNoiseDevInfoDTO(NoiseDevInfoDTO dto);
+}

+ 135 - 0
src/main/java/com/welampiot/service/impl/NoiseDevInfoServiceImpl.java

@@ -0,0 +1,135 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.NoiseDevInfoDao;
+import com.welampiot.dto.NoiseDevInfoDTO;
+import com.welampiot.service.NoiseDevInfoService;
+import com.welampiot.vo.NoiseDevInfoVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/24 - 10:23
+ * @Version: v1.0
+ */
+@Service
+public class NoiseDevInfoServiceImpl implements NoiseDevInfoService {
+    @Autowired
+    private NoiseDevInfoDao noiseDevInfoDao;
+
+    @Override
+    public NoiseDevInfoVO getDevListByNoiseDevInfoDTO(NoiseDevInfoDTO dto) {
+        NoiseDevInfoVO vo = new NoiseDevInfoVO();
+        vo.setTotal(noiseDevInfoDao.getTotalByNoiseDevInfoDTO(dto));
+        vo.setTotalOnline(noiseDevInfoDao.getOnlineTotalByNoiseDevInfoDTO(dto));
+        List<NoiseDevInfoDTO> devList = noiseDevInfoDao.getDevListByNoiseDevInfoDTO(dto);
+        List<NoiseDevInfoDTO> list = new ArrayList<>();
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        devList.forEach(devDTO ->{
+            if (devDTO.getLampPoleName() == null){
+                devDTO.setLampPoleName("");
+            }
+            if (devDTO.getOnline() != null && devDTO.getOnline() == 1){
+                devDTO.setOnline(1);
+            }else {
+                devDTO.setOnline(0);
+            }
+            //安装时间
+            if (devDTO.getInstallDate() != null && !devDTO.getInstallDate().equals("")){
+                try {
+                    devDTO.setInstallDate(simpleDateFormat.format(simpleDateFormat.parse(devDTO.getInstallDate())));
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+            }else {
+                devDTO.setInstallDate("");
+            }
+            //过期时间
+            if (devDTO.getExpirationDate() != null && !devDTO.getExpirationDate().equals("")){
+                try {
+                    devDTO.setExpirationDate(simpleDateFormat.format(simpleDateFormat.parse(devDTO.getExpirationDate())));
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+            }else {
+                devDTO.setExpirationDate("");
+            }
+            //更新时间
+            if (devDTO.getUpdateTime() != null && !devDTO.getUpdateTime().equals("")){
+                Date cmdTime;
+                try {
+                    cmdTime = simpleDateFormat.parse(devDTO.getUpdateTime());
+                } catch (ParseException e) {
+                    throw new RuntimeException(e);
+                }
+                //判断时区,为null默认东八区
+                long timezone = devDTO.getTimezone() == null ? 8 : devDTO.getTimezone();
+                long l = cmdTime.getTime() + timezone * 3600 * 1000;
+                cmdTime = new Date(l);
+                devDTO.setUpdateTime(simpleDateFormat.format(cmdTime));
+            }else {
+                devDTO.setUpdateTime("");
+            }
+            list.add(devDTO);
+        });
+        vo.setList(list);
+        return vo;
+    }
+
+    @Override
+    public NoiseDevInfoVO getDevInfoByNoiseDevInfoDTO(NoiseDevInfoDTO dto) {
+        NoiseDevInfoVO vo = new NoiseDevInfoVO();
+        NoiseDevInfoDTO devInfoDTO = noiseDevInfoDao.getDevInfoByNoiseDevInfoDTO(dto);
+        if (devInfoDTO == null) return null;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (devInfoDTO.getModel() != null && devInfoDTO.getModel() == 3){
+            devInfoDTO.setModel(3);
+        }else if (devInfoDTO.getModel() != null && devInfoDTO.getModel() == 2){
+            devInfoDTO.setModel(2);
+        }else if (devInfoDTO.getModel() != null && devInfoDTO.getModel() == 1){
+            devInfoDTO.setModel(1);
+        }else {
+            devInfoDTO.setModel(0);
+        }
+        if (devInfoDTO.getSerialPort() != null && devInfoDTO.getSerialPort() == 2){
+            devInfoDTO.setSerialPort(2);
+        }else if (devInfoDTO.getSerialPort() != null && devInfoDTO.getSerialPort() == 1){
+            devInfoDTO.setSerialPort(1);
+        }else {
+            devInfoDTO.setSerialPort(0);
+        }
+        //安装时间
+        if (devInfoDTO.getInstallDate() != null && !devInfoDTO.getInstallDate().equals("")){
+            try {
+                devInfoDTO.setInstallDate(simpleDateFormat.format(simpleDateFormat.parse(devInfoDTO.getInstallDate())));
+            } catch (ParseException e) {
+                throw new RuntimeException(e);
+            }
+        }else {
+            devInfoDTO.setInstallDate("");
+        }
+        //过期时间
+        if (devInfoDTO.getExpirationDate() != null && !devInfoDTO.getExpirationDate().equals("")){
+            try {
+                devInfoDTO.setExpirationDate(simpleDateFormat.format(simpleDateFormat.parse(devInfoDTO.getExpirationDate())));
+            } catch (ParseException e) {
+                throw new RuntimeException(e);
+            }
+        }else {
+            devInfoDTO.setExpirationDate("");
+        }
+        BeanUtils.copyProperties(devInfoDTO,vo);
+        return vo;
+    }
+}

+ 54 - 0
src/main/java/com/welampiot/vo/NoiseDevInfoVO.java

@@ -0,0 +1,54 @@
+package com.welampiot.vo;
+
+import com.welampiot.dto.NoiseDevInfoDTO;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/24 - 10:24
+ * @Version: v1.0
+ */
+@Data
+public class NoiseDevInfoVO implements Serializable {
+    private Integer total;
+
+    private Integer totalOnline;
+
+    private List<NoiseDevInfoDTO> list;
+
+    /** 主键 **/
+    private Integer id;
+
+    /** 设备名称 **/
+    private String name;
+
+    /** 设备地址 **/
+    private String address;
+
+    /** 白天告警值 **/
+    private Float warringValue1;
+
+    /** 晚上告警值 **/
+    private Float warringValue2;
+
+    /** 串口号(0 3号串口,1 2号串口,2 1号串口)**/
+    private Integer serialPort;
+
+    /** 安装时间 **/
+    private String installDate;
+
+    /** 过期时间 **/
+    private String expirationDate;
+
+    /** 网关型号(0 G100,1 G200,2 G40,3 G300) **/
+    private Integer model;
+
+    private static final long serialVersionUID = 1L;
+}

+ 71 - 0
src/main/resources/mapper/NoiseDevInfoMapper.xml

@@ -0,0 +1,71 @@
+<?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.welampiot.dao.NoiseDevInfoDao">
+
+    <select id="getDevListByNoiseDevInfoDTO" resultType="NoiseDevInfoDTO">
+        select n.id,n.lamp_pole_id lampPoleId,lp.name lampPoleName,n.name,n.online,n.noise,n.warring_value1 warringValue1,s.timezone,
+               n.warring_value2 warringValue2,n.updatetime as updateTime,n.install_date installDate,n.expiration_date expirationDate
+        from noise_dev_info n left join lamp_pole lp on lp.id = n.lamp_pole_id
+            left join section s on lp.sectionid = s.id
+        where 1=1
+            <if test="keyword != null and keyword != ''">
+                and n.name like '%${keyword}%'
+            </if>
+            <if test="sectionList != null and !sectionList.isEmpty()">
+                and lp.sectionid in
+                <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                    #{dto}
+                </foreach>
+            </if>
+            <choose>
+                <when test="status == 0">
+                    and n.online = 0
+                </when>
+                <when test="status == 1">
+                    and n.online = 1
+                </when>
+            </choose>
+            order by convert(n.name using gbk) asc,n.id desc
+            <if test="page >= 0 and count > 0">
+                limit #{page},#{count}
+            </if>
+    </select>
+
+    <select id="getTotalByNoiseDevInfoDTO" resultType="Integer">
+        select count(n.id) as total
+        from noise_dev_info n left join lamp_pole lp on lp.id = n.lamp_pole_id
+        <if test="sectionList != null and !sectionList.isEmpty()">
+            where lp.sectionid in
+                <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                    #{dto}
+                </foreach>
+        </if>
+    </select>
+
+    <select id="getOnlineTotalByNoiseDevInfoDTO" resultType="Integer">
+        select count(n.id) as total
+        from noise_dev_info n left join lamp_pole lp on lp.id = n.lamp_pole_id
+        where n.online = 1
+            <if test="sectionList != null and !sectionList.isEmpty()">
+                and lp.sectionid in
+                <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                    #{dto}
+                </foreach>
+            </if>
+    </select>
+    
+    <select id="getDevInfoByNoiseDevInfoDTO" resultType="NoiseDevInfoDTO">
+        select n.id,n.name,n.address,n.serial_port serialPort,n.warring_value1 warringValue1,n.warring_value2 warringValue2,
+               n.install_date installDate,n.expiration_date expirationDate,w.model
+        from noise_dev_info n left join lamp_pole lp on lp.id = n.lamp_pole_id
+            left join wifi w on lp.id = w.lamp_pole_id
+        where n.id = #{id}
+            <if test="sectionList != null and !sectionList.isEmpty()">
+                and lp.sectionid in
+                <foreach collection="sectionList" item="dto" open="(" separator="," close=")">
+                    #{dto}
+                </foreach>
+            </if>
+    </select>
+
+</mapper>