zoukankan      html  css  js  c++  java
  • 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退出

  • 相关阅读:
    05.设计模式_建造者模式
    04.设计模式_抽象工厂模式
    03.设计模式_工厂方法模式
    02.设计模式_单例模式
    01.设计模式_简单工厂模式
    cocos-js一些问题
    blender
    游戏编程模式
    Unity自动打包工具
    unity调用ios原生代码objective-c和回调
  • 原文地址:https://www.cnblogs.com/lyon91/p/11301215.html
Copyright © 2011-2022 走看看