From 6f4e852b84c577454a4876f83c7085bd360fe4fb Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Tue, 17 Aug 2021 17:07:02 +0800
Subject: [PATCH] 特殊设备数据insert

---
 screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java     |    2 
 screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java      |   24 --
 screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java                         |   10 
 screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java                   |    6 
 screen-manage/src/main/java/com/moral/api/controller/DeviceController.java                  |   25 ++
 screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml                      |   14 +
 screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java                 |   59 ++++++-
 screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java            |    2 
 screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java                     |    8 
 screen-common/src/main/java/com/moral/constant/Constants.java                               |   24 +-
 screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java                     |    2 
 screen-common/src/main/java/com/moral/util/AmendUtils.java                                  |   14 
 screen-common/src/main/java/com/moral/constant/RedisConstants.java                          |   11 +
 screen-common/src/main/java/com/moral/util/DateUtils.java                                   |    6 
 screen-common/src/main/java/com/moral/constant/KafkaConstants.java                          |   14 
 screen-manage/src/main/java/com/moral/api/service/DeviceService.java                        |    3 
 screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java          |   21 ++
 screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java               |   33 +++
 screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java        |    6 
 screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java            |   16 ++
 screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java                       |    2 
 screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml                             |    8 +
 screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java                  |   55 ++++++
 screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java           |    6 
 screen-job/src/main/java/com/moral/api/task/CreateTableTask.java                            |    4 
 screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java |   81 ++++++++++
 26 files changed, 364 insertions(+), 92 deletions(-)

diff --git a/screen-common/src/main/java/com/moral/constant/Constants.java b/screen-common/src/main/java/com/moral/constant/Constants.java
index 3efa08b..a7ec5d1 100644
--- a/screen-common/src/main/java/com/moral/constant/Constants.java
+++ b/screen-common/src/main/java/com/moral/constant/Constants.java
@@ -120,11 +120,6 @@
     public static final String UN_ADJUST = "unadjust";
 
     /*
-     * ���������������������
-     * */
-    public static final String TRANSITION = "transition";
-
-    /*
      * ���������������������
      * */
     public static final String DEVICE_STATE_OFFLINE = "0";
@@ -184,14 +179,25 @@
      */
     public static final String NULL_VALUE = "N/V";
 
-    //������������������������,������
+    /*
+    * ������������������������,������
+    * */
     public static final String MARKER_BIT_TRUE = "N";
 
-    //������������������������,���������������
+    /*
+    * ������������������������,���������������
+    * */
     public static final String MARKER_BIT_FALSE = "H";
 
-    //������������������������������������������key������
-    public static final String MARKER_BIT_KEY = "-Flag";
+    /*
+    * ������������������������������������������key������
+    * */
+    public static final String MARKER_BIT_KEY = "Flag";
+
+    /*
+     * ������������������������
+     * */
+    public static final String SENSOR_CODE_SPECIAL_BATCH = "a00000";
 
 
 }
diff --git a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
index 2b3a9f2..2dd9fdc 100644
--- a/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/KafkaConstants.java
@@ -3,29 +3,29 @@
 public class KafkaConstants {
 
     /**
-     * ������������������
+     * ������������������������������
      */
     public static final String TOPIC_MINUTE = "minute_data";
 
     /**
-     * ������������������
+     * ������������������������������
      */
     public static final String TOPIC_HOUR = "hour_data";
 
     /*
-     * ���������������
+     * ���������������������������
      * */
     public static final String TOPIC_SECOND = "second_data";
 
     /**
-     * ���������������������
+     * ���������������������������������������������������
      */
-    public static final String GROUP_HOUR = "hour";
+    public static final String TOPIC_SECOND_SPECIAL = "second_data_special";
 
     /**
-     * ���������������������
+     * ���������������������������
      */
-    public static final String GROUP_MINUTE = "minute";
+    public static final String GROUP_INSERT = "insert";
 
     /**
      * ���������������������������������
diff --git a/screen-common/src/main/java/com/moral/constant/RedisConstants.java b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
index e2b5bff..e449781 100644
--- a/screen-common/src/main/java/com/moral/constant/RedisConstants.java
+++ b/screen-common/src/main/java/com/moral/constant/RedisConstants.java
@@ -46,7 +46,7 @@
     /*
      * ������������������������
      * */
-    public static final String ADJUST = "adjust_";
+    public static final String ADJUST = "adjust";
 
     /*
      * redis������������key
@@ -69,5 +69,14 @@
      * */
     public static final String DATA_FIVE_MINUTES = "data_five_minutes";
 
+    /*
+     * ���������������������������������������������������������������
+     * ���������������hash
+     * key���mac
+     * value���SpecialDevice
+     * ���������������Map<String,Device>
+     * */
+    public static final String SPECIAL_DEVICE_INFO = "special_device_alarm_info";
+
 
 }
