Преглед на файлове

噪声监控设备统计信息

zhj преди 2 години
родител
ревизия
9b11324a5e

+ 104 - 3
src/main/java/com/welampiot/controller/NoiseDevInfoController.java

@@ -3,8 +3,11 @@ package com.welampiot.controller;
 import com.welampiot.common.BaseResult;
 import com.welampiot.common.InterfaceResultEnum;
 import com.welampiot.dto.NoiseDevInfoDTO;
+import com.welampiot.dto.NoiseDevInfoLogDTO;
+import com.welampiot.service.NoiseDevInfoLogService;
 import com.welampiot.service.NoiseDevInfoService;
 import com.welampiot.utils.ToolUtils;
+import com.welampiot.vo.NoiseDevInfoLogVO;
 import com.welampiot.vo.NoiseDevInfoVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
@@ -13,6 +16,12 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
 
 /**
  * ClassName: NoiseDevInfoController
@@ -30,16 +39,20 @@ public class NoiseDevInfoController {
     @Autowired
     private NoiseDevInfoService noiseDevInfoService;
 
+    @Autowired
+    private NoiseDevInfoLogService noiseDevInfoLogService;
+
     @Autowired
     private ToolUtils toolUtils;
 
     /**
      * 获取噪声监控设备列表
+     *
      * @param request
      * @return
      */
     @RequestMapping(value = "/devList", method = RequestMethod.POST)
