From bf8cb657cd550ce3061401bdf2842723d3c190a2 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Tue, 03 Aug 2021 14:39:21 +0800
Subject: [PATCH] 中间数据迁入正式表,kafka小时数据存入中间表,删除中间表数据

---
 screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java             |    6 +
 screen-job/src/main/resources/mapper/DeviceMapper.xml                                |   46 +++++-----
 screen-manage/src/main/java/com/moral/api/util/AdjustDataUtils.java                  |    7 +
 screen-manage/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java |   23 +++--
 screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml                         |   19 ++++
 screen-job/src/main/resources/mapper/HistoryAqiMapper.xml                            |   12 +-
 screen-manage/src/main/java/com/moral/api/controller/DeviceController.java           |    3 
 screen-job/src/main/java/com/moral/api/task/DeleteHistoryHourlyTransitionTask.java   |   29 +++++++
 screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml                      |   11 ++
 screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java            |    8 ++
 screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java               |    7 +
 screen-job/src/main/java/com/moral/api/task/HistoryTableInsertTask.java              |   17 ++++
 screen-common/src/main/java/com/moral/constant/Constants.java                        |    5 -
 screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java    |   18 ++++
 14 files changed, 167 insertions(+), 44 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 00a8cc3..246e402 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";
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
index 9b3c8d7..79d40fc 100644
--- a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
@@ -1,7 +1,6 @@
 package com.moral.api.mapper;
 
 import java.util.List;
-import java.util.Map;
 
 import com.moral.api.entity.HistoryHourly;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -16,4 +15,10 @@
  */
 public interface HistoryHourlyMapper extends BaseMapper<HistoryHourly> {
 
+    void insertHistoryHourly(List<HistoryHourly> list);
+
+    List<HistoryHourly> getHistoryHourlyTransition();
+
+    void deleteHistoryHourlyTransition();
+
 }
diff --git a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
index b8b345c..fa49b22 100644
--- a/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
+++ b/screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
@@ -13,4 +13,10 @@
  */
 public interface HistoryHourlyService extends IService<HistoryHourly> {
 
+    //������������������������������������
+    void insertHistoryHourly();
+
+    //���������������������������
+    void deleteHistoryHourlyTransition();
+
 }
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 68af169..d22e534 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
@@ -4,7 +4,11 @@
 import com.moral.api.mapper.HistoryHourlyMapper;
 import com.moral.api.service.HistoryHourlyService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +21,18 @@
 @Service
 public class HistoryHourlyServiceImpl extends ServiceImpl<HistoryHourlyMapper, HistoryHourly> implements HistoryHourlyService {
 
+    @Autowired
+    private HistoryHourlyMapper historyHourlyMapper;
+
+    @Override
+    public void insertHistoryHourly() {
+        //���������������������������
+        List<HistoryHourly> list = historyHourlyMapper.getHistoryHourlyTransition();
+        historyHourlyMapper.insertHistoryHourly(list);
+    }
+
+    @Override
+    public void deleteHistoryHourlyTransition() {
+        historyHourlyMapper.deleteHistoryHourlyTransition();
+    }
 }
