From b63db6141a9e29b469144be742c02d8c9d26af66 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Mon, 30 Aug 2021 11:40:40 +0800 Subject: [PATCH] 创建小时表定时任务 --- screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java | 12 ++++- screen-job/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 11 +++-- screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java | 10 ++++- screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 31 ++++++++++----- screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml | 29 +++++++++++--- screen-job/src/main/java/com/moral/api/task/CreateTableTask.java | 20 ++++++++++ 6 files changed, 87 insertions(+), 26 deletions(-) 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 7c12510..26ed4ca 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,9 +1,9 @@ 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; /** * <p> @@ -13,10 +13,16 @@ * @author moral * @since 2021-06-28 */ -public interface HistoryHourlyMapper extends BaseMapper<HistoryHourly> { +public interface HistoryHourlyMapper { + + void createTable(String timeUnits); void insertHistoryHourly(List<HistoryHourly> list); + Integer selectCountByTime(Map<String, Object> params); + + List<Map<String, Object>> selectDailyData(Map<String, Object> params); + } 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 9e847bd..2485f04 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 @@ -1,7 +1,7 @@ package com.moral.api.service; -import com.moral.api.entity.HistoryHourly; -import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; /** * <p> @@ -11,9 +11,15 @@ * @author moral * @since 2021-06-28 */ -public interface HistoryHourlyService extends IService<HistoryHourly> { +public interface HistoryHourlyService { + + //��������������� + void createTable(String timeUnits); //������������������������ void insertHistoryHourly(); + //��������������������������� + List<Map<String, Object>> selectDailyData(Map<String, Object> params); + } 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 10fa56c..a3d4154 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 @@ -3,7 +3,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.HistoryDaily; -import com.moral.api.entity.HistoryHourly; import com.moral.api.entity.Sensor; import com.moral.api.mapper.HistoryDailyMapper; import com.moral.api.service.HistoryDailyService; @@ -63,9 +62,13 @@ List<Sensor> sensors = sensorService.list(sensorQueryWrapper); //������������������������������ - QueryWrapper<HistoryHourly> historyHourlyQueryWrapper = new QueryWrapper<>(); - historyHourlyQueryWrapper.ge("time", DateUtils.dateToDateString(start)).le("time", DateUtils.dateToDateString(end)); - List<Map<String, Object>> dailyData = historyHourlyService.listMaps(historyHourlyQueryWrapper); + Map<String, Object> prop = new HashMap<>(); + String timeUnits = DateUtils.dateToDateString(start, DateUtils.yyyyMM_EN); + prop.put("timeUnits", timeUnits); + prop.put("start", DateUtils.dateToDateString(start)); + prop.put("end", DateUtils.dateToDateString(end)); + List<Map<String, Object>> dailyData = historyHourlyService.selectDailyData(prop); + if (dailyData.size() == 0) { return; } 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 a02a67f..8f5f0b5 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 @@ -7,7 +7,6 @@ import com.moral.api.mapper.HistoryHourlyMapper; import com.moral.api.mapper.HistoryMinutelyMapper; import com.moral.api.service.HistoryHourlyService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.service.SensorService; import com.moral.constant.Constants; import com.moral.constant.RedisConstants; @@ -39,7 +38,7 @@ * @since 2021-06-28 */ @Service -public class HistoryHourlyServiceImpl extends ServiceImpl<HistoryHourlyMapper, HistoryHourly> implements HistoryHourlyService { +public class HistoryHourlyServiceImpl implements HistoryHourlyService { @Autowired private HistoryHourlyMapper historyHourlyMapper; @@ -54,6 +53,11 @@ private SensorService sensorService; @Override + public void createTable(String timeUnits) { + historyHourlyMapper.createTable(timeUnits); + } + + @Override public void insertHistoryHourly() { //������������������yyyy-MM-dd HH:mm String format = DateUtils.yyyy_MM_dd_HH_EN; @@ -64,16 +68,18 @@ Date now = new Date(); String time = DateUtils.dateToDateString(now, format) + ":00:00"; - QueryWrapper<HistoryHourly> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("time", time); //������������������������������������������������macs������������������������������ - Integer count = historyHourlyMapper.selectCount(queryWrapper); - if (macs.size() > count) { + Map<String, Object> prop = new HashMap<>(); + prop.put("timeUnits", DateUtils.getDateStringOfMon(0, DateUtils.yyyyMM_EN)); + prop.put("time", time); + Integer count = historyHourlyMapper.selectCountByTime(prop); + + if (macs.size() <= count) { + return; + } else { macs.removeIf(mac -> { - queryWrapper.clear(); - queryWrapper.eq("time", time); - queryWrapper.eq("mac", mac); - Integer num = historyHourlyMapper.selectCount(queryWrapper); + prop.put("mac", mac); + Integer num = historyHourlyMapper.selectCountByTime(prop); return num != 0; }); } @@ -213,4 +219,9 @@ //��������������� historyHourlyMapper.insertHistoryHourly(insertData); } + + @Override + public List<Map<String, Object>> selectDailyData(Map<String, Object> params) { + return historyHourlyMapper.selectDailyData(params); + } } 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 c8f4795..3b1fab3 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 @@ -4,6 +4,7 @@ import org.springframework.stereotype.Component; import com.moral.api.service.HistoryFiveMinutelyService; +import com.moral.api.service.HistoryHourlyService; import com.moral.api.service.HistoryMinutelyService; import com.moral.constant.Constants; import com.moral.util.DateUtils; @@ -19,6 +20,9 @@ @Autowired private HistoryMinutelyService historyMinutelyService; + + @Autowired + private HistoryHourlyService historyHourlyService; //��������������������� @@ -49,4 +53,20 @@ } return ReturnT.SUCCESS; } + + //��������������������� + @XxlJob("createHistoryHourlyTable") + public ReturnT createHistoryHourlyTable() { + String timeUnits = DateUtils.getDateStringOfMon(1, DateUtils.yyyyMM_EN); + try { + //������������������ + historyHourlyService.createTable(timeUnits); + //������������������ + historyHourlyService.createTable(timeUnits + "_" + Constants.UN_ADJUST); + } catch (Exception e) { + XxlJobHelper.log(e.getMessage()); + return new ReturnT(ReturnT.FAIL_CODE, e.getMessage()); + } + return ReturnT.SUCCESS; + } } diff --git a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml index 9f9c679..bd1b0e3 100644 --- a/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -2,13 +2,14 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.moral.api.mapper.HistoryHourlyMapper"> - <!-- ������������������������ --> - <resultMap id="BaseResultMap" type="com.moral.api.entity.HistoryHourly"> - <result column="mac" property="mac"/> - <result column="time" property="time"/> - <result column="value" property="value"/> - <result column="version" property="version"/> - </resultMap> + <update id="createTable" parameterType="String"> + CREATE TABLE IF NOT EXISTS `history_hourly_${timeUnits}` ( + `mac` VARCHAR (20) DEFAULT NULL COMMENT '������mac', + `time` datetime DEFAULT NULL COMMENT '������������', + `value` json DEFAULT NULL COMMENT '������', + KEY `idx_mac_time` (`mac`,`time`) + ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '���������������' + </update> <insert id="insertHistoryHourly"> INSERT INTO history_hourly VALUES @@ -16,4 +17,18 @@ (#{item.mac}, #{item.time}, #{item.value}, #{item.version}) </foreach> </insert> + + <select id="selectCountByTime" resultType="java.lang.Integer"> + SELECT COUNT(1) FROM history_hourly_${timeUnits} WHERE `time` = #{time} + <if test="mac != null"> + AND mac = #{mac} + </if> + </select> + + <select id="selectDailyData" resultType="java.util.Map"> + SELECT mac, `value` + FROM history_hourly_${timeUnits} + WHERE `time` <![CDATA[>=]]> #{start} + AND `time` <![CDATA[<]]> #{end} + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0