From 3b29244703787dda85386167dca4126b5b0f150c Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Fri, 16 Jul 2021 13:58:34 +0800
Subject: [PATCH] screen-api                 添加查询五分钟数据接口以及查询国控站位置接口

---
 screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java                       |   54 +++++
 screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/StateControllerStationVO.java                  |   36 +++
 screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java                             |   28 ++
 screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java                    |   72 +++++++
 screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java                         |    2 
 screen-api/src/main/java/com/moral/api/controller/TestController.java                                      |   15 +
 screen-api/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java                               |   35 +++
 screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java                              |   14 +
 screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java                           |   14 +
 pom.xml                                                                                                    |    2 
 screen-api/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java                               |   16 +
 screen-api/src/main/java/com/moral/api/service/MonitorPointService.java                                    |   11 +
 screen-api/src/main/java/com/moral/api/service/OrganizationService.java                                    |    9 
 screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java                           |    9 
 screen-api/src/main/java/com/moral/api/entity/HistoryFiveMinutely.java                                     |   41 ++++
 screen-api/src/main/java/com/moral/api/controller/DeviceController.java                                    |    4 
 screen-api/src/main/resources/mapper/HistoryFiveMinutely202107Mapper.xml                                   |   12 +
 screen-api/src/main/java/com/moral/api/pojo/dto/historyFiveMinutely/DeviceAndFiveMinuteDataDTO.java        |   29 ++
 screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java |   29 ++
 screen-api/src/main/java/com/moral/api/pojo/vo/historyFiveMinutely/DeviceAndFiveMinuteDataVO.java          |   41 ++++
 screen-api/src/main/resources/application-local.yml                                                        |  120 ++++++++++++
 21 files changed, 583 insertions(+), 10 deletions(-)

diff --git a/pom.xml b/pom.xml
index a285bb3..b26d234 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
         <maven-shared-incremental.version>1.1</maven-shared-incremental.version>
         <spring-web.version>4.1.6.RELEASE</spring-web.version>
         <com.alibaba.druid.version>1.1.5</com.alibaba.druid.version>
-        <org.mybatis-plus.spring.boot.version>3.4.1</org.mybatis-plus.spring.boot.version>
+        <org.mybatis-plus.spring.boot.version>3.4.3.1</org.mybatis-plus.spring.boot.version>
         <org.projectlombok.version>1.16.18</org.projectlombok.version>
         <io.springfox.version>2.7.0</io.springfox.version>
         <swagger-bootstrap-ui.version>1.9.6</swagger-bootstrap-ui.version>
diff --git a/screen-api/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java b/screen-api/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
index 4a253f7..8b810d5 100644
--- a/screen-api/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
+++ b/screen-api/src/main/java/com/moral/api/config/mybatis/MybatisPlusConfig.java
@@ -1,9 +1,18 @@
 package com.moral.api.config.mybatis;
 
+import com.baomidou.mybatisplus.core.parser.ISqlParser;
+import com.baomidou.mybatisplus.extension.parsers.DynamicTableNameParser;
+import com.baomidou.mybatisplus.extension.parsers.ITableNameHandler;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.handler.TableNameHandler;
+import com.baomidou.mybatisplus.extension.plugins.inner.DynamicTableNameInnerInterceptor;
+import org.apache.ibatis.reflection.MetaObject;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 
 @Configuration
@@ -14,8 +23,30 @@
      */
     @Bean
     public PaginationInterceptor paginationInterceptor() {
-        PaginationInterceptor page = new PaginationInterceptor();
-        return page;
+        PaginationInterceptor paginationInterceptor  = new PaginationInterceptor();
+        return paginationInterceptor;
+    }
+
+    /**
+    * @Description: ������������������
+            * @Param: []
+            * @return: com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
+            * @Author: ���������
+            * @Date: 2021/7/15
+            */
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor(){
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
+        HashMap<String, TableNameHandler> map = new HashMap<String, TableNameHandler>();
+        map.put("history_five_minutely",(sql,tableName)->{ Date date = new Date();
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
+            String month = sdf.format(date);
+            return tableName+"_"+month;});
+
+        dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);
+        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
+        return interceptor;
     }
 
 
