|
@@ -39,11 +39,13 @@ public abstract class CalculateTaskTemplate {
|
|
protected void createSyncTask(CalculateParams calculateParams) throws IOException {
|
|
protected void createSyncTask(CalculateParams calculateParams) throws IOException {
|
|
log.info("createSyncTask come in");
|
|
log.info("createSyncTask come in");
|
|
TBSyncTaskService tbSyncTaskService = SpringContextHolder.getBean(TBSyncTaskService.class);
|
|
TBSyncTaskService tbSyncTaskService = SpringContextHolder.getBean(TBSyncTaskService.class);
|
|
|
|
+ String source = Base64Util.encode(ShaUtils.sha1(calculateParams.getExamId() + calculateParams.getCourseCode().toString()));
|
|
QueryWrapper<TBSyncTask> tbSyncTaskQueryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<TBSyncTask> tbSyncTaskQueryWrapper = new QueryWrapper<>();
|
|
- tbSyncTaskQueryWrapper.lambda().eq(TBSyncTask::getThirdRelateId, calculateParams.getExamId());
|
|
|
|
|
|
+ tbSyncTaskQueryWrapper.lambda().eq(TBSyncTask::getThirdRelateId, calculateParams.getExamId())
|
|
|
|
+ .eq(TBSyncTask::getSource, source);
|
|
TBSyncTask tbSyncTask = tbSyncTaskService.getOne(tbSyncTaskQueryWrapper);
|
|
TBSyncTask tbSyncTask = tbSyncTaskService.getOne(tbSyncTaskQueryWrapper);
|
|
if (Objects.isNull(tbSyncTask)) {
|
|
if (Objects.isNull(tbSyncTask)) {
|
|
- tbSyncTask = new TBSyncTask(calculateParams.getSchoolId(), calculateParams.getExamId());
|
|
|
|
|
|
+ tbSyncTask = new TBSyncTask(calculateParams.getSchoolId(), calculateParams.getExamId(), source);
|
|
tbSyncTaskService.save(tbSyncTask);
|
|
tbSyncTaskService.save(tbSyncTask);
|
|
}
|
|
}
|
|
calculateParams.setTbSyncTask(tbSyncTask);
|
|
calculateParams.setTbSyncTask(tbSyncTask);
|
|
@@ -141,7 +143,13 @@ public abstract class CalculateTaskTemplate {
|
|
*/
|
|
*/
|
|
public void start(CalculateParams calculateParams) throws IOException {
|
|
public void start(CalculateParams calculateParams) throws IOException {
|
|
RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
|
|
RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
|
|
- boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + calculateParams.toString(), SystemConstant.REDIS_LOCK_CALCULATE_TIME_OUT);
|
|
|
|
|
|
+ String source = null;
|
|
|
|
+ if (Objects.nonNull(calculateParams.getTbSyncTask())) {
|
|
|
|
+ source = calculateParams.getTbSyncTask().getSource();
|
|
|
|
+ } else {
|
|
|
|
+ source = Base64Util.encode(ShaUtils.sha1(calculateParams.getExamId() + calculateParams.getCourseCode().toString()));
|
|
|
|
+ }
|
|
|
|
+ boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + source, SystemConstant.REDIS_LOCK_CALCULATE_TIME_OUT);
|
|
if (!lock) {
|
|
if (!lock) {
|
|
throw ExceptionResultEnum.ERROR.exception("正在计算中,请稍候再试!");
|
|
throw ExceptionResultEnum.ERROR.exception("正在计算中,请稍候再试!");
|
|
}
|
|
}
|
|
@@ -162,7 +170,7 @@ public abstract class CalculateTaskTemplate {
|
|
ResultUtil.error(e.getMessage());
|
|
ResultUtil.error(e.getMessage());
|
|
}
|
|
}
|
|
} finally {
|
|
} finally {
|
|
- redisUtil.releaseLock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + calculateParams.toString());
|
|
|
|
|
|
+ redisUtil.releaseLock(SystemConstant.REDIS_LOCK_CALCULATE_PREFIX + source);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|