@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; }