diff --git a/screen-api/src/main/java/com/moral/api/controller/DeviceController.java b/screen-api/src/main/java/com/moral/api/controller/DeviceController.java
index 8e38326..0e277e7 100644
--- a/screen-api/src/main/java/com/moral/api/controller/DeviceController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/DeviceController.java
@@ -39,9 +39,5 @@
         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
     }
 
-    @GetMapping("queryFiveMinuteData")
-    public ResultMessage queryFiveMinuteData(Integer regionCode,String sensorCode){
 
-        return null;
-    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java b/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java
new file mode 100644
index 0000000..c11637f
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/controller/HistoryFiveMinutelyController.java
@@ -0,0 +1,54 @@
+package com.moral.api.controller;
+
+import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO;
+import com.moral.api.pojo.form.historyFiveMinutely.QueryDeviceAndFiveMinuteDataForm;
+import com.moral.api.pojo.vo.historyFiveMinutely.DeviceAndFiveMinuteDataVO;
+import com.moral.api.service.HistoryFiveMinutelyService;
+import com.moral.constant.ResponseCodeEnum;
+import com.moral.constant.ResultMessage;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @ClassName HistoryFiveMinutely
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/15 16:42
+ * @Version TODO
+ **/
+
+@Slf4j
+@Api(tags = {"������������������������"})
+@RestController
+@CrossOrigin(origins = "*", maxAge = 3600)
+@RequestMapping("/historyFiveMinutely")
+public class HistoryFiveMinutelyController {
+
+    @Autowired
+    HistoryFiveMinutelyService historyFiveMinutelyService;
+
+    @GetMapping("queryDeviceAndData")
+    public ResultMessage queryDeviceAndData(QueryDeviceAndFiveMinuteDataForm form){
+        //18 110100
+        //������������������������
+        if (!form.valid())
+            return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
+                    ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
+        //������������������
+        List<DeviceAndFiveMinuteDataDTO> dto = historyFiveMinutelyService.queryDeviceAndFiveMinuteData(form);
+
+        //������������������
+        DeviceAndFiveMinuteDataVO vo = DeviceAndFiveMinuteDataVO.convert(dto);
+
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
+    }
+}
+
+
diff --git a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java
index 8eb74e9..ce0faaa 100644
--- a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java
@@ -3,6 +3,7 @@
 import com.moral.api.entity.MonitorPoint;
 import com.moral.api.pojo.form.device.MonitorPointQueryForm;
 import com.moral.api.pojo.vo.monitorPoint.MonitorPointsVO;
+import com.moral.api.pojo.vo.monitorPoint.StateControllerStationVO;
 import com.moral.api.service.MonitorPointService;
 import com.moral.api.service.OrganizationService;
 import com.moral.constant.ResponseCodeEnum;
@@ -41,7 +42,7 @@
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         //������������������
-        List<MonitorPoint> monitorPoints = monitorPointService.query(form);
+        List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(form);
 
         //������������������
         MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints);
@@ -49,5 +50,16 @@
         return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
     }
 
+    @GetMapping("queryStateControlStation")
+    public ResultMessage queryStateControlStation(Integer regionCode){
+
+        List<MonitorPoint> monitorPoints = monitorPointService.queryStateControlStationByRegionCode(regionCode);
+
+        //������������������������
+        StateControllerStationVO vo = StateControllerStationVO.convert(monitorPoints);
+
+        return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),vo);
+    }
+
 
 }
diff --git a/screen-api/src/main/java/com/moral/api/controller/TestController.java b/screen-api/src/main/java/com/moral/api/controller/TestController.java
index 9c5d2ab..47dfffb 100644
--- a/screen-api/src/main/java/com/moral/api/controller/TestController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/TestController.java
@@ -1,8 +1,12 @@
 package com.moral.api.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.moral.api.entity.HistoryFiveMinutely;
 import com.moral.api.entity.Test;
+import com.moral.api.mapper.HistoryFiveMinutelyMapper;
 import com.moral.api.service.TestService;
+import com.moral.constant.Constants;
 import com.moral.constant.ResultMessage;
 import com.moral.redis.RedisUtil;
 import com.moral.util.PageResult;
@@ -11,6 +15,8 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.kafka.core.KafkaTemplate;
 import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 
 @Slf4j
@@ -24,6 +30,9 @@
 
     @Autowired
     private TestService testService;
