示例#1
0
 /**
  * 动态报表数据查询
  *
  * @param configId 配置id-code
  * @param page 分页页面
  * @param rows 分页大小
  * @param request
  * @param response
  */
 @SuppressWarnings("unchecked")
 @RequestMapping(params = "datagrid")
 public void datagrid(
     String configId,
     String page,
     String field,
     String rows,
     HttpServletRequest request,
     HttpServletResponse response) {
   // step.1 根据id获取该动态报表的配置参数
   Map<String, Object> cgReportMap = null;
   try {
     cgReportMap = graphReportService.queryCgReportConfig(configId);
     if (cgReportMap.size() <= 0) {
       throw new CgReportNotFoundException("动态报表配置不存在!");
     }
   } catch (Exception e) {
     throw new CgReportNotFoundException("查找动态报表配置失败!" + e.getMessage());
   }
   // step.2 获取该配置的查询SQL
   Map configM = (Map) cgReportMap.get(CgReportConstant.MAIN);
   String querySql = (String) configM.get(CgReportConstant.CONFIG_SQL);
   List<Map<String, Object>> items =
       (List<Map<String, Object>>) cgReportMap.get(CgReportConstant.ITEMS);
   Map queryparams = new LinkedHashMap<String, Object>();
   for (Map<String, Object> item : items) {
     String isQuery = (String) item.get(CgReportConstant.ITEM_ISQUERY);
     if (CgReportConstant.BOOL_TRUE.equalsIgnoreCase(isQuery)) {
       // step.3 装载查询条件
       CgReportQueryParamUtil.loadQueryParams(request, item, queryparams);
     }
   }
   // step.4 进行查询返回结果
   int p = page == null ? 1 : Integer.parseInt(page);
   int r = rows == null ? 99999 : Integer.parseInt(rows);
   List<Map<String, Object>> result =
       graphReportService.queryByCgReportSql(querySql, queryparams, p, r);
   long size = graphReportService.countQueryByCgReportSql(querySql, queryparams);
   dealDic(result, items);
   dealReplace(result, items);
   response.setContentType("application/json");
   response.setHeader("Cache-Control", "no-store");
   PrintWriter writer;
   try {
     writer = response.getWriter();
     writer.println(CgReportQueryParamUtil.getJson(result, size));
     writer.flush();
   } catch (IOException e) {
     e.printStackTrace();
   }
 }