-    public BaseResult<NoiseDevInfoDTO> devList(HttpServletRequest request){
+    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"));
@@ -58,11 +71,12 @@ public class NoiseDevInfoController {
 
     /**
      * 获取噪声监控设备详情
+     *
      * @param request
      * @return
      */
     @RequestMapping(value = "/devInfo", method = RequestMethod.POST)
-    public BaseResult<NoiseDevInfoDTO> devInfo(HttpServletRequest request){
+    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);
@@ -70,7 +84,94 @@ public class NoiseDevInfoController {
         dto.setId(id);
         dto.setSectionList(toolUtils.getSectionList(request));
         NoiseDevInfoVO vo = noiseDevInfoService.getDevInfoByNoiseDevInfoDTO(dto);
-        if (vo == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL,version);
+        if (vo == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL, version);
         return BaseResult.success(vo);
     }
+
+    /**
+     * 获取噪声监控设备统计信息
+     *
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/devStatistics", method = RequestMethod.POST)
+    public BaseResult devStatistics(HttpServletRequest request) throws ParseException {
+        Integer version = (Integer) toolUtils.getRequestContent(request, "version", 1);
+        Integer id = (Integer) toolUtils.getRequestContent(request, "id", 1);
+        if (id == 0) return toolUtils.response(InterfaceResultEnum.LACK_PARAM_ERROR, version);
+        Integer dateType = (Integer) toolUtils.getRequestContent(request, "dateType", 1);
+        Integer timezone = noiseDevInfoLogService.getTimezoneById(id);
+        if (timezone == null) return toolUtils.response(InterfaceResultEnum.PARAM_FAIL, version);
+        long l = System.currentTimeMillis() - timezone * 3600 * 1000;
+        long startTime = 0L;
+        long endTime = 0L;
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        if (dateType == 0) { // 1 天
+            startTime = l - 24 * 3600 * 1000;
+            endTime = l;
+        } else if (dateType == 1) { // 3 天
+            startTime = l - 24 * 3600 * 1000 * 3;
+            endTime = l;
+        } else if (dateType == 2) { // 5 天
+            startTime = l - 24 * 3600 * 1000 * 5;
+            endTime = l;
+        } else if (dateType == 3) { // 7 天
+            startTime = l - 24 * 3600 * 1000 * 7;
+            endTime = l;
+        }
+
+        HashMap<String, Integer> objectObjectHashMap = new HashMap<>();
+        long timeT = startTime;
+        int i = 0;
+
+        List<Object> dateList = new ArrayList<>();
+        List<Object> dataList = new ArrayList<>();
+        ArrayList<NoiseDevInfoLogDTO> list = new ArrayList<>();
+        simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:00:00");
+        while (timeT < endTime) {
+            objectObjectHashMap.put(simpleDateFormat.format(new Date(timeT)), i);
+            dateList.add(simpleDateFormat.format(new Date(timeT + timezone * 3600 * 1000)));
+            dataList.add(0);
+            list.add(null);
+            timeT += 3600 * 1000;
+            i++;
+        }
+        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String startDate = simpleDateFormat.format(new Date(startTime));
+        String endDate = simpleDateFormat.format(new Date(endTime));
+        NoiseDevInfoLogDTO dto = new NoiseDevInfoLogDTO();
+        dto.setDevId(id);
+        dto.setStartDate(startDate);
+        dto.setEndDate(endDate);
+        List<NoiseDevInfoLogDTO> devStatisticsByDTO = noiseDevInfoLogService.getDevStatisticsByDTO(dto);
+        for (NoiseDevInfoLogDTO noiseDevInfoLogDTO : devStatisticsByDTO) {
+            Date date = new Date(simpleDateFormat2.parse(noiseDevInfoLogDTO.getUpdateTime()).getTime());
+            String s = simpleDateFormat.format(date);
+            if (objectObjectHashMap.containsKey(s)) {
+                Integer integer = objectObjectHashMap.get(s);
+                list.set(integer, noiseDevInfoLogDTO);
+            }
+        }
+        for (NoiseDevInfoLogDTO noiseDevInfoLogDTO : list) {
+            if (noiseDevInfoLogDTO != null) {
+                Date date = new Date(simpleDateFormat2.parse(noiseDevInfoLogDTO.getUpdateTime()).getTime());
+                String s = simpleDateFormat.format(date);
+                Integer integer = null;
+                if (objectObjectHashMap.containsKey(s)) {
+                    integer = objectObjectHashMap.get(s);
+                    list.set(integer, noiseDevInfoLogDTO);
+                }
+
+                if (noiseDevInfoLogDTO.getNoise() != null && !noiseDevInfoLogDTO.getNoise().equals("0") && integer != null){
+                    dataList.set(integer,Float.valueOf(noiseDevInfoLogDTO.getNoise()));
+                }
+                date = new Date(simpleDateFormat2.parse(noiseDevInfoLogDTO.getUpdateTime()).getTime() + timezone * 3600 * 1000);
+                noiseDevInfoLogDTO.setUpdateTime(simpleDateFormat.format(date));
+            }
+        }
+        NoiseDevInfoLogVO noiseDevInfoLogVO = new NoiseDevInfoLogVO();
+        noiseDevInfoLogVO.setDataList(dataList);
+        noiseDevInfoLogVO.setDateList(dateList);
+        return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, version, noiseDevInfoLogVO);
+    }
 }

+ 21 - 0
src/main/java/com/welampiot/dao/NoiseDevInfoLogDao.java

@@ -0,0 +1,21 @@
+package com.welampiot.dao;
+
+import com.welampiot.dto.NoiseDevInfoLogDTO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoLogDao
+ * Package: com.welampiot.dao
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/27 - 15:11
+ * @Version: v1.0
+ */
+public interface NoiseDevInfoLogDao {
+    List<NoiseDevInfoLogDTO> getDevStatisticsByDTO(NoiseDevInfoLogDTO dto);
+
+    Integer getTimezoneById(@Param("id") Integer id);
+}

+ 35 - 0
src/main/java/com/welampiot/dto/NoiseDevInfoLogDTO.java

@@ -0,0 +1,35 @@
+package com.welampiot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * ClassName: NoiseDevInfoLogDTO
+ * Package: com.welampiot.dto
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/27 - 15:08
+ * @Version: v1.0
+ */
+@Data
+public class NoiseDevInfoLogDTO implements Serializable {
+    /** 主键 **/
+    private Integer id;
+
+    /** 设备id **/
+    private Integer devId;
+
+    /** 噪声 **/
+    private String noise;
+
+    /** 数据更新时间(0 时区)**/
+    private String updateTime;
+
+    private String startDate;
+
+    private String endDate;
+
+    private static final long serialVersionUID = 1L;
+}

+ 20 - 0
src/main/java/com/welampiot/service/NoiseDevInfoLogService.java

@@ -0,0 +1,20 @@
+package com.welampiot.service;
+
+import com.welampiot.dto.NoiseDevInfoLogDTO;
+
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoLogService
+ * Package: com.welampiot.service
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/27 - 15:20
+ * @Version: v1.0
+ */
+public interface NoiseDevInfoLogService {
+    List<NoiseDevInfoLogDTO> getDevStatisticsByDTO(NoiseDevInfoLogDTO dto);
+
+    Integer getTimezoneById(Integer id);
+}

+ 34 - 0
src/main/java/com/welampiot/service/impl/NoiseDevInfoLogServiceImpl.java

@@ -0,0 +1,34 @@
+package com.welampiot.service.impl;
+
+import com.welampiot.dao.NoiseDevInfoLogDao;
+import com.welampiot.dto.NoiseDevInfoLogDTO;
+import com.welampiot.service.NoiseDevInfoLogService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoLogServiceImpl
+ * Package: com.welampiot.service.impl
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/27 - 15:21
+ * @Version: v1.0
+ */
+@Service
+public class NoiseDevInfoLogServiceImpl implements NoiseDevInfoLogService {
+    @Autowired
+    private NoiseDevInfoLogDao noiseDevInfoLogDao;
+
+    @Override
+    public List<NoiseDevInfoLogDTO> getDevStatisticsByDTO(NoiseDevInfoLogDTO dto) {
+        return noiseDevInfoLogDao.getDevStatisticsByDTO(dto);
+    }
+
+    @Override
+    public Integer getTimezoneById(Integer id) {
+        return noiseDevInfoLogDao.getTimezoneById(id);
+    }
+}

+ 24 - 0
src/main/java/com/welampiot/vo/NoiseDevInfoLogVO.java

@@ -0,0 +1,24 @@
+package com.welampiot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * ClassName: NoiseDevInfoLogVO
+ * Package: com.welampiot.vo
+ * Description:
+ *
+ * @Author: zhj_Start
+ * @Create: 2023/4/27 - 15:23
+ * @Version: v1.0
+ */
+@Data
+public class NoiseDevInfoLogVO implements Serializable {
+    private List<Object> dateList;
+
+    private List<Object> dataList;
+
+    private static final long serialVersionUID = 1L;
+}

+ 24 - 0
src/main/resources/mapper/NoiseDevInfoLogMapper.xml

@@ -0,0 +1,24 @@
+<?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.NoiseDevInfoLogDao">
+
+    <select id="getDevStatisticsByDTO" resultType="NoiseDevInfoLogDTO">
+        select noise,updatetime as updateTime from noise_dev_info_log
+        where dev_id = #{devId}
+            <if test="startDate != null and startDate != ''">
+                and updateTime <![CDATA[ >= ]]> #{startDate}
+            </if>
+            <if test="endDate != null and endDate != ''">
+                and updateTime <![CDATA[ <= ]]> #{endDate}
+            </if>
+            order by updateTime desc
+    </select>
+
+    <select id="getTimezoneById" resultType="Integer">
+        select s.timezone
+        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 n.id = #{id}
+    </select>
+    
+</mapper>