From 409851cc3f33d3fd016e20518f90a2c093e9e1db Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Tue, 19 May 2020 16:58:54 +0800 Subject: [PATCH] alarm相关接口更新 --- src/main/java/com/moral/controller/AlarmController.java | 5 + src/main/resources/mapper/AlarmMapper.xml | 63 ++++++++++++++------- src/main/java/com/moral/mapper/AlarmMapper.java | 2 src/main/java/com/moral/service/impl/AlarmServiceImpl.java | 66 +++++++++++++++++----- src/main/java/com/moral/service/AlarmService.java | 3 5 files changed, 99 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/moral/controller/AlarmController.java b/src/main/java/com/moral/controller/AlarmController.java index a76d137..bb5a793 100644 --- a/src/main/java/com/moral/controller/AlarmController.java +++ b/src/main/java/com/moral/controller/AlarmController.java @@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; +import java.text.ParseException; import java.util.*; @RestController @@ -35,7 +36,7 @@ @Resource AlarmService alarmService; @RequestMapping(value = "/count-by-times", method = RequestMethod.GET) - public ResultBean<List<Map>> countByTimes(Date start, Date end,@RequestParam(value = "timeUnits")Optional<TimeUnits> timeUnits){ - return new ResultBean<>(alarmService.countByTimes(start,end,timeUnits.isPresent()?timeUnits.get():null)); + public ResultBean<List<Map>> countByTimes(Date start, Date end,@RequestParam(value = "timeUnits")Optional<TimeUnits> timeUnits) throws ParseException { + return new ResultBean<>(alarmService.countByTimes(start,end,timeUnits.isPresent()?timeUnits.get():null)); } } diff --git a/src/main/java/com/moral/mapper/AlarmMapper.java b/src/main/java/com/moral/mapper/AlarmMapper.java index aac5662..bbb4f18 100644 --- a/src/main/java/com/moral/mapper/AlarmMapper.java +++ b/src/main/java/com/moral/mapper/AlarmMapper.java @@ -10,5 +10,5 @@ public interface AlarmMapper extends BaseMapper<Alarm> { - List<Map> countByTimes(@Param("start")Date start, @Param("end")Date end, @Param("format")String format); + List<Map> countByTimes(@Param("start")Date start, @Param("end")Date end, @Param("format")String format,@Param("list") List<String> list); } \ No newline at end of file diff --git a/src/main/java/com/moral/service/AlarmService.java b/src/main/java/com/moral/service/AlarmService.java index dcad103..4d14b00 100644 --- a/src/main/java/com/moral/service/AlarmService.java +++ b/src/main/java/com/moral/service/AlarmService.java @@ -1,5 +1,6 @@ package com.moral.service; +import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Map; @@ -9,6 +10,6 @@ @SuppressWarnings("rawtypes") public interface AlarmService { - List<Map> countByTimes(Date start, Date end, TimeUnits timeUnits); + List<Map> countByTimes(Date start, Date end, TimeUnits timeUnits) throws ParseException; } diff --git a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java index 3386740..fb3e494 100644 --- a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java +++ b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java @@ -1,5 +1,9 @@ package com.moral.service.impl; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; @@ -14,25 +18,57 @@ import com.moral.service.HistoryMinutelyService; @Service -@SuppressWarnings({ "rawtypes" }) +@SuppressWarnings({"rawtypes"}) public class AlarmServiceImpl implements AlarmService { - @Resource - private AlarmMapper alarmMapper; + @Resource + private AlarmMapper alarmMapper; - @Resource - private HistoryMinutelyService historyMinutelyService; + @Resource + private HistoryMinutelyService historyMinutelyService; @Override - public List<Map> countByTimes(Date start, Date end, TimeUnits timeUnits){ - String format = null; - if(timeUnits!=null){ - switch (timeUnits){ - case MONTH: format = "%Y-%m"; - case DAY: format = "%Y-%m-%d"; - } - } + public List<Map> countByTimes(Date start, Date end, TimeUnits timeUnits) throws ParseException { + String format = null; + if (timeUnits != null) { + switch (timeUnits) { + case MONTH: + format = "%Y-%m"; + break; + case DAY: + format = "%Y-%m-%d"; + break; + default: + break; + } + } + if (start == null) { + Calendar cal = Calendar.getInstance(); + String s = cal.get(Calendar.YEAR) + ""; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); + start = sdf.parse(s); + } - return alarmMapper.countByTimes(start, end, format); - } + if (end == null) { + end = new Date(); + } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMM"); + + String[] starts = sdf.format(start).split("-"); + String[] ends = sdf.format(end).split("-"); + Date startTime = sdf1.parse(starts[0] + "" + starts[1]); + Date endTime = sdf1.parse(ends[0] + "" + ends[1]); + + Calendar cal = Calendar.getInstance(); + cal.setTime(startTime); + + List<String> list = new ArrayList<>(); + for (long d = cal.getTimeInMillis(); d <= endTime.getTime(); cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1), d = cal.getTimeInMillis()) { + list.add(sdf1.format(d)); + } + return alarmMapper.countByTimes(start, end, format, list); + + } } diff --git a/src/main/resources/mapper/AlarmMapper.xml b/src/main/resources/mapper/AlarmMapper.xml index e2a7007..f0cbc24 100644 --- a/src/main/resources/mapper/AlarmMapper.xml +++ b/src/main/resources/mapper/AlarmMapper.xml @@ -1,25 +1,46 @@ <?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.AlarmMapper"> - <select id="countByTimes" resultType="java.util.Map"> - select - <if test="format !=null"> - DATE_FORMAT(time,#{format}) as time, - </if> - COUNT(*) as count from alarm - <where> - <if test="start != null"> - time >= #{start} - </if> - <if test="end != null"> - and time - <![CDATA[ - <= - ]]> #{end} - </if> - </where> - <if test="format !=null"> - GROUP BY DATE_FORMAT(time,#{format}) ; - </if> - </select> + <select id="countByTimes" resultType="java.util.Map"> + select + <if test="format !=null"> + DATE_FORMAT(a.time,#{format}) as time, + </if> + count(*) as count + from + (<foreach collection="list" item="item" separator="union"> + select + * from + alarm_${item} + </foreach>) as a + where + a.time >= #{start} + and a.time + <![CDATA[<=]]> #{end} + <if test="format !=null"> + GROUP BY DATE_FORMAT(a.time,#{format}) ; + </if> + </select> + + <!-- <select id="countByTimes" resultType="java.util.Map"> + select + <if test="format !=null"> + DATE_FORMAT(time,#{format}) as time, + </if> + COUNT(*) as count from alarm + <where> + <if test="start != null"> + time >= #{start} + </if> + <if test="end != null"> + and time + <![CDATA[ + <= + ]]> #{end} + </if> + </where> + <if test="format !=null"> + GROUP BY DATE_FORMAT(time,#{format}) ; + </if> + </select>--> </mapper> \ No newline at end of file -- Gitblit v1.8.0