package com.zy.asrs.task;
|
|
import com.alibaba.fastjson.JSON;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.zy.asrs.entity.BasMap;
|
import com.zy.asrs.service.BasMapService;
|
import com.zy.common.utils.RedisUtil;
|
import com.zy.core.enums.RedisKeyType;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.scheduling.annotation.Scheduled;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Date;
|
import java.util.List;
|
|
@Component
|
@Slf4j
|
public class RealtimeBasMapScheduler {
|
|
@Autowired
|
private RedisUtil redisUtil;
|
@Autowired
|
private BasMapService basMapService;
|
|
/**
|
* 每分钟从redis中更新地图数据到数据库中
|
*/
|
@Scheduled(cron = "1 * * * * ? ")
|
private void execute(){
|
List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true));
|
for (BasMap basMap : basMaps) {
|
Integer lev = basMap.getLev();
|
Object data = redisUtil.get(RedisKeyType.MAP.key + lev);
|
if (data == null) {
|
continue;
|
}
|
|
BasMap redisMap = JSON.parseObject(data.toString(), BasMap.class);
|
basMap.setLastData(basMap.getData());
|
basMap.setData(redisMap.getData());
|
basMap.setUpdateTime(new Date());
|
basMapService.updateById(basMap);//更新
|
}
|
}
|
|
}
|