package com.tievd.jyz.handler.timer; import cn.hutool.core.date.SystemClock; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.tievd.jyz.cache.ResourceCache; import com.tievd.jyz.constants.SystemConstant; import com.tievd.jyz.entity.UpgradeRecord; import com.tievd.jyz.mapper.UpgradeRecordMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Collection; import java.util.Date; import java.util.Iterator; @Component public class UpgradeRecordTimer { public static final long VALID_TIME = 5 * 60 * 1000; @Autowired private UpgradeRecordMapper upgradeRecordMapper; @Scheduled(cron = "0 0/3 * * * ?") public void checkValid() { long now = SystemClock.now(); Collection values = ResourceCache.getUpgradeRecord(); Iterator it = values.iterator(); while (it.hasNext()) { UpgradeRecord record = it.next(); long createTime = record.getCreateTime().getTime(); if (now - createTime > VALID_TIME) { UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().set(UpgradeRecord::getUpdateTime, new Date()) .set(UpgradeRecord::getStatus, SystemConstant.ISSUE_FAILURE) .set(UpgradeRecord::getIssueFailReason, "超时") .eq(UpgradeRecord::getUpgradeId, record.getUpgradeId()) .eq(UpgradeRecord::getDeviceSn, record.getDeviceSn()) .eq(UpgradeRecord::getIssueTime, record.getIssueTime()); upgradeRecordMapper.update(record, updateWrapper); ResourceCache.removeUpgradeRecord(record); } } } }