diff --git a/screen-common/src/main/java/com/moral/util/AmendUtils.java b/screen-common/src/main/java/com/moral/util/AmendUtils.java
index 7c15de8..4a9104a 100644
--- a/screen-common/src/main/java/com/moral/util/AmendUtils.java
+++ b/screen-common/src/main/java/com/moral/util/AmendUtils.java
@@ -60,7 +60,7 @@
                 Double o3 = Double.parseDouble(dataValue.get(Constants.SENSOR_CODE_O3).toString());
 
                 //O3���������������
-                Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + Constants.MARKER_BIT_KEY);
+                Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + "-" + Constants.MARKER_BIT_KEY);
                 //������������������������������
                 if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
                     continue;
@@ -123,8 +123,8 @@
             Map<String, Object> dataValue = JSONObject.parseObject((String) map.get("value"), Map.class);
             Object wind = dataValue.get(Constants.SENSOR_CODE_WIND_DIR);
             Object speed = dataValue.get(Constants.SENSOR_CODE_WIND_SPEED);
-            Object flagDir = dataValue.get(Constants.SENSOR_CODE_WIND_DIR + Constants.MARKER_BIT_KEY);
-            Object flagSpeed = dataValue.get(Constants.SENSOR_CODE_WIND_SPEED + Constants.MARKER_BIT_KEY);
+            Object flagDir = dataValue.get(Constants.SENSOR_CODE_WIND_DIR + "-" + Constants.MARKER_BIT_KEY);
+            Object flagSpeed = dataValue.get(Constants.SENSOR_CODE_WIND_SPEED + "-" + Constants.MARKER_BIT_KEY);
             if (!Constants.MARKER_BIT_TRUE.equals(flagDir) || !Constants.MARKER_BIT_TRUE.equals(flagSpeed)) {
                 continue;
             }
