fix:2.4.0

1、修复Job更新没有判断常驻任务字段resident
2、还原Job更新DateUtil改为Jdk Duration
This commit is contained in:
zhengweilin 2023-10-26 09:25:17 +08:00 committed by byteblogs168
parent a9a317b367
commit a5c4980464
2 changed files with 23 additions and 13 deletions

View File

@ -5,6 +5,7 @@ import com.aizuda.easy.retry.server.web.model.request.JobQueryVO;
import com.aizuda.easy.retry.server.web.model.request.JobRequestVO;
import com.aizuda.easy.retry.server.web.model.request.JobUpdateJobStatusRequestVO;
import com.aizuda.easy.retry.server.web.model.response.JobResponseVO;
import com.aizuda.easy.retry.template.datasource.persistence.po.Job;
import java.util.List;
@ -24,6 +25,8 @@ public interface JobService {
Boolean updateJobStatus(JobUpdateJobStatusRequestVO jobRequestVO);
Job updateJobResident(JobRequestVO jobRequestVO);
Boolean deleteJobById(Long id);
List<String> getTimeByCron(String cron);

View File

@ -120,20 +120,36 @@ public class JobServiceImpl implements JobService {
@Override
public boolean saveJob(JobRequestVO jobRequestVO) {
Job job = JobConverter.INSTANCE.toJob(jobRequestVO);
WaitStrategy waitStrategy = WaitStrategyEnum.getWaitStrategy(jobRequestVO.getTriggerType());
WaitStrategyContext waitStrategyContext = new WaitStrategyContext();
waitStrategyContext.setTriggerType(jobRequestVO.getTriggerType());
waitStrategyContext.setTriggerInterval(jobRequestVO.getTriggerInterval());
waitStrategyContext.setNextTriggerAt(LocalDateTime.now());
job.setNextTriggerAt(waitStrategy.computeRetryTime(waitStrategyContext));
// 判断常驻任务
Job job = updateJobResident(jobRequestVO);
job.setNextTriggerAt(waitStrategy.computeRetryTime(waitStrategyContext));
return 1 == jobMapper.insert(job);
}
@Override
public boolean updateJob(JobRequestVO jobRequestVO) {
Assert.notNull(jobRequestVO.getId(), () -> new EasyRetryServerException("id 不能为空"));
Assert.isTrue(1 == jobMapper.selectCount(new LambdaQueryWrapper<Job>().eq(Job::getId, jobRequestVO.getId())));
// 判断常驻任务
Job job = updateJobResident(jobRequestVO);
return 1 == jobMapper.updateById(job);
}
@Override
public Job updateJobResident(JobRequestVO jobRequestVO) {
Job job = JobConverter.INSTANCE.toJob(jobRequestVO);
if (jobRequestVO.getTriggerType() == WaitStrategyEnum.FIXED.getTriggerType()) {
if (Integer.parseInt(jobRequestVO.getTriggerInterval()) < 10) {
job.setResident(StatusEnum.YES.getStatus());
}
} else if(jobRequestVO.getTriggerType() == WaitStrategyEnum.CRON.getTriggerType()) {
} else if (jobRequestVO.getTriggerType() == WaitStrategyEnum.CRON.getTriggerType()) {
List<String> timeByCron = getTimeByCron(jobRequestVO.getTriggerInterval());
LocalDateTime first = LocalDateTime.parse(timeByCron.get(0), dateTimeFormatter);
LocalDateTime second = LocalDateTime.parse(timeByCron.get(1), dateTimeFormatter);
@ -145,16 +161,7 @@ public class JobServiceImpl implements JobService {
} else {
throw new EasyRetryServerException("未知触发类型");
}
return 1 == jobMapper.insert(job);
}
@Override
public boolean updateJob(JobRequestVO jobRequestVO) {
Assert.notNull(jobRequestVO.getId(), () -> new EasyRetryServerException("id 不能为空"));
Assert.isTrue(1 == jobMapper.selectCount(new LambdaQueryWrapper<Job>().eq(Job::getId, jobRequestVO.getId())));
Job job = JobConverter.INSTANCE.toJob(jobRequestVO);
return 1 == jobMapper.updateById(job);
return job;
}
@Override