From 65d1c98dae18a87b8ad21982a1ef62d8f9c01551 Mon Sep 17 00:00:00 2001 From: hanshuai03 <14693422+hanshuai03@user.noreply.gitee.com> Date: Tue, 27 Jan 2026 14:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E9=94=81=E8=BF=87=E6=9C=9F?= =?UTF-8?q?=E6=B8=85=E7=90=86=E9=80=BB=E8=BE=91=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extension/jpa/JpaLockExtensionImpl.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java index 4f5de8f99..d99b08c14 100644 --- a/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java +++ b/caf-lock/caf-lock-extension-jpa/src/main/java/io/iec/edp/caf/lock/extension/jpa/JpaLockExtensionImpl.java @@ -218,12 +218,12 @@ public class JpaLockExtensionImpl implements LockExtension { } else { log.info("开关打开,并保存配置到缓存执行清理"); cache.put("enableCleanup", true); - this.batchRepo.deleteByExpiredTimeAndData(mkId, dataCat, dataIds, OffsetDateTime.now()); + deleteByExpiredTime(mkId, dataCat, dataIds, OffsetDateTime.now()); } } else if (cleanupBatchLock) { // 清理过期锁 log.info("根据缓存执行过期锁数据清理"); - this.batchRepo.deleteByExpiredTimeAndData(mkId, dataCat, dataIds, OffsetDateTime.now()); + deleteByExpiredTime(mkId, dataCat, dataIds, OffsetDateTime.now()); } //查询已有的锁数据 @@ -483,6 +483,22 @@ public class JpaLockExtensionImpl implements LockExtension { } return entities; } + private void deleteByExpiredTime(String mkId, String dataCat, List dataIds, OffsetDateTime expiredTime) { + int size = dataIds.size();//获取dataIds的长度 + int num = size / 999 + 1;//每次查询不超过999条 + if (num == 1) { + this.batchRepo.deleteByExpiredTimeAndData(mkId, dataCat, dataIds, OffsetDateTime.now()); + } else { + for (int i = 0; i < num; i++) { + int start = i * 999; + int end = (i + 1) * 999; + if (end >= size) { + end = size; + } + this.batchRepo.deleteByExpiredTimeAndData(mkId, dataCat, dataIds.subList(start, end), OffsetDateTime.now()); + } + } + } private int deleteBatchLockBySession(List entities) { Map> map = (Map)entities.stream().collect(Collectors.groupingBy(BatchLockEntity::getSessionId)); int count = 0; -- Gitee