package com.mossle.report.web; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import com.mossle.api.tenant.TenantHolder; import com.mossle.core.mapper.JsonMapper; import com.mossle.report.persistence.domain.ReportInfo; import com.mossle.report.persistence.domain.ReportSubject; import com.mossle.report.persistence.manager.ReportInfoManager; import com.mossle.report.persistence.manager.ReportSubjectManager; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller("com.mossle.report.web.IndexController") @RequestMapping("report") public class IndexController { private ReportSubjectManager reportSubjectManager; private ReportInfoManager reportInfoManager; private JdbcTemplate jdbcTemplate; private TenantHolder tenantHolder; private JsonMapper jsonMapper = new JsonMapper(); @RequestMapping("index") public String index(Model model) { List<Map<String, Object>> list = this.init(); model.addAttribute("list", list); return "report/index"; } @RequestMapping("view") public String view(@RequestParam("code") String code, Model model) throws Exception { List<Map<String, Object>> list = this.init(); model.addAttribute("list", list); ReportInfo reportInfo = reportInfoManager.findUniqueBy("code", code); model.addAttribute("reportInfo", reportInfo); String content = reportInfo.getContent(); Map<String, Object> metaData = jsonMapper.fromJson(content, Map.class); model.addAttribute("metaData", metaData); String tenantId = tenantHolder.getTenantId(); List<Map<String, Object>> data = jdbcTemplate.queryForList(reportInfo .getReportQuery().getContent(), tenantId); model.addAttribute("data", data); return "report/view"; } public List<Map<String, Object>> init() { List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); List<ReportSubject> reportSubjects = reportSubjectManager.getAll(); for (ReportSubject reportSubject : reportSubjects) { Map<String, Object> map = new HashMap<String, Object>(); map.put("reportSubject", reportSubject); String hql = "from ReportInfo where reportQuery.reportSubject=?"; List<ReportInfo> reportInfos = reportInfoManager.find(hql, reportSubject); map.put("reportInfos", reportInfos); list.add(map); } return list; } // ~ ====================================================================== @Resource public void setReportSubjectManager( ReportSubjectManager reportSubjectManager) { this.reportSubjectManager = reportSubjectManager; } @Resource public void setReportInfoManager(ReportInfoManager reportInfoManager) { this.reportInfoManager = reportInfoManager; } @Resource public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Resource public void setTenantHolder(TenantHolder tenantHolder) { this.tenantHolder = tenantHolder; } }