From 4a41bd4e105385b5460e5a81c8b67e5f701a262b Mon Sep 17 00:00:00 2001 From: fengxiang <110431245@qq.com> Date: Fri, 04 May 2018 08:55:13 +0800 Subject: [PATCH] 首页 工作台 --- src/main/java/com/moral/controller/DeviceController.java | 10 +++ src/main/java/com/moral/service/DeviceService.java | 7 ++ src/main/java/com/moral/controller/AlarmController.java | 18 +++-- src/main/resources/mapper/AlarmMapper.xml | 22 +++++++ src/main/resources/mapper/DeviceMapper.xml | 12 ++++ src/main/java/com/moral/mapper/AlarmMapper.java | 4 + src/main/java/com/moral/common/convert/StringToDateConverter.java | 28 +++++++-- src/main/java/com/moral/service/impl/AlarmServiceImpl.java | 18 ++++- src/main/java/com/moral/service/AlarmService.java | 8 ++ src/main/java/com/moral/mapper/DeviceMapper.java | 5 - src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 28 ++++++++ src/main/java/com/moral/common/util/StringUtils.java | 9 +++ 12 files changed, 142 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/moral/common/convert/StringToDateConverter.java b/src/main/java/com/moral/common/convert/StringToDateConverter.java index d08bc68..e016349 100644 --- a/src/main/java/com/moral/common/convert/StringToDateConverter.java +++ b/src/main/java/com/moral/common/convert/StringToDateConverter.java @@ -1,8 +1,11 @@ package com.moral.common.convert; +import com.moral.common.exception.BusinessException; import com.moral.common.util.StringUtils; +import org.apache.log4j.Logger; import org.springframework.core.convert.converter.Converter; - +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.Date; /** @@ -11,18 +14,31 @@ * @version $Id: StringToDateConverter.java, v 0.1 2015���9���24��� ������7:19:41 byshome Exp $ */ public class StringToDateConverter implements Converter<String, Date> { -// private static final String dateFormat = "yyyy-MM-dd HH:mm:ss"; + Logger log = Logger.getLogger(StringToDateConverter.class); + private static final String dateFormat = "yyyy-MM-dd HH:mm:ss"; // private static final String shortDateFormat = "yyyy-MM-dd"; - + private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); /** * @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object) */ @Override public Date convert(String source) { if(StringUtils.isNullOrEmpty(source)){ - throw new RuntimeException(String.format("parser %s to Date fail", source)); - }; - return new Date(Long.parseLong(source)); + throw new BusinessException(String.format("parser %s to Date fail", source)); + } + if("null".equals(source)){ + return null; + } + if(StringUtils.isNumericZidai(source)){ + return new Date(Long.parseLong(source)); + } + try { + return simpleDateFormat.parse(source); + } catch (ParseException e) { + e.printStackTrace(); + log.error(e.getMessage()); + } + return null; } } \ No newline at end of file diff --git a/src/main/java/com/moral/common/util/StringUtils.java b/src/main/java/com/moral/common/util/StringUtils.java index b6925d9..80635bf 100644 --- a/src/main/java/com/moral/common/util/StringUtils.java +++ b/src/main/java/com/moral/common/util/StringUtils.java @@ -132,4 +132,13 @@ sbuffer.append(suffix); return sbuffer.toString(); } + public static boolean isNumericZidai(String str) { + for (int i = 0; i < str.length(); i++) { + System.out.println(str.charAt(i)); + if (!Character.isDigit(str.charAt(i))) { + return false; + } + } + return true; + } } diff --git a/src/main/java/com/moral/controller/AlarmController.java b/src/main/java/com/moral/controller/AlarmController.java index 1287f2d..ce4cf51 100644 --- a/src/main/java/com/moral/controller/AlarmController.java +++ b/src/main/java/com/moral/controller/AlarmController.java @@ -1,26 +1,24 @@ package com.moral.controller; import com.alibaba.fastjson.JSON; +import com.moral.common.bean.ResultBean; import com.moral.entity.Alarm; import com.moral.entity.Device; import com.moral.entity.Sensor; import com.moral.entity.alarm.AlarmConfig; import com.moral.entity.alarm.AlarmConfigValue; -import com.moral.service.AlarmConfigService; -import com.moral.service.DeviceService; -import com.moral.service.HistoryService; -import com.moral.service.SensorService; +import com.moral.entity.charts.TimeUnits; +import com.moral.service.*; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @RestController @RequestMapping("alarm") @@ -34,6 +32,12 @@ HistoryService historyService; @Resource AlarmConfigService alarmConfigService; + @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)); + } /** * * @param alarm diff --git a/src/main/java/com/moral/controller/DeviceController.java b/src/main/java/com/moral/controller/DeviceController.java index 762416c..468425f 100644 --- a/src/main/java/com/moral/controller/DeviceController.java +++ b/src/main/java/com/moral/controller/DeviceController.java @@ -6,7 +6,9 @@ import com.moral.service.DeviceService; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.List; +import java.util.Map; import javax.annotation.Resource; @@ -16,6 +18,14 @@ public class DeviceController { @Resource DeviceService deviceService; + @GetMapping("count-by-example") + public ResultBean<Integer> countByExample(PageBean pageBean){ + return new ResultBean<Integer>(deviceService.countByExample(pageBean)); + } + @GetMapping("count-by-times") + public ResultBean<List<Map>> countByTimes(Date start, Date end){ + return new ResultBean<List<Map>>(deviceService.countByTimes(start,end,"%Y-%m")); + } @GetMapping("page-list") public PageBean pageList(PageBean pageBean) { return deviceService.queryByPageBean(pageBean); diff --git a/src/main/java/com/moral/mapper/AlarmMapper.java b/src/main/java/com/moral/mapper/AlarmMapper.java index a184316..1783b24 100644 --- a/src/main/java/com/moral/mapper/AlarmMapper.java +++ b/src/main/java/com/moral/mapper/AlarmMapper.java @@ -1,13 +1,15 @@ package com.moral.mapper; +import java.util.Date; import java.util.List; import java.util.Map; import com.moral.common.mapper.BaseMapper; import com.moral.entity.Alarm; +import org.apache.ibatis.annotations.Param; public interface AlarmMapper extends BaseMapper<Alarm> { List<Map<String, Object>> getAlarmData(Map<String, Object> parameters); - + List<Map> countByTimes(@Param("start")Date start, @Param("end")Date end, @Param("format")String format); } \ No newline at end of file diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java index b77c595..b0a8ae8 100644 --- a/src/main/java/com/moral/mapper/DeviceMapper.java +++ b/src/main/java/com/moral/mapper/DeviceMapper.java @@ -1,5 +1,6 @@ package com.moral.mapper; +import java.util.Date; import java.util.List; import java.util.Map; @@ -22,9 +23,7 @@ List<Device> selectByOrgIdAndMpId(@Param("orgId")Integer orgId,@Param("mpId")Integer mpId); List<Device> selectByMap(Map<String, Object> params); Device selectWithOrgIdsByMac(String mac); - List<Integer> getDeviceVersionIdByAreaCode(Map<String, Object> parameters); - Integer getDeviceCountByRegion(Map<String, Object> parameters); - + List<Map> countByTimes(@Param("start")Date start,@Param("end")Date end,@Param("format")String format); } \ 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 e3a8a45..4433a59 100644 --- a/src/main/java/com/moral/service/AlarmService.java +++ b/src/main/java/com/moral/service/AlarmService.java @@ -1,10 +1,16 @@ package com.moral.service; +import com.moral.entity.charts.TimeUnits; + +import java.util.Date; +import java.util.List; import java.util.Map; @SuppressWarnings("rawtypes") public interface AlarmService { - Map getPieData(Map<String, Object> parameters); + List<Map> countByTimes(Date start, Date end, TimeUnits timeUnits); + + Map getPieData(Map<String, Object> parameters); } diff --git a/src/main/java/com/moral/service/DeviceService.java b/src/main/java/com/moral/service/DeviceService.java index a4501a4..2c5be38 100644 --- a/src/main/java/com/moral/service/DeviceService.java +++ b/src/main/java/com/moral/service/DeviceService.java @@ -1,5 +1,6 @@ package com.moral.service; +import java.util.Date; import java.util.List; import java.util.Map; import com.moral.common.bean.PageBean; @@ -22,12 +23,16 @@ PageResult query(Integer orgId, Integer mpId, Integer pageSize, Integer pageNo); - PageBean queryByPageBean(PageBean pageBean); + int countByExample(PageBean pageBean); + + PageBean queryByPageBean(PageBean pageBean); void deleteByIds(Integer[] ids); void addOrModify(Device device); + List<Map> countByTimes(Date start, Date end, String format); + List<Device> getDevicesByMonitorPointId(Integer monitorPointId); List<Map<String,String>> queryDevicesState(List<String> macList,Boolean withData); diff --git a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java index 3d56965..c07e707 100644 --- a/src/main/java/com/moral/service/impl/AlarmServiceImpl.java +++ b/src/main/java/com/moral/service/impl/AlarmServiceImpl.java @@ -1,14 +1,11 @@ package com.moral.service.impl; import java.text.ParseException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import javax.annotation.Resource; +import com.moral.entity.charts.TimeUnits; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -25,7 +22,18 @@ @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"; + } + } + return alarmMapper.countByTimes(start, end, format); + } @Override public Map getPieData(Map<String, Object> parameters) { Map<String, Object> resultMap = new LinkedHashMap<String, Object>(); diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index a3c7ea1..58b7dc2 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -10,12 +10,14 @@ import com.moral.common.bean.Constants; import com.moral.common.bean.PageBean; import com.moral.common.bean.PageResult; +import com.moral.common.exception.BusinessException; import com.moral.common.util.ExampleUtil; import com.moral.common.util.RedisUtils; import com.moral.mapper.MonitorPointMapper; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; @@ -30,6 +32,7 @@ @Service public class DeviceServiceImpl implements DeviceService { + Logger log = Logger.getLogger(DeviceServiceImpl.class); //-----------------------redis key������-������--------------------------------- private static String AlARM = "alarm";//������������������key������ private static String ADJUST="adjust";//���������������key������ @@ -268,8 +271,17 @@ } } @Override - public PageBean queryByPageBean(PageBean pageBean) { + public int countByExample(PageBean pageBean){ Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); + addDeletesToExample(example); + return deviceMapper.selectCountByExample(example); + } + + /** + * ������������������������ + * @param example + */ + private void addDeletesToExample(Example example){ List<Example.Criteria> criteriaList = example.getOredCriteria(); if(criteriaList!=null&&criteriaList.size()>0){ for(Example.Criteria cri : criteriaList){ @@ -278,6 +290,11 @@ }else { example.or().andNotEqualTo("isDelete",Constants.IS_DELETE_TRUE); } + } + @Override + public PageBean queryByPageBean(PageBean pageBean) { + Example example = ExampleUtil.generateExample(ENTITY_CLASS,pageBean); + addDeletesToExample(example); if(pageBean.getPageSize()>0){ PageHelper.startPage(pageBean.getPageIndex(),pageBean.getPageSize()); } @@ -323,7 +340,14 @@ throw ex; } } - + @Override + public List<Map> countByTimes(Date start,Date end,String format){ + if(start==null||end==null||StringUtils.isBlank(format)){ + log.error("some params is null"); + throw new BusinessException("some params is null"); + } + return deviceMapper.countByTimes(start, end, format); + } @Override public List<Device> getDevicesByMonitorPointId(Integer monitorPointId) { Device device = new Device(); diff --git a/src/main/resources/mapper/AlarmMapper.xml b/src/main/resources/mapper/AlarmMapper.xml index a1f8c94..1417b37 100644 --- a/src/main/resources/mapper/AlarmMapper.xml +++ b/src/main/resources/mapper/AlarmMapper.xml @@ -75,5 +75,25 @@ </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 diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml index c13c908..c7924aa 100644 --- a/src/main/resources/mapper/DeviceMapper.xml +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -62,6 +62,18 @@ id, name, address, longitude, latitude, mac, operate_user_id, state, is_delete, create_time, install_time, monitor_point_id, device_version_id </sql> + <select id="countByTimes" resultType="java.util.Map"> + select DATE_FORMAT(create_time,#{format}) as time, COUNT(*) as count from device + where create_time >= #{start} + and create_time + <![CDATA[ + <= + ]]> #{end} + and is_delete <![CDATA[ + <> + ]]> 1 + GROUP BY DATE_FORMAT(create_time,#{format}) ; + </select> <select id="selectWithRelationData" parameterType="tk.mybatis.mapper.entity.Example" resultMap="BaseResultMap"> select dev.*, -- Gitblit v1.8.0