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);//更新 
 | 
        } 
 | 
    } 
 | 
  
 | 
} 
 |