+
+    @Autowired
+    private HistoryFiveMinutelyMapper historyFiveMinutelyMapper;
     /**
      * name   ������
      * email  ������
@@ -96,4 +105,10 @@
         kafkaTemplate.send("test_topic","test111111111111111");
     }
 
+    @GetMapping("test")
+    public void test(){
+        QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>();
+        List<HistoryFiveMinutely> historyFiveMinutelies = historyFiveMinutelyMapper.selectList(queryWrapper);
+        System.out.println(1111);
+    }
 }
diff --git a/screen-api/src/main/java/com/moral/api/entity/HistoryFiveMinutely.java b/screen-api/src/main/java/com/moral/api/entity/HistoryFiveMinutely.java
new file mode 100644
index 0000000..4117963
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/HistoryFiveMinutely.java
@@ -0,0 +1,41 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 5���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-15
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistoryFiveMinutely extends Model<HistoryFiveMinutely> {
+
+
+    /**
+     * ������mac
+     */
+    private String mac;
+
+    /**
+     * ������������
+     */
+    private Date time;
+
+    /**
+     * ������
+     */
+    private String value;
+
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java b/screen-api/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java
new file mode 100644
index 0000000..cd5aec7
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/mapper/HistoryFiveMinutelyMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.HistoryFiveMinutely;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 5��������������� Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-15
+ */
+public interface HistoryFiveMinutelyMapper extends BaseMapper<HistoryFiveMinutely> {
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/dto/historyFiveMinutely/DeviceAndFiveMinuteDataDTO.java b/screen-api/src/main/java/com/moral/api/pojo/dto/historyFiveMinutely/DeviceAndFiveMinuteDataDTO.java
new file mode 100644
index 0000000..46f4c12
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/dto/historyFiveMinutely/DeviceAndFiveMinuteDataDTO.java
@@ -0,0 +1,29 @@
+package com.moral.api.pojo.dto.historyFiveMinutely;
+
+import com.moral.api.entity.Device;
+import com.moral.api.entity.HistoryFiveMinutely;
+import lombok.Data;
+
+import java.util.Map;
+
+/**
+ * @ClassName DeviceAndFiveMinuteDataDTO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/16 9:24
+ * @Version TODO
+ **/
+@Data
+public class DeviceAndFiveMinuteDataDTO {
+
+    /*
+    * ������������
+    * */
+    private Device device;
+
+    /*
+    * ������������������
+    * */
+    private Map<String,Object> sensorValue;
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java
index 2ae2790..0214317 100644
--- a/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/device/MonitorPointQueryForm.java
@@ -1,5 +1,6 @@
 package com.moral.api.pojo.form.device;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import org.springframework.util.ObjectUtils;
 
@@ -11,6 +12,7 @@
  * @Version TODO
  **/
 @Data
+@AllArgsConstructor
 public class MonitorPointQueryForm {
     /*
     * ������id
diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java
new file mode 100644
index 0000000..6ca5be0
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/form/historyFiveMinutely/QueryDeviceAndFiveMinuteDataForm.java
@@ -0,0 +1,29 @@
+package com.moral.api.pojo.form.historyFiveMinutely;
+
+import lombok.Data;
+import org.springframework.util.ObjectUtils;
+
+/**
+ * @ClassName QueryFiveMinuteData
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/15 16:46
+ * @Version TODO
+ **/
+@Data
+public class QueryDeviceAndFiveMinuteDataForm {
+
+    private Integer organizationId;
+
+    private Integer regionCode;
+
+    private String sensorCode;
+
+    public boolean valid(){
+        if(ObjectUtils.isEmpty(organizationId)||
+                ObjectUtils.isEmpty(regionCode)||
+                ObjectUtils.isEmpty(sensorCode))
+            return false;
+        return true;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/historyFiveMinutely/DeviceAndFiveMinuteDataVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/historyFiveMinutely/DeviceAndFiveMinuteDataVO.java
new file mode 100644
index 0000000..abe5093
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/historyFiveMinutely/DeviceAndFiveMinuteDataVO.java
@@ -0,0 +1,41 @@
+package com.moral.api.pojo.vo.historyFiveMinutely;
+
+import com.moral.api.entity.Device;
+import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @ClassName DeviceAndFiveMinuteDataVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/16 11:17
+ * @Version TODO
+ **/
+@Data
+@AllArgsConstructor
+public class DeviceAndFiveMinuteDataVO {
+
+    private List<Map<String, Object>> devices;
+
+    public static DeviceAndFiveMinuteDataVO convert(List<DeviceAndFiveMinuteDataDTO> dtos) {
+        List<Map<String, Object>> devices = new ArrayList<>();
+        for (DeviceAndFiveMinuteDataDTO dto : dtos) {
+            Device device = dto.getDevice();
+            Map<String, Object> sensorValue = dto.getSensorValue();
+            Map<String, Object> deviceValue = new HashMap<>();
+            deviceValue.put("latitude",device.getLatitude());
+            deviceValue.put("longitude",device.getLongitude());
+            deviceValue.put("state",device.getState());
+            deviceValue.put("mac",device.getMac());
+            deviceValue.putAll(sensorValue);
+            devices.add(deviceValue);
+        }
+        return new DeviceAndFiveMinuteDataVO(devices);
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/StateControllerStationVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/StateControllerStationVO.java
new file mode 100644
index 0000000..ecb5dd5
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/StateControllerStationVO.java
@@ -0,0 +1,36 @@
+package com.moral.api.pojo.vo.monitorPoint;
+
+import com.moral.api.entity.Device;
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.pojo.vo.device.DeviceVO;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName StateControllerStationVO
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/7/16 13:52
+ * @Version TODO
+ **/
+@Data
+public class StateControllerStationVO {
+
+    private List<MonitorPointVO> stateControllerStations;
+
+    public static StateControllerStationVO convert(List<MonitorPoint> monitorPoints){
+        StateControllerStationVO stateControllerStationVO = new StateControllerStationVO();
+        List<MonitorPointVO> stateControllerStations = new ArrayList<>();
+        for (MonitorPoint monitorPoint : monitorPoints) {
+            MonitorPointVO monitorPointVO = new MonitorPointVO();
+            monitorPointVO.setName(monitorPoint.getName());
+            monitorPointVO.setLatitude(monitorPoint.getLatitude());
+            monitorPointVO.setLongitude(monitorPoint.getLongitude());
+            stateControllerStations.add(monitorPointVO);
+        }
+        stateControllerStationVO.setStateControllerStations(stateControllerStations);
+        return stateControllerStationVO;
+    }
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java b/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
new file mode 100644
index 0000000..58e3e02
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/HistoryFiveMinutelyService.java
@@ -0,0 +1,28 @@
+package com.moral.api.service;
+
+import com.moral.api.entity.HistoryFiveMinutely;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO;
+import com.moral.api.pojo.form.historyFiveMinutely.QueryDeviceAndFiveMinuteDataForm;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 5��������������� ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-15
+ */
+public interface HistoryFiveMinutelyService extends IService<HistoryFiveMinutely> {
+
+    /**
+    * @Description: ���������������������������������������������������������������������
+            * @Param: [form]
+            * @return: java.util.List<com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO>
+            * @Author: ���������
+            * @Date: 2021/7/16
+            */
+    List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form);
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
index 0a2b9ef..dd7cc79 100644
--- a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
+++ b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
@@ -23,6 +23,15 @@
             * @Author: ���������
             * @Date: 2021/7/1
             */
-    List<MonitorPoint> query(MonitorPointQueryForm form);
+    List<MonitorPoint> queryByOrgIdAndRegionCode(MonitorPointQueryForm form);
+
+    /**
+    * @Description: ������������������������������������
+            * @Param: [regionCode]
+            * @return: java.util.List<com.moral.api.entity.MonitorPoint>
+            * @Author: ���������
+            * @Date: 2021/7/16
+            */
+    List<MonitorPoint> queryStateControlStationByRegionCode(Integer regionCode);
 }
 
diff --git a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
index 03555b0..a200795 100644
--- a/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
+++ b/screen-api/src/main/java/com/moral/api/service/OrganizationService.java
@@ -23,4 +23,13 @@
             * @Date: 2021/7/1
             */
     List<Organization> getChildrenOrganizationsById(Integer id);
+
+    /**
+    * @Description: ���������������������
+            * @Param: []
+            * @return: com.moral.api.entity.Organization
+            * @Author: ���������
+            * @Date: 2021/7/16
+            */
+    Organization getStateControlStation();
 }
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
new file mode 100644
index 0000000..0ee5973
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -0,0 +1,72 @@
+package com.moral.api.service.impl;
+
+import com.moral.api.entity.Device;
+import com.moral.api.entity.HistoryFiveMinutely;
+import com.moral.api.entity.MonitorPoint;
+import com.moral.api.mapper.HistoryFiveMinutelyMapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.pojo.dto.historyFiveMinutely.DeviceAndFiveMinuteDataDTO;
+import com.moral.api.pojo.form.device.MonitorPointQueryForm;
+import com.moral.api.pojo.form.historyFiveMinutely.QueryDeviceAndFiveMinuteDataForm;
+import com.moral.api.service.HistoryFiveMinutelyService;
+import com.moral.api.service.MonitorPointService;
+import com.moral.constant.RedisConstants;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 5��������������� ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-07-15
+ */
+@Service
+public class HistoryFiveMinutelyServiceImpl extends ServiceImpl<HistoryFiveMinutelyMapper, HistoryFiveMinutely> implements HistoryFiveMinutelyService {
+
+    @Autowired
+    MonitorPointService monitorPointService;
+    @Autowired
+    RedisTemplate redisTemplate;
+
+    @Override
+    public List<DeviceAndFiveMinuteDataDTO> queryDeviceAndFiveMinuteData(QueryDeviceAndFiveMinuteDataForm form) {
+        //������
+        Integer organizationId = form.getOrganizationId();
+        Integer regionCode = form.getRegionCode();
+        String sensorCode = form.getSensorCode();
+        //���������������������������������������������������
+        List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(new MonitorPointQueryForm(organizationId, regionCode));
+        List<Device> devices = new ArrayList<>();
+        for (MonitorPoint monitorPoint : monitorPoints) {
+            List<Device> monitorPointDevices = monitorPoint.getDevices();
+            if (!ObjectUtils.isEmpty(monitorPointDevices))
+                devices.addAll(monitorPointDevices);
+        }
+        //���������������������������������
+        List<DeviceAndFiveMinuteDataDTO> dtos = new ArrayList<>();
+        for (Device device : devices) {
+            DeviceAndFiveMinuteDataDTO dto = new DeviceAndFiveMinuteDataDTO();
+            String mac = device.getMac();
+            Map<String, Object> sensorValues = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, mac);
+            Map<String,Object> value = new HashMap<>();
+            if (sensorValues!=null&&sensorValues.get(sensorCode) != null)
+                value.put(sensorCode,sensorValues.get(sensorCode));
+            else
+                value.put(sensorCode,null);
+            dto.setDevice(device);
+            dto.setSensorValue(value);
+            dtos.add(dto);
+        }
+        return dtos;
+    }
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
index 1b54467..9c85cc5 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
@@ -37,7 +37,7 @@
     DeviceService deviceService;
 
     @Override
-    public List<MonitorPoint> query(MonitorPointQueryForm form) {
+    public List<MonitorPoint> queryByOrgIdAndRegionCode(MonitorPointQueryForm form) {
         //������
         Integer organizationId = form.getOrganizationId();
         Integer regionCode = form.getRegionCode();
@@ -62,6 +62,18 @@
         }
         return monitorPoints;
     }
+
+    @Override
+    public List<MonitorPoint> queryStateControlStationByRegionCode(Integer regionCode) {
+        //���������������������
+        Organization stateControlStationOrganization = organizationService.getStateControlStation();
+        //���������������������������������������
+        QueryWrapper<MonitorPoint> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_delete",Constants.NOT_DELETE);
+        queryWrapper.eq("organization_id",stateControlStationOrganization.getId());
+        queryWrapper.eq(RegionCodeUtils.regionCodeConvertToName(regionCode),regionCode);
+        return monitorPointMapper.selectList(queryWrapper);
+    }
 }
 
 
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index f407aa4..db78fac 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -34,6 +34,15 @@
         return childrenOrganization;
     }
 
+    @Override
+    public Organization getStateControlStation() {
+        QueryWrapper<Organization> wrapper = new QueryWrapper<>();
+        wrapper.eq("name","���������");
+        wrapper.eq("is_delete",Constants.NOT_DELETE);
+        Organization organization = organizationMapper.selectOne(wrapper);
+        return organization;
+    }
+
     /**
     * @Description: ���������������������������������������������������children���
             * @Param: [parentId, children]
diff --git a/screen-api/src/main/resources/application-local.yml b/screen-api/src/main/resources/application-local.yml
new file mode 100644
index 0000000..ce84e43
--- /dev/null
+++ b/screen-api/src/main/resources/application-local.yml
@@ -0,0 +1,120 @@
+server:
+  port: 8081
+  tomcat:
+    uri-encoding: UTF-8
+    #���������������
+    min-spare-threads: 500
+    #���������������
+    max-threads: 2500
+    #���������������
+    max-connections: 6500
+    #������������������������
+    accept-count: 1000
+spring:
+  profiles:
+    active: dev
+  application:
+    name: screen-manage
+  redis:
+    host: r-bp1xdlb9wfc6zt0msppd.redis.rds.aliyuncs.com
+    port: 6379
+    password: moral_123456
+    timeout: 30000
+    jedis:
+      pool:
+        max-active: 256
+        max-wait: 30000
+        max-idle: 64
+        min-idle: 32
+    lettuce:
+      pool:
+        max-active: 256
+        max-idle: 64
+        max-wait: 30000
+        min-idle: 32
+  tokenRedis:
+    host: r-bp1xdlb9wfc6zt0msppd.redis.rds.aliyuncs.com
+    port: 6379
+    password: moral_123456
+    timeout: 30000
+    database: 15
+    pool:
+      max-active: 256
+      max-wait: 30000
+      max-idle: 64
+      min-idle: 32
+
+  datasource:
+    minIdle: 1
+    time-between-eviction-runs-millis: 60000
+    max-active: 20
+    test-while-idle: true
+    validation-query: select 'x'
+    filters: stat
+    type: com.alibaba.druid.pool.DruidDataSource
+    max-wait: 60000
+    url: jdbc:mysql://rm-bp1pr3rx9m3fnkwsk8o.mysql.rds.aliyuncs.com:3306/moral?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+    username: root
+    password: moral_123456
+    test-on-borrow: false
+    sql-script-encoding: utf-8
+    pool-prepared-statements: true
+    min-evictable-idle-time-millis: 300000
+    initial-size: 1
+    driver-class-name: com.mysql.cj.jdbc.Driver
+    max-conn-lifetime-millis: 20
+    test-on-return: false
+
+mybatis-plus:
+  mapper-locations: classpath:mapper/*.xml
+  global-config:
+    db-config:
+      id-type: auto
+      field-strategy: NOT_EMPTY
+      db-type: MYSQL
+  configuration:
+    map-underscore-to-camel-case: true
+    call-setters-on-nulls: true
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+kafka:
+  listener:
+    ack-mode: manual_immediate
+  consumer:
+    auto:
+      offset:
+        reset: latest
+    concurrency: 3
+    enable:
+      auto:
+        commit: false
+    servers: 47.99.145.48:9092,47.111.116.38:9092,47.111.124.159:9092
+    session:
+      timeout: 6000
+    zookeeper:
+      connect: 47.99.145.48:2181,47.111.116.38:2181,47.111.124.159:2181
+  producer:
+    batch:
+      size: 4096
+    buffer:
+      memory: 40960
+    linger: 1
+    retries: 0
+    servers: 47.99.145.48:9092,47.111.116.38:9092,47.111.124.159:9092
+mvc:
+  interceptor:
+    exclude:
+      - /login
+      - /swagger-ui.html
+      - /swagger-resources/**
+      - /swagger-ui.html/**
+      - /webjars/**
+      - /verificationCode/**
+
+AES:
+  KEY:
+    AD42F7787B035B7580000EF93BE20BAD
+TOKEN:
+  KEY:
+    foh3wi2ooghiCh5
+
diff --git a/screen-api/src/main/resources/mapper/HistoryFiveMinutely202107Mapper.xml b/screen-api/src/main/resources/mapper/HistoryFiveMinutely202107Mapper.xml
new file mode 100644
index 0000000..d5ef167
--- /dev/null
+++ b/screen-api/src/main/resources/mapper/HistoryFiveMinutely202107Mapper.xml
@@ -0,0 +1,12 @@
+<?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.moral.api.mapper.HistoryFiveMinutely202107Mapper">
+
+        <!-- ������������������������ -->
+        <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryFiveMinutely">
+                    <result column="mac" property="mac" />
+                    <result column="time" property="time" />
+                    <result column="value" property="value" />
+        </resultMap>
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0