jinpengyong
2021-12-22 b085a13260ad46142af47cd58ac641c69a354cb1
包含最大值,最小值,平均值的小时表创建任务
5 files modified
41 ■■■■■ changed files
screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java 2 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java 3 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java 14 ●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/task/CreateTableTask.java 13 ●●●●● patch | view | raw | blame | history
screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml 9 ●●●●● patch | view | raw | blame | history
screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
@@ -18,6 +18,8 @@
    void createTable(String timeUnits);
    void createTableComplete(String timeUnits);
    void insertHistoryHourly(List<Map<String, Object>> list);
    Integer selectCountByTime(Map<String, Object> params);
screen-job/src/main/java/com/moral/api/service/HistoryHourlyService.java
@@ -19,6 +19,9 @@
    //小时表创建
    void createTable(String timeUnits);
    //完整小时表创建
    void createTableComplete(String timeUnits);
    //缺失小时数据补充
    void insertHistoryHourly();
screen-job/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -16,6 +16,7 @@
import com.moral.util.DateUtils;
import com.moral.util.MybatisPLUSUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
@@ -58,6 +59,11 @@
    @Override
    public void createTable(String timeUnits) {
        historyHourlyMapper.createTable(timeUnits);
    }
    @Override
    public void createTableComplete(String timeUnits) {
        historyHourlyMapper.createTableComplete(timeUnits);
    }
    @Override
@@ -236,10 +242,10 @@
     * @Date: 2021/9/23
     */
    @Override
    public List<HistoryHourly> getValueByMacAndTime(String mac, Date startDate, Date endDate){
    public List<HistoryHourly> getValueByMacAndTime(String mac, Date startDate, Date endDate) {
        QueryWrapper<HistoryHourly> wrapper = new QueryWrapper<>();
        wrapper.eq("mac",mac);
        wrapper.between("time",startDate,endDate);
        wrapper.eq("mac", mac);
        wrapper.between("time", startDate, endDate);
        List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH);
        List<HistoryHourly> datas = multiTableQuery(wrapper, tableNames);
        return datas;
@@ -252,7 +258,7 @@
     * @Author: 陈凯裕
     * @Date: 2021/9/23
     */
    private List<HistoryHourly> multiTableQuery(QueryWrapper<HistoryHourly> wrapper,List<String> tableNames){
    private List<HistoryHourly> multiTableQuery(QueryWrapper<HistoryHourly> wrapper, List<String> tableNames) {
        List<HistoryHourly> result = new ArrayList<>();
        for (String tableName : tableNames) {
            MybatisPlusConfig.tableName.set(tableName);
screen-job/src/main/java/com/moral/api/task/CreateTableTask.java
@@ -69,4 +69,17 @@
        }
        return ReturnT.SUCCESS;
    }
    //包含最大值,最小值,平均值的小时表创建任务
    @XxlJob("createHistoryHourlyCompleteTable")
    public ReturnT createHistoryHourlyCompleteTable(){
        String timeUnits = DateUtils.getDateStringOfMon(1, DateUtils.yyyyMM_EN);
        try {
            historyHourlyService.createTableComplete(timeUnits);
        } catch (Exception e) {
            XxlJobHelper.log(e.getMessage());
            return new ReturnT(ReturnT.FAIL_CODE, e.getMessage());
        }
        return ReturnT.SUCCESS;
    }
}
screen-job/src/main/resources/mapper/HistoryHourlyMapper.xml
@@ -12,6 +12,15 @@
            ) ENGINE=INNODB DEFAULT CHARSET=utf8 COMMENT '小时数据表'
    </update>
    <update id="createTableComplete" parameterType="String">
        CREATE TABLE IF NOT EXISTS `history_hourly_complete_${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_${timeUnits} VALUES
        <foreach collection="list" item="item" separator=",">