fix(sj_1.1.0-beta3): 1. 修复删除后,看板页面显示空的问题 2. 修复定时归档了已经删除的任务问题 3. 修复删除组未删除号段模式序号ID分配表

This commit is contained in:
opensnail 2024-07-11 23:57:36 +08:00
parent 689e7b2819
commit 2cd0d0ca8b
9 changed files with 98 additions and 41 deletions

View File

@ -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>

View File

@ -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>

View File

@ -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;
} }

View File

@ -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);

View File

@ -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() {

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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;
} }