package com.fdkankan.project.tieta.schedule; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fdkankan.project.tieta.constant.Constant; import com.fdkankan.project.tieta.dto.ScenePushDTO; import com.fdkankan.project.tieta.entity.FullphotoFileindex; import com.fdkankan.project.tieta.entity.FullphotoUprecord; import com.fdkankan.project.tieta.service.FullphotoFileindexService; import com.fdkankan.project.tieta.service.FullphotoUprecordService; import com.fdkankan.project.tieta.service.IConvertService; import com.fdkankan.redis.util.RedisClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.Map; @Component public class Job { private static final String startTime = "2024-09-10 00:00:00"; @Resource private RedisClient redisClient; @Autowired private FullphotoUprecordService fullphotoUprecordService; @Autowired private IConvertService convertService; @Autowired private FullphotoFileindexService fullphotoFileindexService; @Scheduled(initialDelay = 2*10*1000, fixedDelay = 10*60*1000) public void push(){ // Map lockMap = redisClient.lockLeaseTime(Constant.REDIS_LOCK_SCENE_CONVERT, 30 * 60 * 1000); // boolean lock = (Boolean) lockMap.get("lock"); // if(!lock){ // return; // } // String uniqueFlag = (String) lockMap.get("uniqueFlag"); // try { String startTimeStr = redisClient.get(Constant.REDIS_SCENE_CONVERT_STARTTIME); if(StrUtil.isEmpty(startTimeStr)){ startTimeStr = "2024-09-01 00:00:00"; redisClient.add(Constant.REDIS_SCENE_CONVERT_STARTTIME, startTimeStr); } DateTime start = DateUtil.parse(startTimeStr, "yyyy-MM-dd HH:mm:ss"); List list = fullphotoUprecordService.list(new LambdaQueryWrapper().eq(FullphotoUprecord::getStatus, 1).gt(FullphotoUprecord::getUpTime, start)); if(CollUtil.isEmpty(list)){ return; } Date maxTime = start; for (FullphotoUprecord item : list) { //判断是否有obj,有obj才推送 List objList = fullphotoFileindexService.list(new LambdaQueryWrapper().eq(FullphotoFileindex::getUploadId, item.getUploadId()).eq(FullphotoFileindex::getFileType, "11").eq(FullphotoFileindex::getStatus, 1)); if(CollUtil.isEmpty(objList)){ continue; } convertService.scenePush(ScenePushDTO.builder().stationCode(item.getStationCode()).entityId(item.getEntityId()).build(), null); if(maxTime.before(item.getUpTime())){ maxTime = item.getUpTime(); redisClient.add(Constant.REDIS_SCENE_CONVERT_STARTTIME, DateUtil.format(maxTime, "yyyy-MM-dd HH:mm:ss")); } } // }finally { // if(lock){ // redisClient.unLock(Constant.REDIS_LOCK_SCENE_CONVERT, uniqueFlag); // } // } } }