@Override
    protected Map<String, List> doInBackground(Void... params) {
      Map<String, List> result = new HashMap<>();

      List<String> types = new ArrayList<>();
      List<Float> percents = new ArrayList<>();
      List<ChartItemModel> datas = new ArrayList<>();

      // 所有记录总金额
      totalAmount = DataSupport.sum(AccountModel.class, TableConstants.AMOUNT, float.class);

      // 查询类别、图标、类别总金额
      Cursor cursor = DataSupport.findBySQL(QUERY_TYPES);
      if (cursor != null && cursor.moveToFirst()) {
        do {
          String type = cursor.getString(cursor.getColumnIndex(TableConstants.TYPE));
          String iconImageName =
              cursor.getString(cursor.getColumnIndex(TableConstants.ICONIMAGENAME));
          float sum =
              DataSupport.where(TableConstants.TYPE + " = ?", type)
                  .sum(AccountModel.class, TableConstants.AMOUNT, float.class);

          types.add(type);
          percents.add(sum / totalAmount);

          ChartItemModel chartItemModel = new ChartItemModel();
          chartItemModel.type = type;
          chartItemModel.percent = Utils.convertFloatToPercent(sum / totalAmount);
          chartItemModel.iconImageName = iconImageName;
          chartItemModel.sum = sum;
          datas.add(chartItemModel);

        } while (cursor.moveToNext());
        cursor.close();
      }

      result.put("types", types);
      result.put("percents", percents);
      result.put("datas", datas);

      return result;
    }