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=",">