/** * */ package com.xcgl.dataview.controller; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; import javax.servlet.http.HttpServletRequest; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.util.LogUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import com.github.abel533.echarts.Legend; import com.github.abel533.echarts.Option; import com.github.abel533.echarts.Title; import com.github.abel533.echarts.axis.Axis; import com.github.abel533.echarts.axis.CategoryAxis; import com.github.abel533.echarts.series.Bar; import com.github.abel533.echarts.series.Line; import com.github.abel533.echarts.series.Pie; import com.xcgl.dataview.entity.DeviceStatusSumDto; import com.xcgl.dataview.entity.GonglvDto; import com.xcgl.dataview.entity.NenghaoDto; import com.xcgl.dataview.entity.SensorLiveTextDto; import com.xcgl.dataview.entity.WarningSumDto; import com.xcgl.dataview.service.DataviewServiceI; /** * @Title: Controller * @Description: 大数据展现 * @author onlineGenerator * @date 2018-07-13 11:06:44 * @version V1.0 * */ @Controller @RequestMapping("/dataviewController") public class DataviewController extends BaseController { @Autowired private DataviewServiceI dvservice; /** * 大数据展现 主 页面跳转 * * @return */ @RequestMapping(params = "main") public ModelAndView main(HttpServletRequest request) { return new ModelAndView("com/xcgl/dataview/tongji"); } /** * 大数据展现 压力 * * @return */ @RequestMapping(params = "sensor_yali") public ModelAndView getSensor_yali(HttpServletRequest request) { return new ModelAndView("com/xcgl/dataview/sensor_yali"); } /** * 大数据展现 电压 * * @return */ @RequestMapping(params = "sensor_dianya") public ModelAndView getSensor_dianya(HttpServletRequest request) { return new ModelAndView("com/xcgl/dataview/sensor_dianya"); } /** * 大数据展现 液位 * * @return */ @RequestMapping(params = "sensor_height") public ModelAndView getSensor_height(HttpServletRequest request) { return new ModelAndView("com/xcgl/dataview/sensor_height"); } /** * 大数据展现 温湿度 * * @return */ @RequestMapping(params = "sensor_wenshidu") public ModelAndView getSensor_wenshidu(HttpServletRequest request) { return new ModelAndView("com/xcgl/dataview/sensor_wenshidu"); } /** * 设备档案列表 页面跳转 * * @return */ @RequestMapping(params = "getRiNenghao") @ResponseBody public AjaxJson getRiNenghao(HttpServletRequest request) { AjaxJson json = new AjaxJson(); Map map = new HashMap(); map = dvservice.getNenghaoSumData(true); // Random rand = new Random(); // String rinenghao = rand.nextInt(90)+10 + "/kwh"; // map.put("rinenghao", rinenghao); // // String yuenenghao = rand.nextInt(900)+10 + "/kwh"; // map.put("yuenenghao", yuenenghao); // // String jinenghao = rand.nextInt(9000)+10 + "/kwh"; // map.put("jinenghao", jinenghao); json.setAttributes(map); return json; } /** * 获取预警柱形图Option * * @return */ @RequestMapping(params = "getWarningSumBar") @ResponseBody public Option getWarningSumBar(HttpServletRequest request) { List list = null; try { SimpleDateFormat dateformat=new SimpleDateFormat("yyyy-MM-dd"); String date =dateformat.format(new Date()); list = dvservice.getWarningSumData(date); } catch (Exception e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); } if(list == null || list.isEmpty()) { return null; } Option option = new Option(); List seriesdata = new ArrayList(); List xaxisList = new ArrayList(); List xaxisdata = new ArrayList(); CategoryAxis axis = new CategoryAxis(); xaxisList.add(axis); for(WarningSumDto dto : list) { seriesdata.add(dto.getSum()); xaxisdata.add(dto.getDeviceType().getValue()); } axis.setData(xaxisdata); Bar bar = new Bar(); bar.setData(seriesdata); option.xAxis(xaxisList); option.series(bar); return option; } /** * 获取功率条形图Option * * @return */ @RequestMapping(params = "getGonglvBar") @ResponseBody public Option getGonglvBar(HttpServletRequest request) { List list = null; try { list = dvservice.getGonglvData(null); } catch (Exception e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); } if(list == null || list.isEmpty()) { return null; } Option option = new Option(); List seriesdata = new ArrayList(); List yaxisList = new ArrayList(); List yaxisdata = new ArrayList(); CategoryAxis axis = new CategoryAxis(); yaxisList.add(axis); for(GonglvDto dto : list) { seriesdata.add(dto.getValue()); yaxisdata.add(dto.getName()); } axis.setData(yaxisdata); Bar bar = new Bar(); bar.setData(seriesdata); option.yAxis(yaxisList); option.series(bar); return option; } /** * 获取实时数据 * * @return */ @RequestMapping(params = "getLiveDataText") @ResponseBody public AjaxJson getLiveDataText(HttpServletRequest request) { AjaxJson json = new AjaxJson(); List list = dvservice.getSensorLiveTextDto(); if(list == null || list.isEmpty()) { json.setSuccess(false); json.setMsg("传感器数据维护中,请稍后..."); }else { HashMap map = new HashMap(); for(int i=0 ; i map = dvservice.getDeviceCode2ValueMap(); if(map == null || map.isEmpty()) { json.setSuccess(false); json.setMsg("传感器数据维护中,请稍后..."); }else { json.setAttributes(map); } return json; } /** * 获取RiLiJson * * @return */ @RequestMapping(params = "getRiLi") @ResponseBody public AjaxJson getRiLi(HttpServletRequest request, String startDate, String endDate) { AjaxJson json = new AjaxJson(); List list = dvservice.getDeviceStatusSumData(startDate, endDate); Map map = new HashMap<>(); if(list != null && !list.isEmpty()) { for(DeviceStatusSumDto dto : list) { map.put(dto.getSumDate(), dto); } } json.setAttributes(map); return json; } /** * 获取能耗折线图Option * * @return */ @RequestMapping(params = "getNenghaoLine") @ResponseBody public Option getNneghaoLine(HttpServletRequest request) { Option option = new Option(); List list=null; try { list = dvservice.getLastContinuousNenghaoData(6); } catch (Exception e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); } if(list == null || list.isEmpty()) { return null; } CategoryAxis axis = new CategoryAxis(); List xaxisdata = new ArrayList(); List seriesdata = new ArrayList(); for(NenghaoDto dto : list) { xaxisdata.add(dto.getYear() + "-" +dto.getMonth()); seriesdata.add(dto.getValue()); } axis.setData(xaxisdata); Line line = new Line(); line.setData(seriesdata); option.series(line); option.xAxis(axis); return option; } /** * 获取功率饼图Option * * @return */ @RequestMapping(params = "getGonglvPie") @ResponseBody public Option getGonglvPie(HttpServletRequest request) { List list = null; try { list = dvservice.getGonglvData(null); } catch (Exception e) { LogUtil.error(e.getMessage()); } if(list == null || list.isEmpty()) { return null; } Option option = new Option(); Legend legend = new Legend(); Pie pie = new Pie(); List legendData = new ArrayList(); List maplist= new ArrayList(); Double sum = 0.0; for(GonglvDto dto : list) { legendData.add(dto.getName()); Map map = new HashMap(); map.put("name",dto.getName()); map.put("value", dto.getValue()); maplist.add(map); sum += dto.getValue(); } //设置饼图数据 pie.setData(maplist); Title title = new Title(); DecimalFormat df = new DecimalFormat("#.00"); title.setText(df.format(sum)); // 设置标题 legend.data(legendData); option.setTitle(title); option.setLegend(legend); option.series(pie); return option; } }