src/main/java/com/moral/controller/ReportController.java
@@ -2,7 +2,12 @@ import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.*; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; @@ -10,7 +15,6 @@ 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; @@ -104,7 +108,6 @@ String type = parameters.get("type").toString(); String time = parameters.get("time").toString(); System.out.println(parameters); String timeb = ""; if (parameters.get("timeb") == null) { timeb = parameters.get("time").toString(); src/main/java/com/moral/mapper/HistoryMinutelyMapper.java
@@ -24,7 +24,7 @@ * @param dataCondition * @return {format_time:string,e1:double,e2...............} */ List<Map<String, Object>> selectLineChartDateByCrieria(@Param("sensorKeys") List<String> sensorKeys, @Param("timePeriod") TimePeriod timePeriod, @Param("dataCondition") DataCondition dataCondition); List<Map<String, Object>> selectLineChartDateByCrieria(@Param("sensorKeys") List<String> sensorKeys, @Param("timePeriod") TimePeriod timePeriod, @Param("timeUnits") String timeUnits, @Param("dataCondition") DataCondition dataCondition); List<Map<String, Object>> getSensorData(Map<String, Object> parameters); src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -2,8 +2,11 @@ import java.math.BigDecimal; import java.text.ParseException; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.ArrayList; @@ -373,6 +376,24 @@ // String type = (String) parameters.get("type"); // parameters.putAll(getElementByType(type)); ParameterUtils.getElementByType(parameters); if (parameters.containsKey("timeUnits")) { if ("minutely".equals(parameters.get("timeUnits"))) { if (parameters.containsKey("time")) { String[] timeStr = parameters.get("time").toString().split("-"); int year = Integer.valueOf(timeStr[0]); int month = Integer.valueOf(timeStr[1]); String yearAndMonth; if (month < 10) { yearAndMonth = "minutely_" + year + "0" + month; } else { yearAndMonth = "minutely_" + year + month; } if (year >= 2020) { parameters.put("timeUnits", yearAndMonth); } } } } } String time = (String) parameters.get("time"); String format = (String) parameters.get("format"); @@ -508,7 +529,22 @@ */ public Map<String, List<Double>> queryOneLineChartDateByCrieria(List<String> sensorKeys, TimePeriod timePeriod, DataCondition dataCondition) { List<String> timeList = ReportTimeFormat.makeTimeList(timePeriod); List<Map<String, Object>> lineChartDatas = historyMinutelyMapper.selectLineChartDateByCrieria(sensorKeys, timePeriod, dataCondition); Instant instant = timePeriod.getStartTime().toInstant(); ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault()); LocalDate localDate = zdt.toLocalDate(); int year = localDate.getYear(); int month = localDate.getMonthValue(); String timeUnits; if (year < 2020) { timeUnits = "minutely"; } else { if (month < 10) { timeUnits = "minutely_" + year + "0" + month; } else { timeUnits = "minutely_" + year + month; } } List<Map<String, Object>> lineChartDatas = historyMinutelyMapper.selectLineChartDateByCrieria(sensorKeys, timePeriod, timeUnits, dataCondition); Map<String, List<Double>> lineChartDatasWithEmpty = new HashMap<>(); // lineChartDatasWithEmpty 初始化 sensorKeys.forEach(sensorKey -> { src/main/resources/mapper/HistoryMinutelyMapper.xml
@@ -139,7 +139,7 @@ DATE_FORMAT(time,'${@com.moral.common.util.ReportTimeFormat@toMySqlTimeFormat(timePeriod.timeUnits)}') as format_time FROM `history_minutely` hmi history_${timeUnits} hmi <where> and hmi.time >= #{timePeriod.startTime} and hmi.time <![CDATA[<=]]> #{timePeriod.endTime}