From 6ede822c355bb832eb381ffa610e9948fcff5878 Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Sun, 3 Aug 2025 18:05:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sis):=20=E9=9D=A2=E6=9D=BF=E8=81=94?= =?UTF-8?q?=E5=8A=A8=E6=A2=AF=E6=8E=A7=20-=20=E5=A2=9E=E5=8A=A0=20Redis=20?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E5=A4=84=E7=90=86=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E4=B8=8B=E5=8F=91=E6=9D=83=E9=99=90=20-=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E5=8F=96=E5=85=AC=E5=85=B1=E6=96=B9=E6=B3=95=20liftAu?= =?UTF-8?q?th?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/sis/task/SyncLiftAuthTask.java | 52 ++++++++++++++++--- 1 file changed, 44 insertions(+), 8 deletions(-) diff --git a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/SyncLiftAuthTask.java b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/SyncLiftAuthTask.java index e66aca73..27ce995c 100644 --- a/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/SyncLiftAuthTask.java +++ b/ruoyi-modules/Sis/src/main/java/org/dromara/sis/task/SyncLiftAuthTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.sis.sdk.e8.E8PlatformApi; import org.dromara.sis.sdk.e8.domain.QueryDto; import org.dromara.sis.sdk.e8.domain.accessControl.req.AccessRecordFindReq; @@ -15,6 +16,8 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import java.util.Date; +import java.util.List; +import java.util.Objects; /** * @author lsm @@ -38,7 +41,8 @@ public class SyncLiftAuthTask { dto.setPageIndex(1); dto.setMaxResultCount(20); - String starTime = DateUtil.format(DateUtil.offset(new Date(), DateField.MINUTE, -2), "yyyy-MM-dd HH:mm:ss"); + // 10秒内 + String starTime = DateUtil.format(DateUtil.offset(new Date(), DateField.SECOND, -10), "yyyy-MM-dd HH:mm:ss"); String endTime = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"); AccessRecordFindReq lift = new AccessRecordFindReq(); @@ -48,21 +52,53 @@ public class SyncLiftAuthTask { // 9号电梯 - lift.setDeviceId(545024837750853L); + lift.setDeviceId(550757939925061L); dto.setQueryDto(lift); TableDataInfo nineLiftList = apiService.getPageAccessRecordList(dto); if (nineLiftList.getTotal() != 0) { - for (int i = 0; i < 18; i++) { - HikApiService.getInstance().controlGateway("192.168.24.188", (i + 1), 2); - } + liftAuth(nineLiftList.getRows(), "nineLift", "192.168.24.188"); } // 15号电梯 - // lift.setDeviceId(545024837750853L); - // dto.setQueryDto(lift); - // TableDataInfo nineLiftList = apiService.getPageAccessRecordList(dto); + lift.setDeviceId(545024837750853L); + dto.setQueryDto(lift); + TableDataInfo fifteenLiftList = apiService.getPageAccessRecordList(dto); + if (fifteenLiftList.getTotal() != 0) { + liftAuth(fifteenLiftList.getRows(), "fifteenLift", "192.168.24.188"); + } } + + private void liftAuth(List list, String redisKey, String controlIP) { + // 取出第一条通行记录 + Long recordId = list.get(0).getId(); + + // 判断redis是否存在数据 + if (RedisUtils.isExistsObject(redisKey)) { + // 取出redis数据 + Long redisData = RedisUtils.getCacheObject(redisKey); + + // 判断redis数据是否等于返回通行记录 + if (redisData.equals(recordId)) { + log.info("已下发权限,不处理!通行记录={}", recordId); + } else { + log.info("下发权限!通行记录={}", recordId); + RedisUtils.setCacheObject(redisKey, recordId); + RedisUtils.expire(redisKey, 10); + for (int i = 0; i < 18; i++) { + HikApiService.getInstance().controlGateway(controlIP, (i + 1), 2); + } + } + } else { + // redis不存在数据,设置数据,同时下发权限 + RedisUtils.setCacheObject(redisKey, recordId); + RedisUtils.expire(redisKey, 10); + for (int i = 0; i < 18; i++) { + HikApiService.getInstance().controlGateway(controlIP, (i + 1), 2); + } + } + } + }