/** 描述:把数据转换成json 时间:Oct 30, 2010 作者:童贝 参数: 返回值:String 抛出异常: */
 public String getTableToJson(MSLineChart chart) {
   StringBuffer result = new StringBuffer();
   // 记录集
   for (MSLineDataSet dataset : chart.getMSLineDataSets()) {
     List<Map> sortList = new ArrayList<Map>();
     List<MSLineSet> setList = dataset.getMSLineSets();
     int flag = 0;
     for (MSLineCategory category : chart.getMSLineCategories().getCategorys()) {
       Map<String, String> map = new HashMap<String, String>();
       String label = category.getLabel();
       MSLineSet set = setList.get(flag);
       String value = set.getValue();
       map.put(label, value);
       sortList.add(map);
       flag++;
     }
     result.append(JSONUtil.listToJson(sortList));
   }
   return result.toString();
 }
  /**
   * 描述:生成图形 时间:2010-5-5 作者:童贝 参数: 返回值: 抛出异常:
   *
   * @throws Exception
   */
  public MSLineChart generateChart(String keyList, String item, String kid, String flflag)
      throws Exception {
    // 图形
    MSLineChart chart = new MSLineChart();
    chart.setCaption(this.getInameByKidAndItem(kid, item));
    chart.setSubcaption("");
    chart.setLabelStep("1");
    chart.setBaseFontSize("12");
    // 标题
    MSLineCategories mSLineCategories = new MSLineCategories();

    // 数据集
    MSLineDataSet dataSet = new MSLineDataSet();
    dataSet.setSeriesName("");
    String[] color = {"F1683C", "2AD62A"};
    dataSet.setColor(color[0]);
    dataSet.setAnchorBgColor(color[0]);
    dataSet.setAnchorBorderColor(color[0]);

    Connection conn = null;
    Statement state = null;
    ResultSet rs = null;
    // 组装查询条件
    Map<String, String> keyMap = new HashMap<String, String>();
    String[] keys = keyList.split("!");
    for (String key : keys) {
      String[] nameAndValue = key.split(",");
      if (nameAndValue.length == 2) {
        String name = nameAndValue[0];
        String value = nameAndValue[1];
        keyMap.put(name, value);
      }
    }
    try {
      StringBuffer keyWhere = new StringBuffer();
      StringBuffer field = new StringBuffer();

      String startNian = keyMap.get(TjInterFace.SNIAN);
      String startYue = keyMap.get(TjInterFace.SYUE);
      String startRi = keyMap.get(TjInterFace.SRI);
      String endNian = keyMap.get(TjInterFace.ENIAN);
      String endYue = keyMap.get(TjInterFace.EYUE);
      String endRi = keyMap.get(TjInterFace.ERI);
      // 日数据
      if ("1".equals(flflag)) {
        field.append(TjInterFace.NIAN + "," + TjInterFace.YUE + "," + TjInterFace.RI + "," + item);
        keyWhere.append(
            "((NIAN="
                + startNian
                + " and YUE="
                + startYue
                + " and RI>="
                + startRi
                + ") or (NIAN="
                + startNian
                + " and YUE>"
                + startYue
                + ") or (NIAN="
                + endNian
                + " and YUE<"
                + endYue
                + ") or (NIAN="
                + endNian
                + " and YUE="
                + endYue
                + " and RI<="
                + endRi
                + ")) ");
        // 月数据
      } else if ("2".equals(flflag)) {
        field.append(TjInterFace.NIAN + "," + TjInterFace.YUE + "," + item);
        keyWhere.append(
            "((NIAN="
                + startNian
                + " and YUE>="
                + startYue
                + ") or (NIAN>"
                + startNian
                + " and NIAN<"
                + endNian
                + ") or (NIAN="
                + endNian
                + " and YUE<="
                + endYue
                + "))");
        // 年数据
      } else if ("3".equals(flflag)) {
        field.append(TjInterFace.NIAN + "," + item);
        keyWhere.append("NIAN>=" + startNian + " and  NIAN<=" + endNian + "");
      }

      // 增加机组条件
      String jz = keyMap.get(TjInterFace.JZ);
      if (StringUtils.isNotEmpty(jz)) {
        keyWhere.append(" and " + TjInterFace.JZ + "='" + jz + "'");
      }
      // 查询语句
      String sql =
          "select " + field.toString() + " from DATA_" + kid + " where " + keyWhere.toString();

      // 存放查询出来的所有结果
      List<Map<String, String>> rowRecords = new ArrayList<Map<String, String>>();
      conn = this.dataSource.getConnection();
      state = conn.createStatement();
      rs = state.executeQuery(sql);
      ResultSetMetaData rsmeta = rs.getMetaData();
      while (rs.next()) {
        Map<String, String> map = new LinkedHashMap<String, String>();
        for (int i = 1; i <= rsmeta.getColumnCount(); i++) {
          Object obj = rs.getObject(i);
          map.put(rsmeta.getColumnName(i).toString(), (obj == null ? "" : obj.toString()));
        }
        rowRecords.add(map);
      }

      // 初始化起始时间到终止时间之间的每天的值
      List<Map<String, String>> allData = this.initQssjToZzsjData(keyMap, flflag, item);

      // 全部日期的值
      for (Map<String, String> itemMap : allData) {
        MSLineSet set = new MSLineSet();
        String nian = itemMap.get(TjInterFace.NIAN);
        String yue = itemMap.get(TjInterFace.YUE);
        String ri = itemMap.get(TjInterFace.RI);
        // 查询出来有记录的值
        for (Map<String, String> recordMap : rowRecords) {
          String reNian = recordMap.get(TjInterFace.NIAN);
          String reYue = recordMap.get(TjInterFace.YUE);
          String reRi = recordMap.get(TjInterFace.RI);
          if ("1".equals(flflag)) {
            if (nian.equals(reNian) && yue.equals(reYue) && ri.equals(reRi)) {
              itemMap.put(item, recordMap.get(item));
            }
          } else if ("2".equals(flflag)) {
            if (nian.equals(reNian) && yue.equals(reYue)) {
              itemMap.put(item, recordMap.get(item));
            }
          } else if ("3".equals(flflag)) {
            if (nian.equals(reNian)) {
              itemMap.put(item, recordMap.get(item));
            }
          }
        }
        MSLineCategory category = new MSLineCategory();
        if ("1".equals(flflag)) {
          category.setLabel(new Integer(ri).toString());
        } else if ("2".equals(flflag)) {
          category.setLabel(new Integer(yue).toString());
        } else if ("3".equals(flflag)) {
          category.setLabel(new Integer(nian).toString());
        }
        mSLineCategories.getCategorys().add(category);

        set.setValue(itemMap.get(item));
        dataSet.getMSLineSets().add(set);
      }

      chart.getMSLineDataSets().add(dataSet);

      // 下面公共的样式属性
      MSLineStyle style = new MSLineStyle();
      style.setName("captionFont");
      MSLineDefinition defin = new MSLineDefinition();
      defin.setMSLineStyle(style);

      MSLineApply apply = new MSLineApply();
      MSLineApplication applition = new MSLineApplication();
      applition.getMSLineApplys().add(apply);

      MSLineStyles styles = new MSLineStyles();
      styles.setMSLineApplication(applition);
      styles.setMSLineDefinition(defin);

      chart.setMSLineCategories(mSLineCategories);
      chart.setMSLineStyles(styles);
    } catch (Exception e) {
      throw e;
    } finally {
      if (rs != null) {
        rs.close();
      }
      if (state != null) {
        state.close();
      }
      if (conn != null) {
        conn.close();
      }
    }
    return chart;
  }