|
|
|
|
@ -16,6 +16,11 @@ import cn.iocoder.yudao.module.mes.dal.mysql.ticketmanagement.TicketManagementMa
|
|
|
|
|
import cn.iocoder.yudao.module.mes.dal.mysql.ticketresults.TicketResultsMapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import com.cronutils.model.Cron;
|
|
|
|
|
import com.cronutils.model.CronType;
|
|
|
|
|
import com.cronutils.model.definition.CronDefinitionBuilder;
|
|
|
|
|
import com.cronutils.model.time.ExecutionTime;
|
|
|
|
|
import com.cronutils.parser.CronParser;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
@ -23,6 +28,8 @@ import org.springframework.validation.annotation.Validated;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
import java.time.Duration;
|
|
|
|
|
import java.time.ZonedDateTime;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@ -73,6 +80,12 @@ public class TaskManagementServiceImpl implements TaskManagementService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Long createTaskManagement(TaskManagementSaveReqVO createReqVO) {
|
|
|
|
|
String cronExpr = createReqVO.getCronExpression();
|
|
|
|
|
|
|
|
|
|
// 校验 cron 表达式最小间隔
|
|
|
|
|
isCronIntervalAtLeastOneHour(cronExpr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 插入
|
|
|
|
|
TaskManagementDO taskManagement = BeanUtils.toBean(createReqVO, TaskManagementDO.class);
|
|
|
|
|
taskManagementMapper.insert(taskManagement);
|
|
|
|
|
@ -80,6 +93,35 @@ public class TaskManagementServiceImpl implements TaskManagementService {
|
|
|
|
|
return taskManagement.getId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void isCronIntervalAtLeastOneHour(String cronExpr) {
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
if (StringUtils.isBlank(cronExpr)){
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CronParser parser = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ));
|
|
|
|
|
Cron cron = parser.parse(cronExpr);
|
|
|
|
|
cron.validate();
|
|
|
|
|
|
|
|
|
|
ExecutionTime executionTime = ExecutionTime.forCron(cron);
|
|
|
|
|
|
|
|
|
|
ZonedDateTime now = ZonedDateTime.now();
|
|
|
|
|
ZonedDateTime next1 = executionTime.nextExecution(now).get();
|
|
|
|
|
ZonedDateTime next2 = executionTime.nextExecution(next1).get();
|
|
|
|
|
|
|
|
|
|
Duration duration = Duration.between(next1, next2);
|
|
|
|
|
|
|
|
|
|
if (duration.toHours() < 1) {
|
|
|
|
|
throw exception(TASK_CORN_NOT_LE_HOUR);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
throw exception(TASK_CORN_NOT_LE_HOUR);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void updateTaskManagement(TaskManagementSaveReqVO updateReqVO) {
|
|
|
|
|
// 校验存在
|
|
|
|
|
|