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} + + + + +