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