From 2c90ca6754397903904ca8efabb4c9c93889b970 Mon Sep 17 00:00:00 2001 From: xufenglei <xufenglei> Date: Mon, 05 Feb 2018 14:01:31 +0800 Subject: [PATCH] 报表 相关 --- src/main/java/com/moral/service/HistoryMinutelyService.java | 2 src/main/java/com/moral/mapper/HistoryMinutelyMapper.java | 2 src/main/resources/mapper/HistoryMinutelyMapper.xml | 6 src/main/java/com/moral/service/impl/AlarmUserServiceImpl.java | 4 src/main/java/com/moral/controller/ReportController.java | 8 src/main/java/com/moral/controller/ScreenController.java | 14 +- src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java | 221 +++++++++++++++++++++++-------------------- 7 files changed, 137 insertions(+), 120 deletions(-) diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java index a226e52..1726d19 100644 --- a/src/main/java/com/moral/controller/ReportController.java +++ b/src/main/java/com/moral/controller/ReportController.java @@ -18,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import com.moral.common.bean.ResultBean; -import com.moral.service.DataService; +import com.moral.service.HistoryMinutelyService; @RestController @RequestMapping("report") @@ -26,19 +26,19 @@ public class ReportController { @Resource - private DataService dataService; + private HistoryMinutelyService historyMinutelyService; @GetMapping("compare") public ResultBean<Map<String, List<Object>>> getCompareReport(HttpServletRequest request) throws Exception { Map<String, Object> parameters = getParametersStartingWith(request, null); - Map<String, List<Object>> demo = dataService.getCompareReport(parameters); + Map<String, List<Object>> demo = historyMinutelyService.getCompareReport(parameters); return new ResultBean<Map<String,List<Object>>>(demo); } @GetMapping("excel") public ResultBean<Boolean> getExcelReport(HttpServletRequest request,HttpServletResponse response) throws Exception { Map<String, Object> parameters = getParametersStartingWith(request, null); - List<Map<String, Object>> list = dataService.getMonitorPointOrDeviceAvgData4Excel(parameters); + List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData4Excel(parameters); String[][] exportColumn = new String[2][]; exportColumn[0] = new String[] { "������", "20", "time" }; if (parameters.containsKey("sensors")) { diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 6a1e617..4d1f9e2 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -20,6 +20,7 @@ import org.dom4j.io.SAXReader; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import com.alibaba.fastjson.JSON; @@ -28,7 +29,7 @@ import com.moral.common.bean.ResultBean; import com.moral.common.util.ValidateUtil; import com.moral.service.AccountService; -import com.moral.service.DataService; +import com.moral.service.HistoryMinutelyService; import com.moral.service.DeviceService; import com.moral.service.HistoryService; import com.moral.service.MachineActivateService; @@ -38,8 +39,8 @@ * The Class ScreenController.������������ */ @RestController -@RequestMapping("screen") -@CrossOrigin(origins = "*", maxAge = 3600) +@RequestMapping("/screen") +//@CrossOrigin(origins = "*", maxAge = 3600) public class ScreenController { /** The screen service. */ @@ -55,7 +56,7 @@ private DeviceService deviceService; @Resource - private DataService dataService; + private HistoryMinutelyService historyMinutelyService; @Resource private MachineActivateService machineActivateService; @@ -99,7 +100,8 @@ * the request * @return the equipment states */ - @GetMapping("equipment-state") + @GetMapping("/equipment-state") + @PreAuthorize("hasAnyRole('USER', 'ADMIN')") public Map<String, Object> getDeviceStatesByAccount(HttpServletRequest request) { Map<String, Object> parameters = getParametersStartingWith(request, null); return deviceService.getDeviceStatesByAccount(parameters); @@ -158,7 +160,7 @@ @GetMapping("day-aqi") public Map<String, Object> getDayAQIByDevice(HttpServletRequest request) { Map<String, Object> parameters = getParametersStartingWith(request, null); - return dataService.getDayAQIByDevice(parameters); + return historyMinutelyService.getDayAQIByDevice(parameters); } /** diff --git a/src/main/java/com/moral/mapper/DataMapper.java b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java similarity index 85% rename from src/main/java/com/moral/mapper/DataMapper.java rename to src/main/java/com/moral/mapper/HistoryMinutelyMapper.java index ced95c2..049989c 100644 --- a/src/main/java/com/moral/mapper/DataMapper.java +++ b/src/main/java/com/moral/mapper/HistoryMinutelyMapper.java @@ -3,7 +3,7 @@ import java.util.List; import java.util.Map; -public interface DataMapper{ +public interface HistoryMinutelyMapper{ Map<String, Double> getDayAQIByDevice(Map<String, Object> parameters); diff --git a/src/main/java/com/moral/service/DataService.java b/src/main/java/com/moral/service/HistoryMinutelyService.java similarity index 89% rename from src/main/java/com/moral/service/DataService.java rename to src/main/java/com/moral/service/HistoryMinutelyService.java index 9e1ca60..b5a38c3 100644 --- a/src/main/java/com/moral/service/DataService.java +++ b/src/main/java/com/moral/service/HistoryMinutelyService.java @@ -3,7 +3,7 @@ import java.util.List; import java.util.Map; -public interface DataService { +public interface HistoryMinutelyService { Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters); diff --git a/src/main/java/com/moral/service/impl/AlarmUserServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmUserServiceImpl.java index 76b5f8e..5e6a95a 100644 --- a/src/main/java/com/moral/service/impl/AlarmUserServiceImpl.java +++ b/src/main/java/com/moral/service/impl/AlarmUserServiceImpl.java @@ -35,8 +35,8 @@ public PageBean<AlarmUser> getalarmUserList(Map<String, Object> parameters) { Example example = new Example(AlarmUser.class); Criteria criteria = example.createCriteria(); - if (parameters.containsKey("alarmUserName")) { - criteria.andLike("alarmUserName", "%" + (String) parameters.get("alarmUserName") + "%"); + if (parameters.containsKey("name")) { + criteria.andLike("name", "%" + (String) parameters.get("name") + "%"); } if (parameters.containsKey("mobile")) { criteria.andLike("mobile", "%" + (String) parameters.get("mobile") + "%"); diff --git a/src/main/java/com/moral/service/impl/DataServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java similarity index 71% rename from src/main/java/com/moral/service/impl/DataServiceImpl.java rename to src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java index fd3ca59..8ede45f 100644 --- a/src/main/java/com/moral/service/impl/DataServiceImpl.java +++ b/src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java @@ -15,8 +15,8 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; +import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutorCompletionService; @@ -33,16 +33,16 @@ import com.moral.common.util.ResourceUtil; import com.moral.common.util.ValidateUtil; import com.moral.entity.Device; -import com.moral.mapper.DataMapper; +import com.moral.mapper.HistoryMinutelyMapper; import com.moral.mapper.DeviceMapper; import com.moral.mapper.SensorMapper; -import com.moral.service.DataService; +import com.moral.service.HistoryMinutelyService; @Service -public class DataServiceImpl implements DataService { +public class HistoryMinutelyServiceImpl implements HistoryMinutelyService { @Resource - private DataMapper dataMapper; + private HistoryMinutelyMapper historyMinutelyMapper; @Resource private DeviceMapper deviceMapper; @@ -60,7 +60,7 @@ parameters.put("start", truncate(addDays(date, -1), Calendar.DATE)); // ������00:00:00 parameters.put("end", truncate(date, Calendar.DATE)); - Map<String, Double> average = dataMapper.getDayAQIByDevice(parameters); + Map<String, Double> average = historyMinutelyMapper.getDayAQIByDevice(parameters); return getAQIByDataMap(average); } @@ -122,100 +122,110 @@ resultMap.put("c", null); return resultMap; } - - String type = (String) parameters.get("type"); - String time = (String) parameters.get("time"); - String format = (String) parameters.get("format"); - Date start = DateUtils.parseDate(time, format), end = null ; - if (parameters.containsKey("timeb")) { - end = DateUtils.parseDate((String)parameters.get("timeb"), format); - } else { - switch (type) { - case "year": - end = DateUtils.addYears(start, 1); - break; - case "month": - end = DateUtils.addMonths(start, 1); - break; - case "day": - end = DateUtils.addDays(start, 1); - break; - case "hour": - end = DateUtils.addHours(start, 1); - break; - } - - } - parameters.put("start", start); - parameters.put("end", end); - - String sensorKey = (String) parameters.get("sensorKey"); - String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; - parameters.put("sensorKeyColumn", sensorKeyColumn); + List<Map<String, Object>> resultList = getMonitorPointOrDeviceAvgData4Excel(parameters); +// String type = (String) parameters.get("type"); +// String time = (String) parameters.get("time"); +// String format = (String) parameters.get("format"); +// Date start = DateUtils.parseDate(time, format), end = null ; +// if (parameters.containsKey("timeb")) { +// end = DateUtils.parseDate((String)parameters.get("timeb"), format); +// } else { +// switch (type) { +// case "year": +// end = DateUtils.addYears(start, 1); +// break; +// case "month": +// end = DateUtils.addMonths(start, 1); +// break; +// case "day": +// end = DateUtils.addDays(start, 1); +// break; +// case "hour": +// end = DateUtils.addHours(start, 1); +// break; +// } +// +// } +// parameters.put("start", start); +// parameters.put("end", end); +// +// String sensorKey = (String) parameters.get("sensorKey"); +// String sensorKeyColumn = "AVG(json -> '$." + sensorKey + "[0]') " + sensorKey; +// parameters.put("sensorKeyColumn", sensorKeyColumn); +// List<Object> timeList = new ArrayList<Object>(); +// List<Object> dataList = new ArrayList<Object>(); +// +// if (!parameters.containsKey("mac")) { +// Integer monitorPointId = Integer.valueOf((String) parameters.get("monitorPoint")); +// List<Map<String, Object>> deviceVersions = deviceMapper.getDeviceVersionIdByMonitorPoint(monitorPointId); +// ExecutorService threadPool = Executors.newCachedThreadPool(); +// CompletionService<List<Map<String, Object>>> cs = new ExecutorCompletionService<List<Map<String, Object>>>(threadPool); +// //List<Future<Long>> list = new ArrayList<Future<Long>>(); +// List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); +// for (Map<String, Object> map : deviceVersions) { +// cs.submit(new Callable<List<Map<String, Object>>>() { +// @Override +// public List<Map<String, Object>> call() throws Exception { +// Integer deviceVersionId = (Integer) map.get("deviceVersionId"); +// List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); +// parameters.put("macs", macs); +// return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); +// } +// }); +// } +// //Future<List<Map<String, Object>>> take = cs.take(); +// for (Map<String, Object> map : deviceVersions) { +// list.addAll(cs.take().get()); +// } +// Map<String, Map<String, Number>> result = new LinkedHashMap<String, Map<String, Number>>(); +// for (Map<String, Object> map : list) { +// time = (String) map.get("time"); +// if (map.containsKey(sensorKey)) { +// Double data = (Double) map.get(sensorKey); +// Map<String, Number> number; +// Double sum; +// Integer count; +// if (result.containsKey(time)) { +// number = result.get(time); +// count = 1 + (Integer) number.get("count"); +// sum = data + (Double) number.get("sum"); +// } else { +// number = new HashMap<String, Number>(); +// count = 1; +// sum = data; +// } +// number.put("count", count); +// number.put("sum", sum); +// number.put("avg", sum / count); +// result.put(time, number); +// } +// } +// Iterator<Entry<String, Map<String, Number>>> iterator= result.entrySet().iterator(); +// while(iterator.hasNext()){ +// Entry<String, Map<String, Number>> entry = iterator.next(); +// String key = entry.getKey(); +// timeList.add(key.substring(key.length() - 2)); +// dataList.add(entry.getValue().get("avg")); +// } +// +// } else { +// List<Map<String, Object>> demo1 = historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); +// for (Map<String, Object> map : demo1) { +// time = map.get("time").toString(); +// time =time.substring(time.length() - 2); +// timeList.add(time); +// dataList.add(map.get(sensorKey)); +// } +// } + List<Object> timeList = new ArrayList<Object>(); List<Object> dataList = new ArrayList<Object>(); - - if (!parameters.containsKey("mac")) { - Integer monitorPointId = Integer.valueOf((String) parameters.get("monitorPoint")); - List<Map<String, Object>> deviceVersions = deviceMapper.getDeviceVersionIdByMonitorPoint(monitorPointId); - ExecutorService threadPool = Executors.newCachedThreadPool(); - CompletionService<List<Map<String, Object>>> cs = new ExecutorCompletionService<List<Map<String, Object>>>(threadPool); - //List<Future<Long>> list = new ArrayList<Future<Long>>(); - List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); - for (Map<String, Object> map : deviceVersions) { - cs.submit(new Callable<List<Map<String, Object>>>() { - @Override - public List<Map<String, Object>> call() throws Exception { - Integer deviceVersionId = (Integer) map.get("deviceVersionId"); - List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); - parameters.put("macs", macs); - return dataMapper.getMonitorPointOrDeviceAvgData(parameters); - } - }); - } - //Future<List<Map<String, Object>>> take = cs.take(); - for (Map<String, Object> map : deviceVersions) { - list.addAll(cs.take().get()); - } - Map<String, Map<String, Number>> result = new LinkedHashMap<String, Map<String, Number>>(); - for (Map<String, Object> map : list) { - time = (String) map.get("time"); - if (map.containsKey(sensorKey)) { - Double data = (Double) map.get(sensorKey); - Map<String, Number> number; - Double sum; - Integer count; - if (result.containsKey(time)) { - number = result.get(time); - count = 1 + (Integer) number.get("count"); - sum = data + (Double) number.get("sum"); - } else { - number = new HashMap<String, Number>(); - count = 1; - sum = data; - } - number.put("count", count); - number.put("sum", sum); - number.put("avg", sum / count); - result.put(time, number); - } - } - Iterator<Entry<String, Map<String, Number>>> iterator= result.entrySet().iterator(); - while(iterator.hasNext()){ - Entry<String, Map<String, Number>> entry = iterator.next(); - String key = entry.getKey(); - timeList.add(key.substring(key.length() - 2)); - dataList.add(entry.getValue().get("avg")); - } - - } else { - List<Map<String, Object>> demo1 = dataMapper.getMonitorPointOrDeviceAvgData(parameters); - for (Map<String, Object> map : demo1) { - time = map.get("time").toString(); - time =time.substring(time.length() - 2); - timeList.add(time); - dataList.add(map.get(sensorKey)); - } + String sensorKey = (String) parameters.get("sensorKey"); + for (Map<String, Object> map : resultList) { + String time = map.get("time").toString(); + time =time.substring(time.length() - 2); + timeList.add(time); + dataList.add(map.get(sensorKey)); } String part = (String) parameters.get("part"); resultMap.put("time" + part, timeList); @@ -238,7 +248,9 @@ parametersB.put("part", "B"); parametersB.put("time", parametersB.get("timeb")); parametersB.put("monitorPoint", parametersB.get("monitorPointb")); - parametersB.put("mac", parametersB.get("macb")); + if (parameters.containsKey("macb")) { + parametersB.put("mac", parametersB.get("macb")); + } parametersB.remove("timeb"); } List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); @@ -358,10 +370,13 @@ parameters.put("sensors", sensorKeys); } List<String> macs = deviceMapper.getDeviceMacByMonitorPointAndDeviceVersion(monitorPointId, deviceVersionId); - parameter.put("macs", macs); - return dataMapper.getMonitorPointOrDeviceAvgData(parameter); + if (ObjectUtils.isEmpty(macs) || macs.contains("null") ) { + return new ArrayList<Map<String,Object>>(); + }else { + parameter.put("macs", macs); + return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameter); + } } - }); } for (Map<String, Object> map : deviceVersions) { @@ -417,7 +432,7 @@ parameters.put("sensors", sensorKeys); } - resul = dataMapper.getMonitorPointOrDeviceAvgData(parameters); + resul = historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters); } return resul; } diff --git a/src/main/resources/mapper/DataMapper.xml b/src/main/resources/mapper/HistoryMinutelyMapper.xml similarity index 90% rename from src/main/resources/mapper/DataMapper.xml rename to src/main/resources/mapper/HistoryMinutelyMapper.xml index a3b7206..99b0cb4 100644 --- a/src/main/resources/mapper/DataMapper.xml +++ b/src/main/resources/mapper/HistoryMinutelyMapper.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> -<mapper namespace="com.moral.mapper.DataMapper"> +<mapper namespace="com.moral.mapper.HistoryMinutelyMapper"> <select id="getDayAQIByDevice" resultType="map"> SELECT @@ -11,7 +11,7 @@ AVG(json -> '$.e15[0]') e15, AVG(json -> '$.e16[0]') e16 FROM - data + history_minutely WHERE mac = #{mac} AND time >= #{start} @@ -23,7 +23,7 @@ DATE_FORMAT(time, #{typeFormat}) time, ${sensorKeyColumn} FROM - data h + history_minutely h WHERE h.time >= #{start} AND h.time <![CDATA[<]]> #{end} -- Gitblit v1.8.0