ferrero项目的bug与思考2

1、出现重复的code

类似Sku这样的数据(code唯一),我们从第三方获取,可以给code 添加一个唯一索引。这样防止出现重复的code

2、项目里的job

如果job执行时间不是经常变更,最简单的就是springboot的 @Scheduled 之前用的是公司产品组的job,感觉很不方便

@Scheduled(fixedRate=4000) 
 每隔4秒执行一次,启动时会执行
@Scheduled(cron="0 0 1 * * ?") 
 启动时不会执行,每天凌晨1点执行

启动类添加 @EnableScheduling

job方法为void

@Scheduled(cron="0 0 1 * * ?")
    public void snpooltask() {}

3、查询结果不一致

第一个查询HU+from 没有查询到结果 ,   那么sn 就是默认值"",

但是 cartonCountQuery 这里查询,parentSn 就是""
就和第一个查询的条件不一样了。count出数字了

private HuSnVO getHuSnVOByHu(String hu,HuSnVM vm){
        log.info("[getHuSnVOByHu]hu="+hu);
        HuSnVO vo = new HuSnVO();
        BasicDBObject query = new BasicDBObject();
        query.put("HU", hu);
        if (!StringUtils.isBlank(vm.getFrom())) {
            query.put("fromLocation", vm.getFrom());
        }
        if (!StringUtils.isBlank(vm.getTo())) {
            query.put("toLocation", vm.getTo());
        }
        String sn ="";
        MongoCursor<Document> cursor = mongoTemplate.getCollection("serialNumber").find(query)
            .skip(0).limit(1).iterator();
        while (cursor.hasNext()) {
            JSONObject jsonObject = JSONObject.parseObject(cursor.next().toJson().toString());
            sn= jsonObject.getString("sn");
            String batchNo = jsonObject.getString("batchNo");
            vo.setBatch(batchNo);
            String skuCode = jsonObject.getString("skuCode");
            vo.setSkuCode(skuCode);
            vo.setHu(hu);
         
            vo.setTo(finalLoc);
            List<Sku> byCode = skuRepository.findByCode(skuCode);
            if(ListUtil.isNotEmpty(byCode)){
                vo.setSkuName(byCode.get(0).getNameCh());
            }
        }

        BasicDBObject cartonCountQuery = new BasicDBObject();
        cartonCountQuery.put("parentSn", sn);
        if (!StringUtils.isBlank(vm.getFrom())) {
            cartonCountQuery.put("fromLocation", vm.getFrom());
        }
        if (!StringUtils.isBlank(vm.getTo())) {
            cartonCountQuery.put("toLocation", vm.getTo());
        }
        long count = mongoTemplate.getCollection("serialNumber").count(cartonCountQuery);
        vo.setCartonCount(count);
        return vo;
    }

4、测试环境从第三方数据ok,正式环境拿数据检查不够细致

测试环境对方推送orderTime 格式是这样,但是正式环境我们接受的数据是

运行将近半个月需要做其他功能时,我发发现这个问题。。。

5、连接SFTP 连接数过多

这个问题主要是两个方面1.连接以后没有关闭 2.初始化连接多,关闭的时候只关闭了部分

我的问题是重复了一行代码

sftp关闭一定要关闭sessoin 然后sftp退出

原文地址:https://www.cnblogs.com/lyon91/p/11301215.html