JAVA如何控制重复提交?一个设备需要提交数据到我的接口,但是这个设备会提交两次相同的数据在几秒内

发布于 2022-09-12 23:29:17 字数 1598 浏览 11 评论 0

一个设备需要提交数据到我的接口,但是这个设备会提交两次相同的数据在几秒内,我希望在一分钟内只存入一条相同的数据,请问如何实现?

我现在是比较新增数据和上一条数据的时间间隔

@ApiOperation("增加进出纳厂数据")
    @RequestMapping(value="/v1/refuse-treatment-plant", method={ RequestMethod.POST })
    public ResponseResult insertRefuseTreatmentPlantV1(
            HttpServletRequest request,
            @RequestBody RefuseTreatmentPlant refuseTreatmentPlant
    ) {
        String code = "500";
        String message = "FAIL";
        String detail = "selectBulldozerInfo";
        ResponseResult responseResult = new ResponseResult();

        List<RefuseTreatmentPlant> listRefuse = refuseTreatmentPlantService.selectRefuseTreatmentPlant(0, 1, "DESC");
        RefuseTreatmentPlant oldRefuseTreatmentPlant = listRefuse.get(0);

        String oldLicenseNumber = oldRefuseTreatmentPlant.getLicenseNumber();

        System.out.println("oldLicenseNumber == " + oldLicenseNumber);
        System.out.println(refuseTreatmentPlant);
        if(oldLicenseNumber.equals(refuseTreatmentPlant.getLicenseNumber())) {
            System.out.println("提交数据信息相同");
        }

//        int insertCount = refuseTreatmentPlantService.insertRefuseTreatmentPlant(refuseTreatmentPlant);
//        if(insertCount > 0) {
//            code = "200";
//            message = "SUCCESS";
//            detail = "bulldozer-standing-book";
//            responseResult.setData(refuseTreatmentPlant);
//        }

        responseResult.setCode(code);
        responseResult.setMessage(message);
        responseResult.setDetail(detail);
        return responseResult;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里泪两行 2022-09-19 23:29:17

一般是用缓存来解决这种重复提交类的问题:

  1. 用当前提交的上下文生成 key,比如你这里 ${userId}_selectBulldozerInfo
  2. 提交成功后,在缓存中加入这个 key,并设置一个过期时间,比如你这里的 1 分种
  3. 收到提交的时候,先生成 key,判断这个 key 是否在缓存中存在,如果存在则为重复提交

如果是单机系统,可以直接使用本地缓存,如 Caffeine;如果是分布式系统,使用 Redis

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文