From 10eaebdd40ec9c29bebf35054c02c567ea6c2c89 Mon Sep 17 00:00:00 2001 From: yanglin Date: Wed, 10 Apr 2024 22:23:52 +0800 Subject: [PATCH] =?UTF-8?q?REQ-2135:=20=E6=9B=B4=E6=96=B0batchSize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xxl/MigrateFromPendingMessageJob.java | 22 +++++++++++++++++++ .../center/dal/mapper/TodoBusinessMapper.java | 6 +++++ .../resources/mapper/TodoBusinessMapper.xml | 13 +++++++++++ 3 files changed, 41 insertions(+) create mode 100644 msg-center-dal/src/main/resources/mapper/TodoBusinessMapper.xml diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateFromPendingMessageJob.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateFromPendingMessageJob.java index 09df9570..aa1a703f 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateFromPendingMessageJob.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/xxl/MigrateFromPendingMessageJob.java @@ -69,6 +69,28 @@ public class MigrateFromPendingMessageJob extends IJobHandler { try { log.info("开始执行..."); MigrateCount migrateCount = new MigrateCount(); + + List businessIds; + QueryWrapper todoQuery = new QueryWrapper() + .select("DISTINCT todo_business_id") + .last("AND biz_code <> '' AND record_ext -> '$.isMigratedFromPendingMessage' = true"); + businessIds = todoDao.list(todoQuery).stream() + .map(Todo::getTodoBusinessId) + .collect(toList()); + log.info("remove businessIds:{}", JSON.toJSONString(businessIds)); + + if (!businessIds.isEmpty()) { + for (List batch : Lists.partition(businessIds, 2000)) { + int removedBusiness = todoBusinessDao.getBaseMapper().deleteByIds(batch); + log.info("remove businessIds:{}, count={}", JSON.toJSONString(batch), removedBusiness); + } + } + + int removedTodo = todoDao.getBaseMapper().delete( + query(Todo.class) + .last("AND record_ext -> '$.isMigratedFromPendingMessage' = true")); + log.info("remove todos count={}", removedTodo); + new MigrateBizCodePresentAction(migrateCount).compute(); new MigrateBizCodeAbsentAction(migrateCount).compute(); log.info("迁移结束, migrateCount={}", migrateCount); diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/TodoBusinessMapper.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/TodoBusinessMapper.java index 1b1b138c..d3d5be03 100644 --- a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/TodoBusinessMapper.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/mapper/TodoBusinessMapper.java @@ -2,9 +2,15 @@ package cn.axzo.msg.center.dal.mapper; import cn.axzo.msg.center.domain.entity.TodoBusiness; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.lettuce.core.dynamic.annotation.Param; + +import java.util.Collection; /** * @author yanglin */ public interface TodoBusinessMapper extends BaseMapper { + + int deleteByIds(@Param("ids") Collection ids); + } diff --git a/msg-center-dal/src/main/resources/mapper/TodoBusinessMapper.xml b/msg-center-dal/src/main/resources/mapper/TodoBusinessMapper.xml new file mode 100644 index 00000000..2d628c65 --- /dev/null +++ b/msg-center-dal/src/main/resources/mapper/TodoBusinessMapper.xml @@ -0,0 +1,13 @@ + + + + + + delete from todo_business WHERE id in + + #{id} + + + + +