@@ -186,9 +186,9 @@
             if ("hour".equals(type)) {
                 //���������>=45���,������������ N,<45���H   H:���������������
                 if (size >= 45) {
-                    result.put(Constants.SENSOR_CODE_WIND_DIR + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
+                    result.put(Constants.SENSOR_CODE_WIND_DIR + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
                 } else {
-                    result.put(Constants.SENSOR_CODE_WIND_DIR + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
+                    result.put(Constants.SENSOR_CODE_WIND_DIR + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
                 }
             }
         }
@@ -224,7 +224,7 @@
         for (Map<String, Object> dataMap : list) {
             Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
             Object o = dataValue.get(Constants.SENSOR_CODE_CO);
-            Object flag = dataValue.get(Constants.SENSOR_CODE_CO + Constants.MARKER_BIT_KEY);
+            Object flag = dataValue.get(Constants.SENSOR_CODE_CO + "-" + Constants.MARKER_BIT_KEY);
             if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
                 continue;
             }
@@ -262,7 +262,7 @@
         for (Map<String, Object> dataMap : list) {
             Map<String, Object> dataValue = JSONObject.parseObject((String) dataMap.get("value"), Map.class);
             Object o = dataValue.get(Constants.SENSOR_CODE_O3);
-            Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + Constants.MARKER_BIT_KEY);
+            Object flag = dataValue.get(Constants.SENSOR_CODE_O3 + "-" + Constants.MARKER_BIT_KEY);
             if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
                 continue;
             }
diff --git a/screen-common/src/main/java/com/moral/util/DateUtils.java b/screen-common/src/main/java/com/moral/util/DateUtils.java
index 51034a8..9084e65 100644
--- a/screen-common/src/main/java/com/moral/util/DateUtils.java
+++ b/screen-common/src/main/java/com/moral/util/DateUtils.java
@@ -1358,7 +1358,7 @@
 
     /*
      * ������������������������������������
-     * ������time=2021-08-04 ���������������������������������������
+     * ������time=2021-08-04 ���������������������������������������2021-08-04 00���2021-08-04 01���������
      *    time=2021-08 ���������������������������������
      * */
     public static List<String> getTimeLag(String time) {
@@ -1406,9 +1406,5 @@
         StringBuilder stringBuffer = new StringBuilder(dateString);
         stringBuffer.replace(15, 16, String.valueOf(i));
         return getDate(stringBuffer.toString(), yyyy_MM_dd_HH_mm_EN);
-    }
-
-    public static void main(String[] args) {
-        System.out.println(getTimeLag("2021"));
     }
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
index 5409221..10fa56c 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java
@@ -149,7 +149,7 @@
                             Map<String, Object> dataValue = JSONObject.parseObject((String) v.get("value"), Map.class);
                             Object sensorValue = dataValue.get(sensorCode);
                             //������������������������
-                            Object flag = dataValue.get(sensorCode + Constants.MARKER_BIT_KEY);
+                            Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY);
                             if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
                                 return null;
                             }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
index f1a0a96..ae9d97a 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java
@@ -135,7 +135,7 @@
                             Map<String, Object> dataValue = JSONObject.parseObject((String) v.get("value"), Map.class);
                             Object sensorValue = dataValue.get(sensorCode);
                             //������������������������
-                            Object flag = dataValue.get(sensorCode + Constants.MARKER_BIT_KEY);
+                            Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY);
                             if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
                                 return null;
                             }
diff --git a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
index 797334b..a02a67f 100644
--- a/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
+++ b/screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -163,7 +163,7 @@
                             Map<String, Object> dataValue = JSONObject.parseObject((String) v.get("value"), Map.class);
                             Object sensorValue = dataValue.get(sensorCode);
                             //������������������������
-                            Object flag = dataValue.get(sensorCode + Constants.MARKER_BIT_KEY);
+                            Object flag = dataValue.get(sensorCode + "-" + Constants.MARKER_BIT_KEY);
                             if (!Constants.MARKER_BIT_TRUE.equals(flag)) {
                                 return null;
                             }
@@ -199,9 +199,9 @@
                     jsonMap.put(sensorCode, sciCal);
                     //���������
                     if (size.get() >= 45) {
-                        jsonMap.put(sensorCode + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
+                        jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_TRUE);
                     } else {
-                        jsonMap.put(sensorCode + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
+                        jsonMap.put(sensorCode + "-" + Constants.MARKER_BIT_KEY, Constants.MARKER_BIT_FALSE);
                     }
                 }
             });
diff --git a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
index 2fab184..c8f4795 100644
--- a/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
@@ -32,7 +32,7 @@
             historyMinutelyService.createTable(timeUnits + "_" + Constants.UN_ADJUST);
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
@@ -45,7 +45,7 @@
             historyFiveMinutelyService.createTable(timeUnits);
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
index 97a984e..b4b1bff 100644
--- a/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/HistoryAqiInsertTask.java
@@ -21,7 +21,7 @@
             historyAqiService.insertHistoryAqi();
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
diff --git a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
index 0ef79d9..79bcfe9 100644
--- a/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java
@@ -37,7 +37,7 @@
             historyFiveMinutelyService.insertHistoryFiveMinutely();
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
@@ -61,7 +61,7 @@
             historyWeeklyService.insertHistoryWeekly();
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
@@ -73,7 +73,7 @@
             historyMonthlyService.insertHistoryMonthly();
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
@@ -85,7 +85,7 @@
             historyHourlyService.insertHistoryHourly();
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
diff --git a/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java b/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
index aa5d7a6..4c6e1be 100644
--- a/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
+++ b/screen-job/src/main/java/com/moral/api/task/JudgeOffLineDeviceTask.java
@@ -21,7 +21,7 @@
             deviceService.judgeOffLineDevice();
         } catch (Exception e) {
             XxlJobHelper.log(e.getMessage());
-            return ReturnT.FAIL;
+            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
         }
         return ReturnT.SUCCESS;
     }
