package com.moral.controller; import static com.moral.common.util.ExportExcelUtils.exportData; import static com.moral.common.util.WebUtils.getParametersStartingWith; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.moral.common.bean.ResultBean; import com.moral.entity.charts.LineChartCriteria; import com.moral.service.HistoryMinutelyService; @SuppressWarnings("unchecked") @RestController @RequestMapping("report") @CrossOrigin(origins = "*", maxAge = 3600) public class ReportController { @Resource private HistoryMinutelyService historyMinutelyService; @GetMapping("compare") public ResultBean>> getCompareReport(HttpServletRequest request) throws Exception { Map parameters = getParametersStartingWith(request, null); Map> demo = historyMinutelyService.getCompareReport(parameters); return new ResultBean>>(demo); } @PostMapping("line-chart") public ResultBean>>> lineChart(@RequestBody LineChartCriteria lineChartCriteria) { return new ResultBean<>(historyMinutelyService.queryLineChartDateByCrieria(lineChartCriteria)); } @GetMapping("excel") public ResultBean getExcelReport(HttpServletRequest request, HttpServletResponse response) throws Exception { Map parameters = getParametersStartingWith(request, null); List> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); List sensors= (List) parameters.get("sensors"); String[][] exportColumn = new String[sensors.size() + 1][]; exportColumn[0] = new String[] { "时间", "20", "time" }; for (int index = 0; index < sensors.size(); index++) { String[] split = sensors.get(index).split("-"); String name = split[1]; String key = split[0]; String unit = split[2]; if (!ObjectUtils.isEmpty(unit) && !"null".equals(unit) ) { name += "-" + unit; } exportColumn[index + 1] = new String[] { name , "10", key }; } OutputStream outputStream = exportData(response, "Excel数据", list, exportColumn); outputStream.flush(); outputStream.close(); return new ResultBean(true); } }