Пример #1
0
  @Override
  public MatchResultWrap findAllProjectByQueryVo(MyRentQueryVo queryVo) {
    log.info("findAllProjectByQueryVo begin.");
    // 根据查询条件搜索项目列表-前台校验必输项

    List<MatchResultVo> projectList = myRentalDao.selectProjectByQueryVo(queryVo);

    if (projectList == null || projectList.isEmpty()) {
      return new MatchResultWrap();
    }

    // 工作地点
    String workPlace = queryVo.getWorkPlace();

    // 获取工作地点的经纬度
    MapPoint currPoint = baiduMapService.getPoint(workPlace, queryVo.getCityName());
    double wpLon = currPoint.getLng().doubleValue();
    double wpLat = currPoint.getLat().doubleValue();
    log.info("lon:[{}],lat[{}]", new Object[] {wpLon, wpLat});
    // 搜索五公里以内的房源信息
    List<MatchResultVo> selectedProjectList = extractMatchResult(projectList, wpLon, wpLat);

    String staticUrl = StringUtils.EMPTY;
    if (selectedProjectList == null || selectedProjectList.isEmpty()) {
      return new MatchResultWrap();
    } else {
      // 构造百度url
      List<MapPoint> lstMarks = transformPoint(selectedProjectList);
      staticUrl = baiduMapService.crtStaticMapUrl(lstMarks, currPoint);

      // 交通路线查询
      for (MatchResultVo item : selectedProjectList) {
        BigDecimal lat = item.getLatitude();
        BigDecimal lon = item.getLongitude();
        RequestParam reqParam = new RequestParam();
        reqParam.setDestination(lat.toString().concat(",").concat(lon.toString()));
        reqParam.setOrigin(String.valueOf(wpLat).concat(",").concat(String.valueOf(wpLon)));
        reqParam.setMode(queryVo.getTrafficType());

        switch (ETranfficType.getSelfByCode(queryVo.getTrafficType())) {
          case DRIVING:
            reqParam.setOrigin_region(queryVo.getCityName());
            reqParam.setDestination_region(queryVo.getCityName());
            break;
          case TRANSIT:
          case WALKING:
            reqParam.setRegion(queryVo.getCityName());
            break;
        }

        String duration = baiduMapService.doLeastTimeBetweenTwoPoint(reqParam);
        if (!StringUtils.isBlank(duration)) {
          log.debug(String.valueOf(Math.ceil(Double.valueOf(duration) / 60)));
          item.setDuration(String.valueOf(Math.ceil(Double.valueOf(duration) / 60)));
        }
      }

      Collections.sort(selectedProjectList, new MatchResultVoCompator());
    }

    log.info("findAllProjectByQueryVo end.");
    return new MatchResultWrap(selectedProjectList, currPoint, staticUrl);
  }