From 59ea47acd477c8681cd1a2a59be53e69eab9fba0 Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Thu, 07 May 2020 08:58:02 +0800 Subject: [PATCH] update导出报表 --- src/main/java/com/moral/service/impl/SensorServiceImpl.java | 57 +++++++++++++++++++ src/main/java/com/moral/controller/ReportController.java | 80 ++++++-------------------- src/main/java/com/moral/service/SensorService.java | 4 + 3 files changed, 81 insertions(+), 60 deletions(-) diff --git a/src/main/java/com/moral/controller/ReportController.java b/src/main/java/com/moral/controller/ReportController.java index 4925ff3..5d90395 100644 --- a/src/main/java/com/moral/controller/ReportController.java +++ b/src/main/java/com/moral/controller/ReportController.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -15,6 +14,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.StringUtils; import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; @@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import com.alibaba.fastjson.JSONObject; import com.moral.common.bean.ResultBean; import com.moral.common.util.ParameterUtils; import com.moral.common.util.WebUtils; @@ -36,6 +35,7 @@ import com.moral.service.HistoryDailyService; import com.moral.service.HistoryMinutelyService; import com.moral.service.MonitorPointService; +import com.moral.service.SensorService; import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelWriter; @@ -57,6 +57,9 @@ @Resource private MonitorPointService monitorPointService; + + @Resource + private SensorService sensorService; @GetMapping("compare") public ResultBean<Map<String, List>> getCompareReport(HttpServletRequest request) throws Exception { @@ -97,11 +100,11 @@ public ResultBean<Boolean> getNExcelReport(HttpServletRequest request, HttpServletResponse response) throws Exception { Map<String, Object> parameters = getParametersStartingWith(request, null); List<Map<String, Object>> list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); - ArrayList<String> sensorKeys = (ArrayList<String>)parameters.get("sensorKeys"); + ArrayList<String> sensorKeys = (ArrayList<String>) parameters.get("sensorKeys"); for (Map<String, Object> map : list) { for (String sensorKey : sensorKeys) { - if(map.get(sensorKey)==null){ - map.put(sensorKey,""); + if (map.get(sensorKey) == null) { + map.put(sensorKey, ""); } } } @@ -160,11 +163,11 @@ beginTime = time + " 00"; endTime = timeb + " 23"; i = Calendar.HOUR_OF_DAY; - }else if(type.equals("hour")){ - dateFormat="yyyy-MM-dd HH:mm"; - beginTime=time+":00:00"; - endTime=timeb+":59:00"; - i=Calendar.MINUTE; + } else if (type.equals("hour")) { + dateFormat = "yyyy-MM-dd HH:mm"; + beginTime = time + ":00:00"; + endTime = timeb + ":59:00"; + i = Calendar.MINUTE; } SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); @@ -262,25 +265,10 @@ Map<String, Object> parameters = getParametersStartingWith(request, null); ParameterUtils.getTimeType4Time(parameters); String sensorsInfo = parameters.get("sensors").toString(); - String[] sensorsStr = sensorsInfo.split(","); - List<String> sensorKeys = new ArrayList<>(); - List<String> sensorKeysNames = new ArrayList<>(); - List<String> sensorKeysUnits = new ArrayList<>(); - for (int index = 0; index < sensorsStr.length; index++) { - String[] split = sensorsStr[index].split("-"); - String key; - if (index == 0) { - key = split[0].replace("\"", "").substring(1); - } else { - key = split[0].replace("\"", ""); - } - String name = split[1].replace("\"", ""); - String Unit = split[2].replace("\"", ""); - sensorKeys.add(key); - sensorKeysNames.add(name); - sensorKeysUnits.add(Unit); - } - parameters.put("sensorKeys", sensorKeys); + String sensorsInfoNew = StringUtils.strip(sensorsInfo, "[]"); + String[] sensorsStr = sensorsInfoNew.split(","); + List<List<String>> sensorInfos = sensorService.listSensorInfos(sensorsStr); + parameters.put("sensorKeys", sensorInfos.get(0)); List<String> macList = new ArrayList<>(); List<MonitorPoint> monitorPoints = monitorPointService.getMonitorPointsAndDevicesByRegion(parameters); for (MonitorPoint m : monitorPoints) { @@ -293,44 +281,16 @@ if (!CollectionUtils.isEmpty(macList)) { list = historyMinutelyService.getDevicesSensorsAvgDataToExcel(parameters); } - List<List<Map<String, Object>>> sheets = new ArrayList<>(); - for (int i = 0; i < sensorKeys.size(); i++) { - List<Map<String, Object>> sheet = new ArrayList<>(); - for (int j = 0; j < list.size(); j++) { - Map<String, Object> data = new LinkedHashMap<>(); - for (Map.Entry<String, Object> kv : list.get(j).entrySet()) { - if ("monitorPointName".equals(kv.getKey())) { - data.put("������������(������:" + sensorKeysUnits.get(i) + ")", kv.getValue()); - } else if ("name".equals(kv.getKey())) { - data.put("������������", kv.getValue()); - } else { - String sensorsValue = kv.getValue().toString(); - JSONObject jsonObject = JSONObject.parseObject(sensorsValue); - if (jsonObject != null) { - List<Object> sensorsValueList = (List<Object>) jsonObject.get(sensorKeys.get(i)); - if (sensorsValueList != null) { - data.put(kv.getKey(), sensorsValueList.get(0)); - } else { - data.put(kv.getKey(), ""); - } - } else { - data.put(kv.getKey(), ""); - } - } - } - sheet.add(data); - } - sheets.add(sheet); - } + List<List<Map<String, Object>>> sheets = sensorService.listExcelDatas(sensorInfos, list); if (!CollectionUtils.isEmpty(sheets)) { - ExcelWriter writer = new ExcelWriter(false, sensorKeysNames.get(0)); + ExcelWriter writer = new ExcelWriter(false, sensorInfos.get(1).get(0)); writer.write(sheets.get(0), true); writer.autoSizeColumnAll(); writer.setColumnWidth(0, 25); writer.setColumnWidth(1, 25); if (sheets.size() >= 2) { for (int i = 1; i < sheets.size(); i++) { - writer.setSheet(sensorKeysNames.get(i)); + writer.setSheet(sensorInfos.get(1).get(i)); writer.write(sheets.get(i), true); writer.autoSizeColumnAll(); writer.setColumnWidth(0, 25); diff --git a/src/main/java/com/moral/service/SensorService.java b/src/main/java/com/moral/service/SensorService.java index b96018f..7d4f48e 100644 --- a/src/main/java/com/moral/service/SensorService.java +++ b/src/main/java/com/moral/service/SensorService.java @@ -37,4 +37,8 @@ List<Sensor> selectSenosrsByOrgId(Map<String, Object> parameters); + List<List<String>> listSensorInfos(String[] sensorsResult); + + List<List<Map<String, Object>>> listExcelDatas(List<List<String>> sensorInfos, List<Map<String, Object>> list); + } diff --git a/src/main/java/com/moral/service/impl/SensorServiceImpl.java b/src/main/java/com/moral/service/impl/SensorServiceImpl.java index 7d0c013..21b15ac 100644 --- a/src/main/java/com/moral/service/impl/SensorServiceImpl.java +++ b/src/main/java/com/moral/service/impl/SensorServiceImpl.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -11,6 +12,7 @@ import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; +import com.alibaba.fastjson.JSONObject; import com.moral.common.bean.PageBean; import com.moral.common.util.MyBatisBaseMapUtil; import com.moral.entity.Device; @@ -168,4 +170,59 @@ return sensors; } + @Override + public List<List<String>> listSensorInfos(String[] sensorsResult) { + List<String> sensorKeys = new ArrayList<>(); + List<String> sensorKeysNames = new ArrayList<>(); + List<String> sensorKeysUnits = new ArrayList<>(); + List<List<String>> sensorInfos = new ArrayList<>(); + for (int index = 0; index < sensorsResult.length; index++) { + String[] split = sensorsResult[index].split("-"); + String key = split[0].replace("\"", ""); + String name = split[1].replace("\"", ""); + String Unit = split[2].replace("\"", ""); + sensorKeys.add(key); + sensorKeysNames.add(name); + sensorKeysUnits.add(Unit); + } + sensorInfos.add(sensorKeys); + sensorInfos.add(sensorKeysNames); + sensorInfos.add(sensorKeysUnits); + return sensorInfos; + } + + @Override + public List<List<Map<String, Object>>> listExcelDatas(List<List<String>> sensorInfos, List<Map<String, Object>> list) { + List<List<Map<String, Object>>> sheets = new ArrayList<>(); + for (int i = 0; i < sensorInfos.get(0).size(); i++) { + List<Map<String, Object>> sheet = new ArrayList<>(); + for (int j = 0; j < list.size(); j++) { + Map<String, Object> data = new LinkedHashMap<>(); + for (Map.Entry<String, Object> kv : list.get(j).entrySet()) { + if ("monitorPointName".equals(kv.getKey())) { + data.put("������������(������:" + sensorInfos.get(2).get(i) + ")", kv.getValue()); + } else if ("name".equals(kv.getKey())) { + data.put("������������", kv.getValue()); + } else { + String sensorsValue = kv.getValue().toString(); + JSONObject jsonObject = JSONObject.parseObject(sensorsValue); + if (jsonObject != null) { + List<Object> sensorsValueList = (List<Object>) jsonObject.get(sensorInfos.get(0).get(i)); + if (sensorsValueList != null) { + data.put(kv.getKey(), sensorsValueList.get(0)); + } else { + data.put(kv.getKey(), ""); + } + } else { + data.put(kv.getKey(), ""); + } + } + } + sheet.add(data); + } + sheets.add(sheet); + } + return sheets; + } + } -- Gitblit v1.8.0