wenminjie
2026-07-17 cd44290dc230d64ef9e382777b9722e81a661570
ruoyi-applet/src/main/java/com/ruoyi/web/controller/service/ApiPullSignOutDataService.java
@@ -63,7 +63,7 @@
                // 1. 参数校验
                if (!StringUtils.hasText(request.getIdCard())) {
                    log.warn("身份证号为空,已跳过,设备编号: {}", request.getDeviceNo());
                    log.warn("身份证号为空,已跳过,人员姓名: {}", request.getIntervieweeName());
                    errorCount++;
                    continue;
                }
@@ -73,12 +73,12 @@
                    request.setSignImageUrl(url);
                }
                // 2. 防重校验(基于设备编号+身份证号+签离时间)
                // 2. 防重校验(身份证号+签离时间)
                String uniqueKey = generateUniqueKey(request);
                String redisKey = "offline:signout:" + uniqueKey;
                if (Boolean.TRUE.equals(redisTemplate.hasKey(redisKey))) {
                    log.warn("签离数据重复,已跳过, 设备编号: {}, 身份证号: {}, 签离时间: {}",
                            request.getDeviceNo(), request.getIdCard(), request.getSignTime());
                    log.warn("签离数据重复,已跳过, 身份证号: {}, 签离时间: {}",
                            request.getIdCard(), request.getSignTime());
                    skipCount++;
                    continue;
                }
@@ -94,8 +94,8 @@
                }
            } catch (Exception e) {
                log.error("处理签离数据失败, 身份证号: {}, 设备编号: {}",
                        request.getIdCard(), request.getDeviceNo(), e);
                log.error("处理签离数据失败, 身份证号: {}",
                        request.getIdCard(), e);
                errorCount++;
            }
        }
@@ -362,7 +362,7 @@
     */
    private String generateUniqueKey(ApiVisitorRecodeSingoutRequest request) {
        StringBuilder sb = new StringBuilder();
        sb.append(request.getDeviceNo()).append(":");
//        sb.append(request.getDeviceNo()).append(":");
        sb.append(request.getIdCard()).append(":");
        sb.append(request.getSignTime() != null ?
                request.getSignTime().getTime() : System.currentTimeMillis());