diff --git a/screen-job/src/main/java/com/moral/api/task/DeleteHistoryHourlyTransitionTask.java b/screen-job/src/main/java/com/moral/api/task/DeleteHistoryHourlyTransitionTask.java
new file mode 100644
index 0000000..312deb7
--- /dev/null
+++ b/screen-job/src/main/java/com/moral/api/task/DeleteHistoryHourlyTransitionTask.java
@@ -0,0 +1,29 @@
+package com.moral.api.task;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.moral.api.service.HistoryHourlyService;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.context.XxlJobHelper;
+import com.xxl.job.core.handler.annotation.XxlJob;
+
+@Component
+public class DeleteHistoryHourlyTransitionTask {
+
+    @Autowired
+    private HistoryHourlyService historyHourlyService;
+
+    //���������������������������
+    @XxlJob("deleteHourlyTransition")
+    public ReturnT insertHistoryFiveMinutely() {
+        try {
+            historyHourlyService.deleteHistoryHourlyTransition();
+        } catch (Exception e) {
+            XxlJobHelper.log(e.getMessage());
+            return ReturnT.FAIL;
+        }
+        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 8a272b3..5ef990c 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
@@ -5,6 +5,7 @@
 
 import com.moral.api.service.HistoryDailyService;
 import com.moral.api.service.HistoryFiveMinutelyService;
+import com.moral.api.service.HistoryHourlyService;
 import com.moral.api.service.HistoryMonthlyService;
 import com.moral.api.service.HistoryWeeklyService;
 import com.xxl.job.core.biz.model.ReturnT;
@@ -16,6 +17,9 @@
 
     @Autowired
     private HistoryFiveMinutelyService historyFiveMinutelyService;
+
+    @Autowired
+    private HistoryHourlyService historyHourlyService;
 
     @Autowired
     private HistoryDailyService historyDailyService;
@@ -38,6 +42,19 @@
         return ReturnT.SUCCESS;
     }
 
+    //���������������������������������������
+    @XxlJob("insertHistoryHourly")
+    public ReturnT insertHistoryHourly() {
+        try {
+            historyHourlyService.insertHistoryHourly();
+        } catch (Exception e) {
+            XxlJobHelper.log(e.getMessage());
+            return ReturnT.FAIL;
+        }
+        return ReturnT.SUCCESS;
+    }
+
+
     //���������������
     @XxlJob("insertHistoryDaily")
     public ReturnT insertHistoryDaily() {
diff --git a/screen-job/src/main/resources/mapper/DeviceMapper.xml b/screen-job/src/main/resources/mapper/DeviceMapper.xml
index 493dc7b..7831eb5 100644
--- a/screen-job/src/main/resources/mapper/DeviceMapper.xml
+++ b/screen-job/src/main/resources/mapper/DeviceMapper.xml
@@ -2,28 +2,28 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.moral.api.mapper.DeviceMapper">
 
-        <!-- ������������������������ -->
-        <resultMap id="BaseResultMap" type="com.moral.api.entity.Device">
-                    <id column="id" property="id" />
-                    <result column="name" property="name" />
-                    <result column="mac" property="mac" />
-                    <result column="address" property="address" />
-                    <result column="longitude" property="longitude" />
-                    <result column="latitude" property="latitude" />
-                    <result column="state" property="state" />
-                    <result column="operate_ids" property="operateIds" />
-                    <result column="monitor_point_id" property="monitorPointId" />
-                    <result column="organization_id" property="organizationId" />
-                    <result column="device_version_id" property="deviceVersionId" />
-                    <result column="profession" property="profession" />
-                    <result column="tech" property="tech" />
-                    <result column="detector" property="detector" />
-                    <result column="purchaser" property="purchaser" />
-                    <result column="create_time" property="createTime" />
-                    <result column="update_time" property="updateTime" />
-                    <result column="install_time" property="installTime" />
-                    <result column="is_delete" property="isDelete" />
-                    <result column="extend" property="extend" />
-        </resultMap>
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.Device">
+        <id column="id" property="id"/>
+        <result column="name" property="name"/>
+        <result column="mac" property="mac"/>
+        <result column="address" property="address"/>
+        <result column="longitude" property="longitude"/>
+        <result column="latitude" property="latitude"/>
+        <result column="state" property="state"/>
+        <result column="operate_ids" property="operateIds"/>
+        <result column="monitor_point_id" property="monitorPointId"/>
+        <result column="organization_id" property="organizationId"/>
+        <result column="device_version_id" property="deviceVersionId"/>
+        <result column="profession" property="profession"/>
+        <result column="tech" property="tech"/>
+        <result column="detector" property="detector"/>
+        <result column="purchaser" property="purchaser"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+        <result column="install_time" property="installTime"/>
+        <result column="is_delete" property="isDelete"/>
+        <result column="extend" property="extend"/>
+    </resultMap>
 
 </mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml b/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml
index 24658a1..989a8f5 100644
--- a/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml
+++ b/screen-job/src/main/resources/mapper/HistoryAqiMapper.xml
@@ -2,11 +2,11 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.moral.api.mapper.HistoryAqiMapper">
 
-        <!-- ������������������������ -->
-        <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryAqi">
-                    <result column="city_code" property="cityCode" />
-                    <result column="time" property="time" />
-                    <result column="value" property="value" />
-        </resultMap>
+    <!-- ������������������������ -->
+    <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryAqi">
+        <result column="city_code" property="cityCode"/>
+        <result column="time" property="time"/>
+        <result column="value" property="value"/>
+    </resultMap>
 
 </mapper>
\ No newline at end of file
diff --git a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml
index 90af3f8..f80edaf 100644
--- a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -10,4 +10,23 @@
         <result column="version" property="version"/>
     </resultMap>
 
+    <insert id="insertHistoryHourly">
+        INSERT INTO history_hourly VALUES
+        <foreach collection="list" item="item" separator=",">
+            (#{item.mac}, #{item.time}, #{item.value}, #{item.version})
+        </foreach>
+    </insert>
+
+    <select id="getHistoryHourlyTransition" resultType="com.moral.api.entity.HistoryHourly">
+        SELECT mac,
+        `time`,
+        `value`,
+        `version`
+        FROM history_hourly_transition
+        WHERE create_time = update_time
+    </select>
+
+    <delete id="deleteHistoryHourlyTransition">
+        DELETE FROM history_hourly_transition
+    </delete>
 </mapper>
\ No newline at end of file
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 bb495c8..a373700 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
@@ -108,6 +108,9 @@
             @ApiImplicitParam(name = "token", value = "token", required = true, paramType = "header", dataType = "String"),
             @ApiImplicitParam(name = "name", value = "������������������������", required = false, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "mac", value = "mac������������", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "organizationId", value = "������������������", required = false, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "monitorPointId", value = "������id", required = false, paramType = "query", dataType = "String")
+
     })
     @RequestMapping(value = "select", method = RequestMethod.GET)
     public ResultMessage select(HttpServletRequest request) {
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
index 46898e3..793721b 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
@@ -1,9 +1,12 @@
 package com.moral.api.mapper;
 
+import org.apache.ibatis.annotations.Param;
+
 import java.util.Map;
 
 import com.moral.api.entity.HistoryHourly;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
 
 /**
  * <p>
@@ -17,4 +20,9 @@
 
     void insertHistoryHourlyUnAdjust(Map<String, Object> params);
 
+    int getCountByMacAndTime(@Param("mac") String mac, @Param("time") String time);
+
+    void insertHistoryHourlyTransition(Map<String, Object> params);
+
+    void updateHistoryTransition(@Param("mac") String mac, @Param("time") String time);
 }
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 f21db4c..ba88b76 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
@@ -39,10 +39,10 @@
     public void insertHistoryHourly(Map<String, Object> data) {
         Map<String, Object> dataAdjust = new HashMap<>(data);
         String mac = data.remove("mac").toString();
-        Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
 
+        Date time = DateUtils.getDate((String) data.remove("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
         Integer version = (Integer) data.remove("ver");
-        Map<String, Object> result = new HashMap<>(data);
+        Map<String, Object> result = new HashMap<>();
         result.put("mac", mac);
         result.put("time", time);
         result.put("version", version);
@@ -56,11 +56,18 @@
         dataAdjust.remove("mac");
         dataAdjust.remove("DataTime");
         dataAdjust.remove("ver");
-        HistoryHourly historyHourly = new HistoryHourly();
-        historyHourly.setMac(mac);
-        historyHourly.setTime(time);
-        historyHourly.setVersion(version);
-        historyHourly.setValue(JSONObject.toJSONString(dataAdjust));
-        historyHourlyMapper.insert(historyHourly);
+
+        int count = historyHourlyMapper.getCountByMacAndTime(mac, DateUtils.dateToDateString(time));
+
+        //���������������������������mac,���������������������������������������������������
+        if (count == 0) {
+            //������������������������������������������
+            result.put("value", JSONObject.toJSONString(dataAdjust));
+            //������
+            historyHourlyMapper.insertHistoryHourlyTransition(result);
+        } else {
+            //������
+            historyHourlyMapper.updateHistoryTransition(mac, DateUtils.dateToDateString(time));
+        }
     }
 }
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 fe4e63a..ed7bf99 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
@@ -20,7 +20,12 @@
 @Slf4j
 @Component
 public class AdjustDataUtils {
-    //���������������
+    /**
+     * @param deviceData ������������
+     * @param adjustFormula ������������
+     * @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);
diff --git a/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml
index a2dde7f..104b6bf 100644
--- a/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml
+++ b/screen-manage/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -14,4 +14,15 @@
         INSERT INTO history_hourly_${timeUnits} VALUES (#{mac}, #{time}, #{value}, #{version})
     </insert>
 
+    <select id="getCountByMacAndTime" resultType="java.lang.Integer">
+        SELECT count(1) FROM history_hourly_transition WHERE mac = #{mac} AND `time` = #{time}
+    </select>
+
+    <insert id="insertHistoryHourlyTransition">
+        INSERT INTO history_hourly_transition (mac, `time`, `value`, version) VALUES (#{mac}, #{time}, #{value}, #{version})
+    </insert>
+
+    <update id="updateHistoryTransition">
+        UPDATE history_hourly_transition SET update_time = now() WHERE mac = #{mac} AND `time` = {time}
+    </update>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0