fix(sj_1.1.0-beta3): 1. 修复删除后,看板页面显示空的问题 2. 修复定时归档了已经删除的任务问题 3. 修复删除组未删除号段模式序号ID分配表
This commit is contained in:
parent
689e7b2819
commit
2cd0d0ca8b
@ -29,7 +29,8 @@
|
|||||||
SUM(CASE WHEN (task_batch_status = 6) THEN 1 ELSE 0 END) AS cancelNum,
|
SUM(CASE WHEN (task_batch_status = 6) THEN 1 ELSE 0 END) AS cancelNum,
|
||||||
SUM(CASE WHEN (task_batch_status = 5) THEN 1 ELSE 0 END) AS stopNum,
|
SUM(CASE WHEN (task_batch_status = 5) THEN 1 ELSE 0 END) AS stopNum,
|
||||||
SUM(CASE WHEN (task_batch_status = 4) THEN 1 ELSE 0 END) AS failNum
|
SUM(CASE WHEN (task_batch_status = 4) THEN 1 ELSE 0 END) AS failNum
|
||||||
FROM sj_job_task_batch
|
FROM sj_job_task_batch batch
|
||||||
|
JOIN (select id as jobId from sj_job) job ON batch.job_id = job.jobId
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
@ -45,7 +46,8 @@
|
|||||||
SUM(CASE WHEN (task_batch_status = 6) THEN 1 ELSE 0 END) AS cancelNum,
|
SUM(CASE WHEN (task_batch_status = 6) THEN 1 ELSE 0 END) AS cancelNum,
|
||||||
SUM(CASE WHEN (task_batch_status = 5) THEN 1 ELSE 0 END) AS stopNum,
|
SUM(CASE WHEN (task_batch_status = 5) THEN 1 ELSE 0 END) AS stopNum,
|
||||||
SUM(CASE WHEN (task_batch_status = 4) THEN 1 ELSE 0 END) AS failNum
|
SUM(CASE WHEN (task_batch_status = 4) THEN 1 ELSE 0 END) AS failNum
|
||||||
FROM sj_workflow_task_batch
|
FROM sj_workflow_task_batch batch
|
||||||
|
JOIN (select id as flowId from sj_workflow) flow ON batch.workflow_id = flow.flowId
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
@ -18,14 +18,17 @@
|
|||||||
<!-- 重试统计 -->
|
<!-- 重试统计 -->
|
||||||
<select id="selectRetryRetryTaskLogSummaryList"
|
<select id="selectRetryRetryTaskLogSummaryList"
|
||||||
resultType="com.aizuda.snailjob.template.datasource.persistence.dataobject.DashboardRetryResponseDO">
|
resultType="com.aizuda.snailjob.template.datasource.persistence.dataobject.DashboardRetryResponseDO">
|
||||||
SELECT namespace_id AS namespaceId,
|
SELECT namespace_id AS namespaceId,
|
||||||
group_name AS groupName,
|
group_name AS groupName,
|
||||||
scene_name AS sceneName,
|
scene_name AS sceneName,
|
||||||
SUM(CASE WHEN (retry_status = 0) THEN 1 ELSE 0 END) AS runningNum,
|
SUM(CASE WHEN (retry_status = 0) THEN 1 ELSE 0 END) AS runningNum,
|
||||||
SUM(CASE WHEN (retry_status = 1) THEN 1 ELSE 0 END) AS finishNum,
|
SUM(CASE WHEN (retry_status = 1) THEN 1 ELSE 0 END) AS finishNum,
|
||||||
SUM(CASE WHEN (retry_status = 2) THEN 1 ELSE 0 END) AS maxCountNum,
|
SUM(CASE WHEN (retry_status = 2) THEN 1 ELSE 0 END) AS maxCountNum,
|
||||||
SUM(CASE WHEN (retry_status = 3) THEN 1 ELSE 0 END) AS suspendNum
|
SUM(CASE WHEN (retry_status = 3) THEN 1 ELSE 0 END) AS suspendNum
|
||||||
FROM sj_retry_task_log
|
FROM sj_retry_task_log a
|
||||||
|
join (SELECT namespace_id AS namespaceId, group_name AS groupName, scene_name AS sceneName
|
||||||
|
FROM sj_retry_scene_config) b
|
||||||
|
on a.namespace_id = b.namespaceId and a.group_name = b.groupName and a.scene_name = b.sceneName
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
@ -12,12 +12,15 @@ import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
|||||||
import com.aizuda.snailjob.server.common.schedule.AbstractSchedule;
|
import com.aizuda.snailjob.server.common.schedule.AbstractSchedule;
|
||||||
import com.aizuda.snailjob.server.common.triple.Pair;
|
import com.aizuda.snailjob.server.common.triple.Pair;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.dataobject.JobBatchSummaryResponseDO;
|
import com.aizuda.snailjob.template.datasource.persistence.dataobject.JobBatchSummaryResponseDO;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskBatchMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskBatchMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobSummary;
|
import com.aizuda.snailjob.template.datasource.persistence.po.JobSummary;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch;
|
import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -40,15 +43,12 @@ import java.util.stream.Collectors;
|
|||||||
* @since 2.5.0
|
* @since 2.5.0
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@RequiredArgsConstructor
|
||||||
public class JobSummarySchedule extends AbstractSchedule implements Lifecycle {
|
public class JobSummarySchedule extends AbstractSchedule implements Lifecycle {
|
||||||
|
private final JobTaskBatchMapper jobTaskBatchMapper;
|
||||||
@Autowired
|
private final JobSummaryMapper jobSummaryMapper;
|
||||||
private JobTaskBatchMapper jobTaskBatchMapper;
|
private final JobMapper jobMapper;
|
||||||
@Autowired
|
private final SystemProperties systemProperties;
|
||||||
private JobSummaryMapper jobSummaryMapper;
|
|
||||||
@Autowired
|
|
||||||
private SystemProperties systemProperties;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String lockName() {
|
public String lockName() {
|
||||||
@ -79,7 +79,7 @@ public class JobSummarySchedule extends AbstractSchedule implements Lifecycle {
|
|||||||
.groupBy(JobTaskBatch::getNamespaceId, JobTaskBatch::getGroupName,
|
.groupBy(JobTaskBatch::getNamespaceId, JobTaskBatch::getGroupName,
|
||||||
JobTaskBatch::getJobId, JobTaskBatch::getTaskBatchStatus, JobTaskBatch::getOperationReason);
|
JobTaskBatch::getJobId, JobTaskBatch::getTaskBatchStatus, JobTaskBatch::getOperationReason);
|
||||||
List<JobBatchSummaryResponseDO> summaryResponseDOList = jobTaskBatchMapper.selectJobBatchSummaryList(wrapper);
|
List<JobBatchSummaryResponseDO> summaryResponseDOList = jobTaskBatchMapper.selectJobBatchSummaryList(wrapper);
|
||||||
if (summaryResponseDOList == null || summaryResponseDOList.size() < 1) {
|
if (CollUtil.isEmpty(summaryResponseDOList)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,6 +113,9 @@ public abstract class AbstractScanGroup extends AbstractActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void processRetryPartitionTasks(List<? extends PartitionTask> partitionTasks, final ScanTask scanTask) {
|
private void processRetryPartitionTasks(List<? extends PartitionTask> partitionTasks, final ScanTask scanTask) {
|
||||||
|
if (CollUtil.isEmpty(partitionTasks)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 批次查询场景
|
// 批次查询场景
|
||||||
Map<String, RetrySceneConfig> sceneConfigMap = getSceneConfigMap(partitionTasks, scanTask);
|
Map<String, RetrySceneConfig> sceneConfigMap = getSceneConfigMap(partitionTasks, scanTask);
|
||||||
|
@ -15,8 +15,7 @@ import com.aizuda.snailjob.template.datasource.persistence.po.RetryTaskLog;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
@ -33,15 +32,11 @@ import java.util.*;
|
|||||||
* @since 2.1.0
|
* @since 2.1.0
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@Slf4j
|
@RequiredArgsConstructor
|
||||||
public class RetrySummarySchedule extends AbstractSchedule implements Lifecycle {
|
public class RetrySummarySchedule extends AbstractSchedule implements Lifecycle {
|
||||||
|
private final RetryTaskLogMapper retryTaskLogMapper;
|
||||||
@Autowired
|
private final RetrySummaryMapper retrySummaryMapper;
|
||||||
private RetryTaskLogMapper retryTaskLogMapper;
|
private final SystemProperties systemProperties;
|
||||||
@Autowired
|
|
||||||
private RetrySummaryMapper retrySummaryMapper;
|
|
||||||
@Autowired
|
|
||||||
private SystemProperties systemProperties;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String lockName() {
|
public String lockName() {
|
||||||
|
@ -483,6 +483,11 @@ public class GroupConfigServiceImpl implements GroupConfigService {
|
|||||||
.eq(GroupConfig::getGroupName, groupName)),
|
.eq(GroupConfig::getGroupName, groupName)),
|
||||||
() -> new SnailJobServerException("删除组失败, 请检查状态是否关闭状态"));
|
() -> new SnailJobServerException("删除组失败, 请检查状态是否关闭状态"));
|
||||||
|
|
||||||
|
Assert.isTrue(1 == sequenceAllocMapper.delete(new LambdaQueryWrapper<SequenceAlloc>()
|
||||||
|
.eq(SequenceAlloc::getNamespaceId, namespaceId)
|
||||||
|
.eq(SequenceAlloc::getGroupName, groupName)),
|
||||||
|
() -> new SnailJobServerException("删除分布式Id表数据失败"));
|
||||||
|
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ import com.aizuda.snailjob.server.common.WaitStrategy;
|
|||||||
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
||||||
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
||||||
import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum;
|
import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum;
|
||||||
|
import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
||||||
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||||
import com.aizuda.snailjob.server.common.strategy.WaitStrategies;
|
import com.aizuda.snailjob.server.common.strategy.WaitStrategies;
|
||||||
import com.aizuda.snailjob.server.common.util.CronUtils;
|
import com.aizuda.snailjob.server.common.util.CronUtils;
|
||||||
@ -31,9 +32,10 @@ import com.aizuda.snailjob.server.web.service.handler.GroupHandler;
|
|||||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||||
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig;
|
import com.aizuda.snailjob.template.datasource.persistence.po.JobSummary;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -63,6 +65,7 @@ public class JobServiceImpl implements JobService {
|
|||||||
private final JobPrepareHandler terminalJobPrepareHandler;
|
private final JobPrepareHandler terminalJobPrepareHandler;
|
||||||
private final AccessTemplate accessTemplate;
|
private final AccessTemplate accessTemplate;
|
||||||
private final GroupHandler groupHandler;
|
private final GroupHandler groupHandler;
|
||||||
|
private final JobSummaryMapper jobSummaryMapper;
|
||||||
|
|
||||||
private static Long calculateNextTriggerAt(final JobRequestVO jobRequestVO, Long time) {
|
private static Long calculateNextTriggerAt(final JobRequestVO jobRequestVO, Long time) {
|
||||||
if (Objects.equals(jobRequestVO.getTriggerType(), SystemConstants.WORKFLOW_TRIGGER_TYPE)) {
|
if (Objects.equals(jobRequestVO.getTriggerType(), SystemConstants.WORKFLOW_TRIGGER_TYPE)) {
|
||||||
@ -287,6 +290,7 @@ public class JobServiceImpl implements JobService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Boolean deleteJobByIds(Set<Long> ids) {
|
public Boolean deleteJobByIds(Set<Long> ids) {
|
||||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
@ -297,6 +301,16 @@ public class JobServiceImpl implements JobService {
|
|||||||
.in(Job::getId, ids)
|
.in(Job::getId, ids)
|
||||||
), () -> new SnailJobServerException("删除定时任务失败, 请检查任务状态是否关闭状态"));
|
), () -> new SnailJobServerException("删除定时任务失败, 请检查任务状态是否关闭状态"));
|
||||||
|
|
||||||
|
List<JobSummary> jobSummaries = jobSummaryMapper.selectList(new LambdaQueryWrapper<JobSummary>()
|
||||||
|
.select(JobSummary::getId)
|
||||||
|
.in(JobSummary::getBusinessId, ids)
|
||||||
|
.eq(JobSummary::getNamespaceId, namespaceId)
|
||||||
|
.eq(JobSummary::getSystemTaskType, SyetemTaskTypeEnum.JOB.getType())
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(jobSummaries)) {
|
||||||
|
jobSummaryMapper.deleteByIds(StreamUtils.toSet(jobSummaries, JobSummary::getId));
|
||||||
|
}
|
||||||
|
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,9 @@ import com.aizuda.snailjob.server.web.service.handler.SyncConfigHandler;
|
|||||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||||
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
||||||
import com.aizuda.snailjob.template.datasource.access.ConfigAccess;
|
import com.aizuda.snailjob.template.datasource.access.ConfigAccess;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.RetrySummaryMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig;
|
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySummary;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
@ -53,6 +55,7 @@ public class SceneConfigServiceImpl implements SceneConfigService {
|
|||||||
|
|
||||||
private final AccessTemplate accessTemplate;
|
private final AccessTemplate accessTemplate;
|
||||||
private final GroupHandler groupHandler;
|
private final GroupHandler groupHandler;
|
||||||
|
private final RetrySummaryMapper retrySummaryMapper;
|
||||||
|
|
||||||
private static void checkExecuteInterval(SceneConfigRequestVO requestVO) {
|
private static void checkExecuteInterval(SceneConfigRequestVO requestVO) {
|
||||||
if (Lists.newArrayList(WaitStrategies.WaitStrategyEnum.FIXED.getType(),
|
if (Lists.newArrayList(WaitStrategies.WaitStrategyEnum.FIXED.getType(),
|
||||||
@ -220,15 +223,35 @@ public class SceneConfigServiceImpl implements SceneConfigService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public boolean deleteByIds(Set<Long> ids) {
|
public boolean deleteByIds(Set<Long> ids) {
|
||||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
Assert.isTrue(ids.size() == accessTemplate.getSceneConfigAccess().delete(
|
LambdaQueryWrapper<RetrySceneConfig> queryWrapper = new LambdaQueryWrapper<RetrySceneConfig>()
|
||||||
new LambdaQueryWrapper<RetrySceneConfig>()
|
.select(RetrySceneConfig::getSceneName, RetrySceneConfig::getGroupName)
|
||||||
.eq(RetrySceneConfig::getNamespaceId, namespaceId)
|
.eq(RetrySceneConfig::getNamespaceId, namespaceId)
|
||||||
.eq(RetrySceneConfig::getSceneStatus, StatusEnum.NO.getStatus())
|
.eq(RetrySceneConfig::getSceneStatus, StatusEnum.NO.getStatus())
|
||||||
.in(RetrySceneConfig::getId, ids)
|
.in(RetrySceneConfig::getId, ids);
|
||||||
), () -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
|
||||||
|
List<RetrySceneConfig> sceneConfigs = accessTemplate.getSceneConfigAccess().list(queryWrapper);
|
||||||
|
Assert.notEmpty(sceneConfigs, () -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
||||||
|
|
||||||
|
Assert.isTrue(ids.size() == accessTemplate.getSceneConfigAccess().delete(queryWrapper),
|
||||||
|
() -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
||||||
|
|
||||||
|
Set<String> sceneNames = StreamUtils.toSet(sceneConfigs, RetrySceneConfig::getSceneName);
|
||||||
|
Set<String> groupNames = StreamUtils.toSet(sceneConfigs, RetrySceneConfig::getGroupName);
|
||||||
|
List<RetrySummary> retrySummaries = retrySummaryMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<RetrySummary>()
|
||||||
|
.select(RetrySummary::getId)
|
||||||
|
.eq(RetrySummary::getNamespaceId, namespaceId)
|
||||||
|
.in(RetrySummary::getGroupName, groupNames)
|
||||||
|
.in(RetrySummary::getSceneName, sceneNames)
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(retrySummaries)) {
|
||||||
|
Assert.isTrue(retrySummaries.size() == retrySummaryMapper.deleteByIds(StreamUtils.toSet(retrySummaries, RetrySummary::getId))
|
||||||
|
, () -> new SnailJobServerException("删除汇总表数据失败"));
|
||||||
|
}
|
||||||
|
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
@ -14,11 +14,11 @@ import com.aizuda.snailjob.common.core.util.StreamUtils;
|
|||||||
import com.aizuda.snailjob.common.log.SnailJobLog;
|
import com.aizuda.snailjob.common.log.SnailJobLog;
|
||||||
import com.aizuda.snailjob.server.common.WaitStrategy;
|
import com.aizuda.snailjob.server.common.WaitStrategy;
|
||||||
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
||||||
import com.aizuda.snailjob.server.common.dto.DecisionConfig;
|
|
||||||
import com.aizuda.snailjob.server.common.dto.JobTaskConfig;
|
import com.aizuda.snailjob.server.common.dto.JobTaskConfig;
|
||||||
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
||||||
import com.aizuda.snailjob.server.common.enums.ExpressionTypeEnum;
|
import com.aizuda.snailjob.server.common.enums.ExpressionTypeEnum;
|
||||||
import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum;
|
import com.aizuda.snailjob.server.common.enums.JobTaskExecutorSceneEnum;
|
||||||
|
import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
||||||
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||||
import com.aizuda.snailjob.server.common.strategy.WaitStrategies;
|
import com.aizuda.snailjob.server.common.strategy.WaitStrategies;
|
||||||
import com.aizuda.snailjob.server.common.util.CronUtils;
|
import com.aizuda.snailjob.server.common.util.CronUtils;
|
||||||
@ -41,12 +41,10 @@ import com.aizuda.snailjob.server.web.service.handler.WorkflowHandler;
|
|||||||
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||||
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobSummaryMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowNodeMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowNodeMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
import com.aizuda.snailjob.template.datasource.persistence.po.*;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.Workflow;
|
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.WorkflowNode;
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
@ -85,6 +83,7 @@ public class WorkflowServiceImpl implements WorkflowService {
|
|||||||
private final JobMapper jobMapper;
|
private final JobMapper jobMapper;
|
||||||
private final AccessTemplate accessTemplate;
|
private final AccessTemplate accessTemplate;
|
||||||
private final GroupHandler groupHandler;
|
private final GroupHandler groupHandler;
|
||||||
|
private final JobSummaryMapper jobSummaryMapper;
|
||||||
|
|
||||||
private static Long calculateNextTriggerAt(final WorkflowRequestVO workflowRequestVO, Long time) {
|
private static Long calculateNextTriggerAt(final WorkflowRequestVO workflowRequestVO, Long time) {
|
||||||
checkExecuteInterval(workflowRequestVO);
|
checkExecuteInterval(workflowRequestVO);
|
||||||
@ -350,6 +349,7 @@ public class WorkflowServiceImpl implements WorkflowService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public Boolean deleteByIds(Set<Long> ids) {
|
public Boolean deleteByIds(Set<Long> ids) {
|
||||||
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
@ -360,6 +360,18 @@ public class WorkflowServiceImpl implements WorkflowService {
|
|||||||
.in(Workflow::getId, ids)
|
.in(Workflow::getId, ids)
|
||||||
), () -> new SnailJobServerException("删除工作流任务失败, 请检查任务状态是否关闭状态"));
|
), () -> new SnailJobServerException("删除工作流任务失败, 请检查任务状态是否关闭状态"));
|
||||||
|
|
||||||
|
List<JobSummary> jobSummaries = jobSummaryMapper.selectList(new LambdaQueryWrapper<JobSummary>()
|
||||||
|
.select(JobSummary::getId)
|
||||||
|
.in(JobSummary::getBusinessId, ids)
|
||||||
|
.eq(JobSummary::getNamespaceId, namespaceId)
|
||||||
|
.eq(JobSummary::getSystemTaskType, SyetemTaskTypeEnum.WORKFLOW.getType())
|
||||||
|
);
|
||||||
|
if (CollUtil.isNotEmpty(jobSummaries)) {
|
||||||
|
Assert.isTrue(jobSummaries.size() ==
|
||||||
|
jobSummaryMapper.deleteByIds(StreamUtils.toSet(jobSummaries, JobSummary::getId)),
|
||||||
|
() -> new SnailJobServerException("汇总表删除失败")
|
||||||
|
);
|
||||||
|
}
|
||||||
return Boolean.TRUE;
|
return Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user