diff --git a/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java b/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
index a373700..474e18d 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/DeviceController.java
@@ -19,8 +19,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.moral.api.entity.Device;
 
+import com.moral.api.entity.SpecialDevice;
 import com.moral.api.entity.Version;
 import com.moral.api.service.DeviceService;
+import com.moral.api.service.SpecialDeviceService;
 import com.moral.api.service.VersionService;
 import com.moral.constant.Constants;
 import com.moral.constant.ResponseCodeEnum;
@@ -39,6 +41,9 @@
     @Autowired
     private VersionService versionService;
 
+    @Autowired
+    private SpecialDeviceService specialDeviceService;
+
     @ApiOperation(value = "������������", notes = "������������")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String")
@@ -53,10 +58,14 @@
             return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(),
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
-        //������mac���������������
+        //������mac���������������,���������������������������������������������
         QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("mac", device.getMac());
-        if (deviceService.count(queryWrapper) > 0) {
+        queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+        QueryWrapper<SpecialDevice> specialDeviceQueryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+        if (deviceService.getOne(queryWrapper) != null || specialDeviceService.getOne(specialDeviceQueryWrapper) != null) {
             return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg());
         }
         deviceService.insert(device);
@@ -88,10 +97,14 @@
                     ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg());
         }
         if (device.getMac() != null) {
-            //������mac���������������
+            //������mac���������������,���������������������������������������������
             QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("mac", device.getMac());
-            if (deviceService.getOne(queryWrapper) != null) {
+            queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+            QueryWrapper<SpecialDevice> specialDeviceQueryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("mac", device.getMac()).eq("is_delete", Constants.NOT_DELETE);
+
+            if (deviceService.getOne(queryWrapper) != null || specialDeviceService.getOne(specialDeviceQueryWrapper) != null) {
                 return ResultMessage.fail(ResponseCodeEnum.MAC_IS_EXIST.getCode(), ResponseCodeEnum.MAC_IS_EXIST.getMsg());
             }
         }
diff --git a/screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java b/screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java
new file mode 100644
index 0000000..d173893
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/entity/HistorySecondSpecial.java
@@ -0,0 +1,55 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.io.Serializable;
+import java.util.Date;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * ������������������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class HistorySecondSpecial extends Model<HistorySecondSpecial> {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ������mac
+     */
+    private String mac;
+
+    /**
+     * ������������
+     */
+    private Date time;
+
+    /**
+     * ������
+     */
+    private String value;
+
+    /**
+     * ���������������������id
+     */
+    private Integer organizationId;
+
+    /**
+     * ������������
+     */
+    private Date batch;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return null;
+    }
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
index 55f3f67..04e47cb 100644
--- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
+++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java
@@ -7,7 +7,7 @@
 import org.springframework.kafka.annotation.KafkaListener;
 import org.springframework.kafka.support.Acknowledgment;
 import org.springframework.stereotype.Component;
-import org.springframework.util.StringUtils;
+import org.springframework.util.ObjectUtils;
 
 import java.util.HashMap;
 import java.util.Iterator;
@@ -17,9 +17,13 @@
 import com.moral.api.service.DeviceService;
 import com.moral.api.service.HistoryHourlyService;
 import com.moral.api.service.HistoryMinutelyService;
+import com.moral.api.service.HistorySecondSpecialService;
 import com.moral.constant.KafkaConstants;
 import com.moral.constant.RedisConstants;
 
+/*
+ * ������������������
+ * */
 @Component
 @Slf4j
 public class KafkaConsumer {
@@ -36,16 +40,19 @@
     @Autowired
     private RedisTemplate redisTemplate;
 
+    @Autowired
+    private HistorySecondSpecialService historySecondSpecialService;
+
     //������������
-    @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_MINUTE, containerFactory = "kafkaListenerContainerFactory")
+    @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory")
     public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
         try {
-            Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+            Map<String, Object> data = JSON.parseObject(msg, Map.class);
             Object mac = data.get("mac");
             Object time = data.get("DataTime");
             Object ver = data.get("ver");
-            if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                 log.warn("some properties is null, param{}", msg);
                 ack.acknowledge();
                 return;
@@ -77,15 +84,15 @@
     }
 
     //������������
-    @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_HOUR, containerFactory = "kafkaListenerContainerFactory")
+    @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory")
     public void listenHour(ConsumerRecord<String, String> record, Acknowledgment ack) {
         String msg = record.value();
         try {
-            Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+            Map<String, Object> data = JSON.parseObject(msg, Map.class);
             Object mac = data.get("mac");
             Object time = data.get("DataTime");
             Object ver = data.get("ver");
-            if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                 log.warn("some properties is null, param{}", msg);
                 ack.acknowledge();
                 return;
@@ -118,24 +125,54 @@
 
     //������������������������������������������������������
     @KafkaListener(topics = KafkaConstants.TOPIC_SECOND, groupId = KafkaConstants.GROUP_STATE, containerFactory = "kafkaListenerContainerFactory")
-    public void listenSecond(ConsumerRecord<String, String> record, Acknowledgment ack) {
+    public void listenSecond(ConsumerRecord<String, String> record) {
         String msg = record.value();
         try {
-            Map<String, Object> data = JSON.parseObject(msg, HashMap.class);
+            Map<String, Object> data = JSON.parseObject(msg, Map.class);
             Object mac = data.get("mac");
             Object time = data.get("DataTime");
             Object ver = data.get("ver");
-            if (StringUtils.isEmpty(ver) || StringUtils.isEmpty(time) || StringUtils.isEmpty(mac)) {
+            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
                 log.warn("some properties is null, param{}", msg);
-                ack.acknowledge();
                 return;
             }
+            //������������
+            data.remove("time");
+            data.remove("entryTime");
+            data.remove("ver");
+
             //������������
             data = deviceService.adjustDeviceData(data);
             //������redis
             redisTemplate.opsForHash().put(RedisConstants.DATA_SECOND, mac, data);
             //���������������������������
             deviceService.judgeDeviceState(data);
+        } catch (Exception e) {
+            log.error("param{}" + msg);
+        }
+    }
+
+    //���������������������
+    @KafkaListener(topics = KafkaConstants.TOPIC_SECOND_SPECIAL, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory")
+    public void listenSecondSpecial(ConsumerRecord<String, String> record, Acknowledgment ack) {
+        String msg = record.value();
+        try {
+            Map<String, Object> data = JSON.parseObject(msg, Map.class);
+            Object mac = data.get("mac");
+            Object time = data.get("DataTime");
+            Object ver = data.get("ver");
+            if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) {
+                log.warn("some properties is null, param{}", msg);
+                ack.acknowledge();
+                return;
+            }
+
+            //������������
+            data.remove("time");
+            data.remove("entryTime");
+            data.remove("ver");
+
+            historySecondSpecialService.insertHistorySecond(data);
             ack.acknowledge();
         } catch (Exception e) {
             log.error("param{}" + msg);
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java
new file mode 100644
index 0000000..ebd2af7
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistorySecondSpecialMapper.java
@@ -0,0 +1,16 @@
+package com.moral.api.mapper;
+
+import com.moral.api.entity.HistorySecondSpecial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * ������������������������ Mapper ������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+public interface HistorySecondSpecialMapper extends BaseMapper<HistorySecondSpecial> {
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
index 82bc9e6..0936cd6 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
@@ -1,14 +1,14 @@
 package com.moral.api.mapper;
 
+import com.moral.api.entity.Organization;
 import com.moral.api.entity.SpecialDevice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
- *  Mapper ������
+ * Mapper ������
  * </p>
  *
  * @author moral
@@ -18,4 +18,6 @@
 
     List<SpecialDevice> querySpecialDeviceUnitAlarmInfo();
 
+    Organization selectOrgByMac(String mac);
+
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/DeviceService.java b/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
index 0d3fa02..e22ba74 100644
--- a/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/DeviceService.java
@@ -58,6 +58,9 @@
     //������������������
     Map<String, Object> adjustDeviceData(Map<String, Object> deviceData);
 
+    //������������������������
+    Map<String, Object> adjustSpecialDeviceData(Map<String, Object> deviceData);
+
     //���������������������������
     void judgeDeviceState(Map<String, Object> data);
 
diff --git a/screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java b/screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java
new file mode 100644
index 0000000..97fb89c
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/HistorySecondSpecialService.java
@@ -0,0 +1,21 @@
+package com.moral.api.service;
+
+import java.util.Map;
+
+import com.moral.api.entity.HistorySecondSpecial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * ������������������������ ���������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+public interface HistorySecondSpecialService extends IService<HistorySecondSpecial> {
+
+    //���������insert
+    void insertHistorySecond(Map<String, Object> data);
+
+}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index c7916b7..9339dc2 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -84,6 +84,9 @@
     private VersionSensorUnitMapper versionSensorUnitMapper;
 
     @Autowired
+    private SpecialDeviceMapper specialDeviceMapper;
+
+    @Autowired
     private AdjustDataUtils adjustDataUtils;
 
     /*
@@ -177,7 +180,7 @@
             insertOrganizationUnitAlarm(newOrgId, newVersionId);
         }
         //���redis���������������������
-        delDeviceInfoFromRedis(mac);
+        delDeviceInfoFromRedis(oldDevice.getMac());
         Map<String, Object> deviceInfo = selectDeviceInfoById(deviceId);
         //������������������redis
         setDeviceInfoToRedis(mac, deviceInfo);
@@ -186,7 +189,7 @@
         //������������������
         HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
         StringBuilder content = new StringBuilder();
-        content.append("������������������").append(mac).append("���");
+        content.append("������������������" + oldDevice.getMac()).append("==>").append(mac).append("���");
         Field[] fields = Device.class.getDeclaredFields();
         for (Field field : fields) {
             if (field.getName().equals("id")) {
@@ -405,7 +408,7 @@
     @Override
     public Map<String, Object> getDeviceByMac(String mac) {
         Map<String, Object> deviceInfo = getDeviceInfoFromRedis(mac);
-        if (deviceInfo == null) {
+        if (ObjectUtils.isEmpty(deviceInfo)) {
             QueryWrapper<Device> queryWrapper = new QueryWrapper<>();
             queryWrapper.eq("mac", mac).eq("is_delete", Constants.NOT_DELETE);
             Device device = deviceMapper.selectOne(queryWrapper);
@@ -419,9 +422,9 @@
 
     @Override
     public Map<String, Object> adjustDeviceData(Map<String, Object> deviceData) {
-        String mac = deviceData.get("mac").toString();
+        String mac = deviceData.remove("mac").toString();
         //���redis������������������
-        Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + mac);
+        Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + "_" + mac);
         if (!ObjectUtils.isEmpty(adjustFormula)) {
             Map<String, Object> deviceInfo = getDeviceByMac(mac);
             Map<String, Object> monitorPoint = (Map<String, Object>) deviceInfo.get("monitorPoint");
@@ -434,6 +437,26 @@
             }
             return adjustDataUtils.adjust(deviceData, adjustFormula, ObjectUtils.isEmpty(aqiMap) ? null : aqiMap);
         }
+        deviceData.remove("DataTime");
+        return deviceData;
+    }
+
+    @Override
+    public Map<String, Object> adjustSpecialDeviceData(Map<String, Object> deviceData) {
+        String mac = deviceData.remove("mac").toString();
+        //���redis������������������
+        Map<String, Object> adjustFormula = redisTemplate.opsForHash().entries(RedisConstants.ADJUST + "_" + mac);
+        if (!ObjectUtils.isEmpty(adjustFormula)) {
+            Organization organization = specialDeviceMapper.selectOrgByMac(mac);
+            Integer areaCode = organization.getAreaCode();
+            Integer cityCode = organization.getCityCode();
+            Map<String, Object> aqiMap = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, areaCode);
+            if (ObjectUtils.isEmpty(aqiMap)) {
+                aqiMap = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, cityCode);
+            }
+            return adjustDataUtils.adjust(deviceData, adjustFormula, ObjectUtils.isEmpty(aqiMap) ? null : aqiMap);
+        }
+        deviceData.remove("DataTime");
         return deviceData;
     }
 
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
index 34659ae..e555273 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -37,11 +37,12 @@
     @Override
     @Transactional
     public void insertHistoryHourly(Map<String, Object> data) {
+        Integer version = (Integer) data.remove("ver");
         Map<String, Object> dataAdjust = new HashMap<>(data);
         String mac = data.remove("mac").toString();
 
         Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
-        Integer version = (Integer) data.remove("ver");
+
         Map<String, Object> result = new HashMap<>();
         result.put("mac", mac);
         result.put("time", time);
@@ -53,9 +54,6 @@
 
         //������������
         dataAdjust = deviceService.adjustDeviceData(dataAdjust);
-        dataAdjust.remove("mac");
-        dataAdjust.remove("DataTime");
-        dataAdjust.remove("ver");
 
         HistoryHourly historyHourly = new HistoryHourly();
         historyHourly.setMac(mac);
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
index ccd2c8a..4481338 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistoryMinutelyServiceImpl.java
@@ -28,38 +28,28 @@
     @Transactional
     public void insertHistoryMinutely(Map<String, Object> data) {
         Map<String, Object> result = new HashMap<>();
+        Object ver = data.remove("ver");
+
         Map<String, Object> dataAdjust = new HashMap<>(data);
+
         Object mac = data.remove("mac");
+
         result.put("mac", mac);
-        result.put("version", data.remove("ver"));
+        result.put("version", ver);
+
         Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
         result.put("time", time);
         result.put("value", JSONObject.toJSONString(data));
         String timeUnits = DateUtils.dateToDateString(time, DateUtils.yyyyMM_EN);
-        result.put("timeUnits", tableSuffix(timeUnits, Constants.UN_ADJUST));
+        result.put("timeUnits", timeUnits + "_" + Constants.UN_ADJUST);
 
         //���������������������������
         historyMinutelyMapper.insertHistoryMinutely(result);
 
         //������������
         dataAdjust = deviceService.adjustDeviceData(dataAdjust);
-        dataAdjust.remove("mac");
-        dataAdjust.remove("DataTime");
-        dataAdjust.remove("ver");
         result.put("timeUnits", timeUnits);
         result.put("value", JSONObject.toJSONString(dataAdjust));
         historyMinutelyMapper.insertHistoryMinutely(result);
-
-
-    }
-
-    //���������
-    private String tableSuffix(String... keys) {
-        StringBuilder key = new StringBuilder(keys[0]);
-        for (int i = 1; i < keys.length; i++) {
-            key.append("_");
-            key.append(keys[i]);
-        }
-        return key.toString();
     }
 }
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java
new file mode 100644
index 0000000..47905d9
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/HistorySecondSpecialServiceImpl.java
@@ -0,0 +1,81 @@
+package com.moral.api.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.moral.api.entity.Device;
+import com.moral.api.entity.HistorySecondSpecial;
+import com.moral.api.entity.Sensor;
+import com.moral.api.entity.SpecialDevice;
+import com.moral.api.mapper.HistorySecondSpecialMapper;
+import com.moral.api.service.DeviceService;
+import com.moral.api.service.HistorySecondSpecialService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
+import com.moral.constant.RedisConstants;
+import com.moral.util.DateUtils;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * ������������������������ ���������������
+ * </p>
+ *
+ * @author moral
+ * @since 2021-08-12
+ */
+@Service
+public class HistorySecondSpecialServiceImpl extends ServiceImpl<HistorySecondSpecialMapper, HistorySecondSpecial> implements HistorySecondSpecialService {
+
+    @Autowired
+    private HistorySecondSpecialMapper historySecondSpecialMapper;
+
+    @Autowired
+    private DeviceService deviceService;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
+
+    @Override
+    public void insertHistorySecond(Map<String, Object> data) {
+        Date batchTime = DateUtils.getDate((String) data.remove(Constants.SENSOR_CODE_SPECIAL_BATCH), DateUtils.yyyyMMddHHmmss_EN);
+        Date time = DateUtils.getDate((String) data.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
+        String mac = data.get("mac").toString();
+
+        //������mac���redis���������������
+        SpecialDevice specialDevice = (SpecialDevice) redisTemplate.opsForHash().get(RedisConstants.SPECIAL_DEVICE_INFO, mac);
+        List<Sensor> sensors = specialDevice.getVersion().getSensors();
+        //������������
+        data = data.entrySet().stream()
+                .filter(m -> {
+                    boolean flag = false;
+                    String key = m.getKey();
+                    if (!"mac".equals(key) && !"DataTime".equals(key)) {
+                        for (Sensor sensor : sensors) {
+                            if (sensor.getCode().equals(key)) {
+                                flag = true;
+                                break;
+                            }
+                        }
+                        return flag;
+                    }
+                    return true;
+                }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+
+        //������������
+        data = deviceService.adjustSpecialDeviceData(data);
+
+        HistorySecondSpecial historySecondSpecial = new HistorySecondSpecial();
+        historySecondSpecial.setMac(mac);
+        historySecondSpecial.setTime(time);
+        historySecondSpecial.setValue(JSONObject.toJSONString(data));
+        historySecondSpecial.setBatch(batchTime);
+        historySecondSpecialMapper.insert(historySecondSpecial);
+    }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
index ed7bf99..86f21fc 100644
--- a/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java
@@ -21,17 +21,17 @@
 @Component
 public class AdjustDataUtils {
     /**
-     * @param deviceData ������������
+     * @param deviceData    ������������
      * @param adjustFormula ������������
-     * @param aqiMap ���������������������������������aqi������
+     * @param aqiMap        ���������������������������������aqi������
      * @return Map<String, Object> ���������������
-     * */
+     */
     public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) {
         try {
-            Date time = DateUtils.getDate((String) deviceData.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
+            Date time = DateUtils.getDate((String) deviceData.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
             long finalTime = DateUtils.dataToTimeStampTime(time, DateUtils.HH_mm_ss_EN).getTime();
             for (String key : deviceData.keySet()) {
-                if (!key.equals("mac") && !key.equals("time") && !key.equals("DataTime") && !key.equals("ver") && !key.contains("Flag")) {
+                if (!key.contains("Flag")) {
                     //���������
                     Object measuredValue = deviceData.get(key);
                     //������������������������
diff --git a/screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml b/screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml
new file mode 100644
index 0000000..059231b
--- /dev/null
+++ b/screen-manage/src/main/resources/mapper/HistorySecondSpecialMapper.xml
@@ -0,0 +1,14 @@
+<?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.HistorySecondSpecialMapper">
+
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.HistorySecondSpecial">
+        <result column="mac" property="mac"/>
+        <result column="time" property="time"/>
+        <result column="value" property="value"/>
+        <result column="organization_id" property="organizationId"/>
+        <result column="batch" property="batch"/>
+    </resultMap>
+
+</mapper>
\ No newline at end of file
diff --git a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
index 82d3e45..5bb04ba 100644
--- a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
+++ b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
@@ -63,4 +63,12 @@
         where
             d.`is_delete` = 0;
     </select>
+
+    <select id="selectOrgByMac" resultType="com.moral.api.entity.Organization">
+        SELECT area_code, city_code
+        FROM organization
+        WHERE organization_id =
+              (SELECT organization_id FROM special_device WHERE mac = #{mac})
+    </select>
+
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0