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 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
|
@Autowired
|
||||||
private AtuPlanConfig atuPlanConfig;
|
private AtuPlanConfig atuPlanConfig;
|
||||||
|
|
||||||
|
@ -165,6 +167,37 @@ public class PlanBatchTaskDataUpdateJob {
|
||||||
RedisConstant.CLUSTER_KEY_SUFFIX;
|
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();
|
AtuPlanTask taskQ = new AtuPlanTask();
|
||||||
taskQ.setBatchId(batchId);
|
taskQ.setBatchId(batchId);
|
||||||
List<ScriptStatusStatistic> resultList = planTaskService.countTaskStatus(taskQ);
|
List<ScriptStatusStatistic> resultList = planTaskService.countTaskStatus(taskQ);
|
||||||
|
@ -192,8 +225,6 @@ public class PlanBatchTaskDataUpdateJob {
|
||||||
|
|
||||||
if (waitCount > 0 || ingCount > 0) { // 批次还没有完成
|
if (waitCount > 0 || ingCount > 0) { // 批次还没有完成
|
||||||
// 检查批次的开始时间
|
// 检查批次的开始时间
|
||||||
AtuPlanBatch batch = this.planBatchService.findByPrimaryKey(batchId);
|
|
||||||
if (batch != null) {
|
|
||||||
Date createdTime = batch.getCreatedTime();
|
Date createdTime = batch.getCreatedTime();
|
||||||
if (createdTime != null) { // 有创建时间,那么比较开始时间与现在的时间差
|
if (createdTime != null) { // 有创建时间,那么比较开始时间与现在的时间差
|
||||||
LocalDateTime createDateTime = createdTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
LocalDateTime createDateTime = createdTime.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||||
|
@ -218,11 +249,6 @@ public class PlanBatchTaskDataUpdateJob {
|
||||||
logger.debug("批次[{}]没有创建时间", batch.getId());
|
logger.debug("批次[{}]没有创建时间", batch.getId());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else { // 没有对应批次数据,删除缓存数据
|
|
||||||
logger.debug("没有对应的批次信息[{}],删除缓存数据", batchId);
|
|
||||||
redisTemplate.delete(key);
|
|
||||||
return; // 退出这个批次统计
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 批次已完成
|
// 批次已完成
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue