Bladeren bron

排除短时间内多次识别问题

qzyReal 2 jaren geleden
bovenliggende
commit
bfe6351234

+ 11 - 0
sp-core/src/main/java/com/pj/current/netty/command/handler/impl/HealthlogHandler.java

@@ -1,5 +1,7 @@
 package com.pj.current.netty.command.handler.impl;
 
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
@@ -91,6 +93,8 @@ public class HealthlogHandler implements IHandler {
         return CommandType.UPLOAD_HEALTH_LOG;
     }
 
+    TimedCache<String, Integer> CACHE_MAP = CacheUtil.newTimedCache(30000);
+
     @Override
     public void handler(ChannelHandlerContext ctx, RequestPackageDTO packageDTO) {
         log.info("========健康核查记录上传===========:{}", JSONUtil.toJsonStr(packageDTO));
@@ -98,6 +102,13 @@ public class HealthlogHandler implements IHandler {
         String str = params.getStr("log");
         HealthlogDTO dto = JSONUtil.toBean(str, HealthlogDTO.class);
         String idCard = dto.getIdentity_number();
+        if (CACHE_MAP.get(idCard) != null) {
+            log.info("回复健康记录上传===重复数据:{}", OKMsg.ok());
+            ctx.write(OKMsg.ok());
+            ctx.flush();
+            return;
+        }
+        CACHE_MAP.put(idCard, 1);
         String sn = params.getStr("sn");
         TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
         if (tbPersonFiling == null) {

+ 10 - 0
sp-core/src/main/java/com/pj/project/tb_terminal/TbTerminalService.java

@@ -7,6 +7,8 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.cache.CacheUtil;
+import cn.hutool.cache.impl.TimedCache;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.RandomUtil;
 import cn.hutool.core.util.StrUtil;
@@ -322,6 +324,8 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         return tbTerminalMapper.getMonitor();
     }
 
+    TimedCache<String, Integer> CACHE_MAP = CacheUtil.newTimedCache(60000);
+
     /**
      * 终端请求是否放行
      *
@@ -329,6 +333,7 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
      * @return
      */
     public AjaxJson check(CheckBO checkBO) {
+        String idCar = checkBO.getIdentity_number();
         log.info("设备请求放行接口:{}", JSONUtil.toJsonStr(checkBO));
         if (StrUtil.isEmpty(checkBO.getIdentity_number())) {
             return AjaxJson.getError("身份证不能为空");
@@ -346,6 +351,11 @@ public class TbTerminalService extends ServiceImpl<TbTerminalMapper, TbTerminal>
         CheckDataDTO checkDataDTO = new CheckDataDTO();
         checkDataDTO.setNucleic_restrict(acidLimit).setVerify_mode(verifyMode)
                 .setTrip_restrict(tourLimit).setIs_pass(0);
+        if (CACHE_MAP.get(idCar) != null) {
+            log.info("返回信息:{},{}", "重复数据", JSONUtil.toJsonStr(checkDataDTO));
+            return AjaxJson.getSuccess("重复识别", checkDataDTO);
+        }
+        CACHE_MAP.put(idCar, 1);
         //是否备案、备案是否通过审核
         TbPersonFiling tbPersonFiling = tbPersonFilingService.findByIdCard(idCard);
         if (tbPersonFiling == null) {