From 40f616cb7b272efa6693585303cc98802827e8e1 Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Thu, 11 Nov 2021 17:06:31 +0800 Subject: [PATCH] 报警信息按条件查询 --- screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java | 116 +++++++++++++++++++ screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java | 22 +++ screen-api/src/main/resources/mapper/AlarmInfoMapper.xml | 34 +++++ screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java | 60 ++++++++++ screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java | 69 +++++++++++ screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java | 28 ++++ 6 files changed, 329 insertions(+), 0 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java b/screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java new file mode 100644 index 0000000..9ad9d25 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/controller/AlarmInfoController.java @@ -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); + } + +} diff --git a/screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java b/screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java new file mode 100644 index 0000000..bc3a6bd --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/entity/AlarmInfo.java @@ -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; + } + +} diff --git a/screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java b/screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java new file mode 100644 index 0000000..308ad08 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/mapper/AlarmInfoMapper.java @@ -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); + +} diff --git a/screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java b/screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java new file mode 100644 index 0000000..437b71e --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/service/AlarmInfoService.java @@ -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); + +} diff --git a/screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java new file mode 100644 index 0000000..49e5647 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/service/impl/AlarmInfoServiceImpl.java @@ -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; + } +} diff --git a/screen-api/src/main/resources/mapper/AlarmInfoMapper.xml b/screen-api/src/main/resources/mapper/AlarmInfoMapper.xml new file mode 100644 index 0000000..c2ed097 --- /dev/null +++ b/screen-api/src/main/resources/mapper/AlarmInfoMapper.xml @@ -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> \ No newline at end of file -- Gitblit v1.8.0