lizijie
2021-11-11 40f616cb7b272efa6693585303cc98802827e8e1
报警信息按条件查询
6 files added
329 ■■■■■ changed files
screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java 60 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java 69 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java 22 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java 28 ●●●●● patch | view | raw | blame | history
screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java 116 ●●●●● patch | view | raw | blame | history
screen-api/src/main/resources/mapper/AlarmInfoMapper.xml 34 ●●●●● 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>