zoukankan      html  css  js  c++  java
  • 测试环境和线上环境数据的传输

    不bb,直接上代码:

    /**
    * 传输数据
    * @param libraryId
    */
    @RequestMapping(value = "/**transfer****", method = RequestMethod.GET)
    @ResponseBody
    public Object transfer(@RequestParam(value = "libraryId", defaultValue = "") Integer libraryId,
    @RequestParam(value = "collection", defaultValue = "") String collection,
    @RequestParam(value = "month", defaultValue = "") Integer month,
    @RequestParam(value = "endPage", defaultValue = "") Integer endPage) {
    Map<String,Object> map = Maps.newHashMap();
    Map<String, String> message = Maps.newHashMap();
    // 取出数据
    int page = 1;
    int pageSize = 10;
    while (true) {
    // 返回的数据
    String result = WebUtil.get("http://***************/ex?libraryId=" + libraryId
    + "&collection=" + collection + "&month=" + month + "&page=" + page + "&pageSize=" + pageSize);
    logger.info("开始传输第"+page+"页数据");
    if (StringUtils.isEmpty(result) || result.equals("[]")) {
    logger.info("传输数据为空,传输完毕");
    break;
    }
    // 导入数据
    message.put("data", result);
    WebUtil.post("http://************/import*****", message);
    if (endPage != null && page == endPage) {
    break;
    }
    page++;
    }
    map.put("总页数", page);
    map.put("总条数", page*pageSize);
    map.put("message", "传输完毕");
    return map;
    }

    /**
    * 提取数据接口
    * @param request
    * @param response
    * @param model
    * @param libraryId
    * @param collection
    * @param page
    * @param pageSize
    * @param month
    * @param year
    * @return
    */
    @RequestMapping(value = "/extraction", method = RequestMethod.GET)
    @ResponseBody
    public List<Document> getDocumentPageBylibraryId(HttpServletRequest request, HttpServletResponse response,
    Model model, @RequestParam(value = "libraryId", defaultValue = "") Integer libraryId,
    @RequestParam(value = "collection", defaultValue = "") String collection,
    @RequestParam(value = "page", defaultValue = "1") Integer page,
    @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
    @RequestParam(value = "month", defaultValue = "") Integer month,
    @RequestParam(value = "year", defaultValue = "2017") Integer year) {
    if (month == null || month < 0 || month >12) {
    return null;
    }
    if (year < 2000 || year > 2020) {
    return null;
    }
    logger.info("传输参数:libraryId:{},collection:{},month:{}",libraryId,collection,month);
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    List<Document> docs;
    try {
    if (month == 0) {
    docs = StringUtils.isEmpty(collection) ? materialService.getMaterialByLibraryId(libraryId, page, pageSize)
    : materialService.getMaterialByCollectionAndLibraryIdAndTime(collection, libraryId, page, pageSize, null, null);
    return docs;
    }
    Date startTime;
    Date endTime;
    if (month == 12) {
    startTime = dateFormat.parse(year+"-12-01");
    endTime = dateFormat.parse(year+1+"-01-01");
    } else {
    startTime = dateFormat.parse(year+"-"+month+"-01");
    endTime = dateFormat.parse(year+"-"+(month+1)+"-01");
    }

    //从mongodb中搜索时间,此处有一个小坑
    docs = materialService.getMaterialByCollectionAndLibraryIdAndTime(collection,libraryId, page, pageSize,startTime,endTime); 
    return docs;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return null;
    }

    /**
    * 导入接口 addMaterialData
    * @param data
    */
    @RequestMapping(value = "/**import****", method = RequestMethod.POST)
    public void addMaterialData(@RequestParam(value = "data", defaultValue = "") String data) {
    if (StringUtils.isEmpty(data)) {
    return;
    }
    // 反序列化
    List<Document> docs = JsonUtil.strToDocumentList(data);

    for (Document doc : docs) {

    try {
    doc.remove("_id");
    doc.put("library_id", (int) Double.parseDouble(String.valueOf(doc.get("library_id"))));  //获取到的数据 数字需要转换一下
    doc.put("fetch_time", new Date(doc.getDouble("fetch_time").longValue()));  //时间格式转换mongodb支持的
    doc.put("pub_date", new Date(doc.getDouble("pub_date").longValue()));
    materialService.importData(doc);
    } catch (NumberFormatException e) {
    e.printStackTrace();
    }
    }

    }

    注:mongodb命令根据时间搜索数据的时候,时间采用的是UTC标准时间,所以搜索的时候要减去8个小时!

      之前测试没注意一直返回的数据和实际的不一样,细节决定成败,以后多看看文档!

  • 相关阅读:
    List of the best open source software applications
    Owin对Asp.net Web的扩展
    NSwag给api加上说明
    'workspace' in VS Code
    unable to find valid certification path to requested target
    JMeter的下载以及安装使用
    exception disappear when forgot to await an async method
    Filter execute order in asp.net web api
    记录web api的request以及response(即写log)
    asp.net web api的源码
  • 原文地址:https://www.cnblogs.com/yzf666/p/7150969.html
Copyright © 2011-2022 走看看