|
|
@ -8,6 +8,12 @@ import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import javax.persistence.EntityManager;
|
|
|
|
|
|
|
|
import javax.persistence.PersistenceContext;
|
|
|
|
|
|
|
|
import javax.persistence.Query;
|
|
|
|
|
|
|
|
import java.math.BigInteger;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @author Enzo
|
|
|
|
* @author Enzo
|
|
|
@ -35,5 +41,45 @@ public class UpdateImeiTask {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@PersistenceContext
|
|
|
|
|
|
|
|
private EntityManager entityManager;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 凌晨五点 查询定时任务 删除记录
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
@Scheduled(cron = "0 0 5 * * ?")
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
|
|
|
public void deleteDataTask() {
|
|
|
|
|
|
|
|
//数据中需要删除的数据量
|
|
|
|
|
|
|
|
long expiredCount;
|
|
|
|
|
|
|
|
// 已经删除数据量
|
|
|
|
|
|
|
|
long totalDeleted = 0L;
|
|
|
|
|
|
|
|
String deleteStr = "DELETE FROM tb_task_imei WHERE create_time <:DATE ";
|
|
|
|
|
|
|
|
// 时间偏移六个月
|
|
|
|
|
|
|
|
DateTime date = DateUtil.offsetMonth(DateUtil.date(), -DefaultNumberConstants.SIX_NUMBER);
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
|
|
|
Query deleteTagByQuery = entityManager.createNativeQuery(deleteStr.concat(" limit 50000"));
|
|
|
|
|
|
|
|
deleteTagByQuery.setParameter("DATE", date.toDateStr());
|
|
|
|
|
|
|
|
int executeUpdate = deleteTagByQuery.executeUpdate();
|
|
|
|
|
|
|
|
totalDeleted += executeUpdate;
|
|
|
|
|
|
|
|
expiredCount = queryCount(date);
|
|
|
|
|
|
|
|
} while (expiredCount > 0);
|
|
|
|
|
|
|
|
log.info("======== delete table size as [{}] ========", totalDeleted);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 查询数据
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param date
|
|
|
|
|
|
|
|
* @return
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private Long queryCount(DateTime date) {
|
|
|
|
|
|
|
|
String sql = "select count(1) FROM tb_task_imei where create_time < :date ";
|
|
|
|
|
|
|
|
Query selectQueryCount = entityManager.createNativeQuery(sql);
|
|
|
|
|
|
|
|
selectQueryCount.setParameter("date", date.toDateStr());
|
|
|
|
|
|
|
|
BigInteger bigInteger = (BigInteger) selectQueryCount.getSingleResult();
|
|
|
|
|
|
|
|
return bigInteger.longValue();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|