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 格式是这样,但是正式环境我们接受的数据是

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

 

转载于:https://www.cnblogs.com/lyon91/p/11301215.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值