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<UpgradeRecord> values = ResourceCache.getUpgradeRecord();
|
Iterator<UpgradeRecord> it = values.iterator();
|
while (it.hasNext()) {
|
UpgradeRecord record = it.next();
|
long createTime = record.getCreateTime().getTime();
|
if (now - createTime > VALID_TIME) {
|
UpdateWrapper<UpgradeRecord> 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);
|
}
|
}
|
}
|
|
}
|