parent
58c743a889
commit
c9fac180e6
|
@ -121,6 +121,8 @@ public class PlanBatchTaskDataUpdateJob {
|
|||
|
||||
private final static String LOCK_KEY_BATCH_SUM = "LOCK:PLAN:BATCH-SUM-DATA-UPDATE-METHOD";
|
||||
|
||||
private final static String BATCH_IS_NULL_COUNT_HASH = "PLAN:BATCH:NULL-COUNT-HASH";
|
||||
|
||||
@Autowired
|
||||
private AtuPlanConfig atuPlanConfig;
|
||||
|
||||
|
@ -165,6 +167,37 @@ public class PlanBatchTaskDataUpdateJob {
|
|||
RedisConstant.CLUSTER_KEY_SUFFIX;
|
||||
|
||||
// 通过数据库进行统计,减少统计数据出错的原因
|
||||
AtuPlanBatch batch = this.planBatchService.findByPrimaryKey(batchId);
|
||||
if (batch == null) {
|
||||
logger.info("批次【{}】信息目前不存在,再等待下一次查询...", batchId);
|
||||
Boolean existFlag = redisTemplate.opsForHash().hasKey(BATCH_IS_NULL_COUNT_HASH, batchId);
|
||||
if (existFlag) {
|
||||
Object nullCount = redisTemplate.opsForHash().get(BATCH_IS_NULL_COUNT_HASH, batchId);
|
||||
if (nullCount != null && NumberUtil.isNumber(nullCount.toString())) {
|
||||
int i = Integer.parseInt(nullCount.toString());
|
||||
if (i < 100) { // 统计100次后依然没有批次信息,批次不存在
|
||||
redisTemplate.opsForHash().put(BATCH_IS_NULL_COUNT_HASH, batchId, i + 1);
|
||||
} else {
|
||||
// 没有对应批次数据,删除缓存数据
|
||||
logger.debug("没有对应的批次信息[{}],删除缓存数据", batchId);
|
||||
redisTemplate.delete(key);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
redisTemplate.opsForHash().put(BATCH_IS_NULL_COUNT_HASH, batchId, 1);
|
||||
}
|
||||
return; // 退出这个批次统计
|
||||
}
|
||||
// 批次信息存在
|
||||
AtuPlanTask totalQ = new AtuPlanTask();
|
||||
totalQ.setBatchId(batchId);
|
||||
long currentTaskTotal = planTaskService.count(totalQ);
|
||||
// 判断批次任务是否已经全部生成
|
||||
if (batch.getTaskTotal() > currentTaskTotal) {
|
||||
logger.info("批次[{}]正在生成任务中,结束统计...", batchId);
|
||||
return;
|
||||
}
|
||||
// 以脚本维度统计批次下各脚本的执行情况
|
||||
AtuPlanTask taskQ = new AtuPlanTask();
|
||||
taskQ.setBatchId(batchId);
|
||||
List<ScriptStatusStatistic> resultList = planTaskService.countTaskStatus(taskQ);
|
||||
|
@ -192,8 +225,6 @@ public class PlanBatchTaskDataUpdateJob {
|
|||
|
||||
if (waitCount > 0 || ingCount > 0) { // 批次还没有完成
|
||||
// 检查批次的开始时间
|
||||
AtuPlanBatch batch = this.planBatchService.findByPrimaryKey(batchId);
|
||||
if (batch != null) {
|
||||
Date createdTime = batch.getCreatedTime();
|
||||
if (createdTime != null) { // 有创建时间,那么比较开始时间与现在的时间差
|
||||
LocalDateTime createDateTime = createdTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
|
@ -218,11 +249,6 @@ public class PlanBatchTaskDataUpdateJob {
|
|||
logger.debug("批次[{}]没有创建时间", batch.getId());
|
||||
return;
|
||||
}
|
||||
} else { // 没有对应批次数据,删除缓存数据
|
||||
logger.debug("没有对应的批次信息[{}],删除缓存数据", batchId);
|
||||
redisTemplate.delete(key);
|
||||
return; // 退出这个批次统计
|
||||
}
|
||||
}
|
||||
// 批次已完成
|
||||
|
||||
|
|
Loading…
Reference in New Issue