From f5a0939f42e97ee1b92720560dba421bec3b8e84 Mon Sep 17 00:00:00 2001 From: WangXu10 Date: Fri, 24 May 2024 14:39:31 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92):?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E5=8F=98=E6=9B=B4=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/job/CleanHistoryJob.java | 20 ++++++------------- .../mapper/BaseOperationHistoryMapper.java | 4 ++-- .../mapper/BaseOperationHistoryMapper.xml | 4 ++-- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/job/CleanHistoryJob.java b/backend/services/system-setting/src/main/java/io/metersphere/system/job/CleanHistoryJob.java index cd580c68ce..b73a74631e 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/job/CleanHistoryJob.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/job/CleanHistoryJob.java @@ -6,6 +6,7 @@ import io.metersphere.sdk.constants.ParamConstants; import io.metersphere.sdk.domain.OperationLogBlobExample; import io.metersphere.sdk.mapper.OperationLogBlobMapper; import io.metersphere.sdk.util.LogUtils; +import io.metersphere.sdk.util.SubListUtils; import io.metersphere.system.domain.SystemParameter; import io.metersphere.system.mapper.BaseOperationHistoryMapper; import io.metersphere.system.mapper.BaseOperationLogMapper; @@ -14,7 +15,6 @@ import jakarta.annotation.Resource; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -58,29 +58,21 @@ public class CleanHistoryJob { private void doCleanupHistory(int limit) { try { //变更历史处理 - List sourceIds = baseOperationHistoryMapper.selectSourceIds(); - int size = 100; - List> batchList = splitList(sourceIds, size); - batchList.forEach(batch -> cleanupHistory(batch, limit)); + List sourceIds = baseOperationHistoryMapper.selectSourceIds(limit); + SubListUtils.dealForSubList(sourceIds, 100, subList -> { + cleanupHistory(subList, limit); + }); } catch (Exception e) { LogUtils.error(e); } } - private List> splitList(List list, int size) { - List> batchList = new ArrayList<>(); - for (int i = 0; i < list.size(); i += size) { - batchList.add(list.subList(i, Math.min(i + size, list.size()))); - } - return batchList; - } - public void cleanupHistory(List batch, int limit) { batch.forEach(sourceId -> { List ids = baseOperationHistoryMapper.selectIdsBySourceId(sourceId, limit); if (CollectionUtils.isNotEmpty(ids)) { - baseOperationHistoryMapper.deleteByIds(sourceId, ids); + baseOperationHistoryMapper.deleteBySourceId(sourceId, ids); List logIds = baseOperationLogMapper.selectIdByHistoryIds(ids); ids.removeAll(logIds); if (CollectionUtils.isNotEmpty(ids)) { diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.java b/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.java index 71b9d60184..6d0e7be8eb 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.java +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.java @@ -9,11 +9,11 @@ import java.util.List; public interface BaseOperationHistoryMapper { - List selectSourceIds(); + List selectSourceIds(@Param("limit") int limit); List selectIdsBySourceId(@Param("sourceId") String sourceId, @Param("limit") int limit); - void deleteByIds(@Param("sourceId") String sourceId, @Param("ids") List ids); + void deleteBySourceId(@Param("sourceId") String sourceId, @Param("ids") List ids); List list(@Param("request") OperationHistoryRequest request); diff --git a/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.xml b/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.xml index 404efb0a07..5b6035103f 100644 --- a/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.xml +++ b/backend/services/system-setting/src/main/java/io/metersphere/system/mapper/BaseOperationHistoryMapper.xml @@ -4,7 +4,7 @@ @@ -12,7 +12,7 @@ select id from operation_history where source_id = #{sourceId} ORDER BY create_time DESC LIMIT #{limit} - + DELETE FROM operation_history WHERE source_id = #{sourceId} and id not in #{id}