@Override
  public boolean getMessage(MessageHeader header, ArrayList<ProductBean> beans, String filename) {

    StationFileHeader head = new StationFileHeader(CityType.NONE_6H);

    StationFileBody body = new StationFileBody();
    StationFileObj obj = new StationFileObj(head, body);
    StationReader reader = new StationReader(obj, filename);

    if (!reader.read()) {
      return false;
    }

    // 设置Header
    header.setSource(head.getProvinceCode());
    header.setProductType(head.getDataType());
    header.setLifeCycle(3600);
    header.setFileName("");
    header.setFilePath("");

    String dateTimeStamp = head.getDateTimeStamp();

    String yyyymmdd = dateTimeStamp.substring(0, dateTimeStamp.length() - 2);
    header.setYyyymmdd(yyyymmdd);

    String batchID = dateTimeStamp.substring(dateTimeStamp.length() - 2, dateTimeStamp.length());
    if (batchID.equals("12")) {
      header.setBatchID("1400");
    } else if (batchID.equals("00")) {
      header.setBatchID("1000");
    }

    header.setForecastType(0);

    // 把dateTimeStamp转换成baseTime
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
    Date date;
    try {
      date = simpleDateFormat.parse(dateTimeStamp + "0000"); // 0000是分和秒
      long baseTime = date.getTime();
      header.setBaseTime(baseTime);
    } catch (ParseException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return false;
    }

    String dataID = head.getProvinceCode() + dateTimeStamp;
    header.setDataID(dataID);

    // 根据Body的内容填充BeanList
    LinkedHashMap<String, StationObject> map = body.getStationMap();

    // 遍历map
    LinkedHashMap<String, StationObject> stations = obj.getBody().getStationMap();

    Iterator<Map.Entry<String, StationObject>> iter = stations.entrySet().iterator();

    String dataType = head.getDataType();
    while (iter.hasNext()) {
      Map.Entry<String, StationObject> entry = iter.next();
      String stationID = entry.getKey();
      StationObject item = entry.getValue();

      if (dataType.equals("SCMOC")) {
        List<ForecastTimeLine> list = item.getForecastLineList();

        for (int i = 0; i < list.size(); ++i) {

          ForecastTimeLine line = list.get(i);

          // 创建一个空的Bean
          SCMOCBean pb =
              new SCMOCBean(
                  "", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

          // 设置基本参数
          pb.setStation(stationID); // 站点ID
          String foreTime = line.getForecastTime();
          int forecastTime = Integer.valueOf(foreTime);
          pb.setMinutesValid(forecastTime * 60);
          pb.setMinutesInterval(3); // 暂时为3

          // 设置预报数据
          List<Float> datalist = line.getDataList();

          if (datalist.size() == 21) {
            pb.setTemperature(datalist.get(0));
            pb.setHumidity(datalist.get(1)); // 相对湿度
            pb.setWindDirection(datalist.get(2));
            pb.setWindSpeed(datalist.get(3));
            pb.setAirPressure(datalist.get(4));
            pb.setPrecipitation(datalist.get(5)); // 降水量
            pb.setCloud(datalist.get(6)); // 总云量
            pb.setlCloud(datalist.get(7)); // 低运量
            pb.setWeather(datalist.get(8)); // 天气现象
            pb.setVisibility(datalist.get(9)); // 能见度
            pb.settMax(datalist.get(10)); // 最高温度
            pb.settMin(datalist.get(11)); // 最低温度
            pb.sethMax(datalist.get(12)); // 最大相对湿度
            pb.sethMin(datalist.get(13)); // 最小相对湿度
            pb.setPrecipitation24H(datalist.get(14)); // 24小时降水量
            pb.setrProbability12H(datalist.get(15)); // 12小时降水量
            pb.setCloud12H(datalist.get(16));
            pb.setlCloud12H(datalist.get(17));
            pb.setWeather12H(datalist.get(18));
            pb.setWindDirection12H(datalist.get(19));
            pb.setWindSpeed12H(datalist.get(20));

            beans.add(pb);
          }
        }

      } else if (dataType.equals("SPCC")) {

        List<ForecastTimeLine> list = item.getForecastLineList();
        for (int i = 0; i < list.size(); ++i) {

          ForecastTimeLine line = list.get(i);
          SPCCBean pb = new SPCCBean("", 0, 0, 0, 0, 0, 0, 0);

          // 设置基本参数
          pb.setStation(stationID); // 站点ID
          String foreTime = line.getForecastTime();
          int forecastTime = Integer.valueOf(foreTime);
          pb.setMinutesValid(forecastTime * 60);
          pb.setMinutesInterval(3); // 暂时为3

          // 设置预报数据
          List<Float> datalist = line.getDataList();
          if (datalist.size() == 21) {

            pb.setWindDirection(datalist.get(2));
            pb.setWindLevel(datalist.get(3));
            pb.setWeather(datalist.get(8));
            pb.setTMax(datalist.get(10));
            pb.setTMin(datalist.get(11));

            beans.add(pb);
          }
        }
      }
    }

    return true;
  }