screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java | ●●●●● patch | view | raw | blame | history | |
screen-api/src/main/resources/mapper/AlarmInfoMapper.xml | ●●●●● patch | view | raw | blame | history |
screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java
New file @@ -0,0 +1,60 @@ package com.moral.api.controller; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.moral.api.entity.Organization; import com.moral.api.mapper.OrganizationMapper; import com.moral.api.service.AlarmInfoService; import com.moral.constant.ResponseCodeEnum; import com.moral.constant.ResultMessage; import com.moral.util.WebUtils; import io.swagger.annotations.Api; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; /** * @program: screen * @description: 报警信息 * @author: lizijie * @create: 2021-11-10 16:05 **/ @Slf4j @Api(tags = {"报警信息"}) @RestController @CrossOrigin(origins = "*", maxAge = 3600) @RequestMapping("/alarmInfo") public class AlarmInfoController { @Resource private OrganizationMapper organizationMapper; @Resource private AlarmInfoService alarmInfoService; @RequestMapping(value = "getDataByCondition", method = RequestMethod.GET) @ResponseBody public ResultMessage getDataByCondition(HttpServletRequest request){ Map<String, Object> parameters = WebUtils.getParametersStartingWith(request,null); Object orgid = parameters.get("organization_id"); Object startTime = parameters.get("startTime"); Object endTime = parameters.get("endTime"); Object index = parameters.get("index"); Object alarmType = parameters.get("alarmType"); Object size = parameters.get("size"); Object current = parameters.get("current"); if (ObjectUtils.isEmpty(orgid) || ObjectUtils.isEmpty(startTime) || ObjectUtils.isEmpty(endTime) || ObjectUtils.isEmpty(index) || ObjectUtils.isEmpty(alarmType) || ObjectUtils.isEmpty(size) || ObjectUtils.isEmpty(current)){ return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } Organization organization = organizationMapper.selectById(Integer.parseInt(orgid.toString())); if (ObjectUtils.isEmpty(organization)){ return ResultMessage.fail(ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getCode(), ResponseCodeEnum.ORGANIZATION_NOT_EXIST.getMsg()); } List<Map<String, Object>> resultList = alarmInfoService.getDataByCondition(parameters); return ResultMessage.ok(resultList); } } screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java
New file @@ -0,0 +1,69 @@ package com.moral.api.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.annotation.TableId; import java.time.LocalDateTime; import java.io.Serializable; import java.util.Date; import lombok.Data; import lombok.EqualsAndHashCode; /** * <p> * * </p> * * @author moral * @since 2021-11-10 */ @Data @EqualsAndHashCode(callSuper = false) public class AlarmInfo extends Model<AlarmInfo> { private static final long serialVersionUID = 1L; /** * id */ @TableId(value = "id", type = IdType.AUTO) private Integer id; /** * 报警时间 */ private LocalDateTime alarmTime; /** * 指标(因子) */ private String index; /** * 点位(设备) */ private Integer deviceId; /** * 报警类型 */ private String alarmType; /** * 报警信息 */ private String alarmInformation; /** * 创建时间 */ private Date createTime; @Override protected Serializable pkVal() { return this.id; } } screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java
New file @@ -0,0 +1,22 @@ package com.moral.api.mapper; import com.moral.api.entity.AlarmInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import java.util.List; import java.util.Map; /** * <p> * Mapper 接口 * </p> * * @author moral * @since 2021-11-10 */ public interface AlarmInfoMapper extends BaseMapper<AlarmInfo> { List<Map<String,Object>> selectDataByCondition(Map<String, Object> map); } screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java
New file @@ -0,0 +1,28 @@ package com.moral.api.service; import com.moral.api.entity.AlarmInfo; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; import java.util.Map; /** * <p> * 服务类 * </p> * * @author moral * @since 2021-11-10 */ public interface AlarmInfoService extends IService<AlarmInfo> { /** *@Description: 通过条件查询报警信息 *@Param: [map] *@return: java.util.List<com.moral.api.entity.AlarmInfo> *@Author: lizijie *@Date: 2021/11/10 16:18 **/ List<Map<String,Object>> getDataByCondition(Map<String, Object> parameters); } screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java
New file @@ -0,0 +1,116 @@ package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.moral.api.entity.AlarmInfo; import com.moral.api.entity.Device; import com.moral.api.entity.Organization; import com.moral.api.mapper.AlarmInfoMapper; import com.moral.api.mapper.DeviceMapper; import com.moral.api.service.AlarmInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.api.service.OrganizationService; import com.moral.constant.Constants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <p> * 服务实现类 * </p> * * @author moral * @since 2021-11-10 */ @Service public class AlarmInfoServiceImpl extends ServiceImpl<AlarmInfoMapper, AlarmInfo> implements AlarmInfoService { @Autowired private OrganizationService organizationService; @Autowired(required = false) private DeviceMapper deviceMapper; @Autowired(required = false) private AlarmInfoMapper alarmInfoMapper; @Override public List<Map<String, Object>> getDataByCondition(Map<String, Object> parameters) { int orgId = Integer.parseInt(parameters.get("organization_id").toString()); //定义一个集合,存放所有id List<Integer> allOrgId = new ArrayList<>(); allOrgId.add(orgId); //循环集合 //所有子组织 List<Organization> allChildrenOrganization = organizationService.getChildrenOrganizationsById(orgId); if (!ObjectUtils.isEmpty(allChildrenOrganization) || allChildrenOrganization.size() < 1){ for (Organization organization:allChildrenOrganization) { allOrgId.add(organization.getId()); } } //集合去重 List<Integer> allOrgIdWithoutDuplicates = allOrgId.stream().distinct().collect(Collectors.toList()); //声明一个list,存放设备id List<Integer> deviceIdList = new ArrayList<>(); for (Integer orgIdWithoutDuplicates:allOrgIdWithoutDuplicates) { //根据id查询所属设备 QueryWrapper<Device> wrapper_device = new QueryWrapper<>(); wrapper_device.eq("is_delete",Constants.NOT_DELETE).eq("organization_id",orgIdWithoutDuplicates); List<Device> devices = new ArrayList<>(); devices = deviceMapper.selectList(wrapper_device); if (devices.size()>0){ for (Device device:devices) { int deviceId = device.getId(); deviceIdList.add(deviceId); } }else { continue; } } if (deviceIdList.size()>0){ Map<String, Object> map = new HashMap<>(); map.put("deviceIds",deviceIdList); int size = Integer.parseInt(parameters.get("size").toString()); int current = Integer.parseInt(parameters.get("current").toString()); int start = (current-1)*size; map.put("size",size); map.put("start",start); String startTime = parameters.get("startTime")+" 00:00:00"; String endTime = parameters.get("endTime")+" 23:59:59"; map.put("startTime",startTime); map.put("endTime",endTime); String index = parameters.get("index").toString(); if (!index.equals("all")){ map.put("index",index); } String alarmType = parameters.get("alarmType").toString(); switch (alarmType){ case "超限":map.put("alarmType","超限"); break; case "突然高":map.put("alarmType","突然高"); break; case "国控站100":map.put("alarmType","超过国控站点100%"); break; case "国控站150":map.put("alarmType","超过国控站点150%"); break; case "国控站250":map.put("alarmType","超过国控站点250%"); break; case "市区均值150":map.put("alarmType","超过市区均值150%"); break; case "市区均值250":map.put("alarmType","超过市区均值250%"); break; default:break; } List<Map<String, Object>> resultList = alarmInfoMapper.selectDataByCondition(map); return resultList; } return null; } } screen-api/src/main/resources/mapper/AlarmInfoMapper.xml
New file @@ -0,0 +1,34 @@ <?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.api.mapper.AlarmInfoMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.moral.api.entity.AlarmInfo"> <id column="id" property="id" /> <result column="alarm_time" property="alarmTime" /> <result column="index" property="index" /> <result column="device_id" property="deviceId" /> <result column="alarm_type" property="alarmType" /> <result column="alarm_information" property="alarmInformation" /> <result column="create_time" property="createTime" /> </resultMap> <select id="selectDataByCondition" resultType="java.util.Map"> select ai.id alarmInfoId,ai.index,ai.alarm_type,ai.alarm_information,d.id deviceId,d.name deviceName,d.longitude,d.latitude from alarm_info ai, device d where ai.device_id in <foreach collection="deviceIds" item="deviceId" index="index" open="(" close=")" separator=","> #{deviceId} </foreach> and d.id = ai.device_id <if test="index != null"> and ai.index = #{index} </if> <if test="alarmType != null"> and ai.alarm_type = #{alarmType} </if> and alarm_time between #{startTime} and #{endTime} ORDER by ai.create_time DESC limit #{start},#{size} </select> </mapper>