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.text.SimpleDateFormat;
|
import java.util.*;
|
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 Map<String, Object> getDataByCondition(Map<String, Object> parameters) {
|
Map<String, Object> resultMap = new HashMap<>();
|
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<>();
|
QueryWrapper<AlarmInfo> alarmInfoQueryWrapper = new QueryWrapper<>();
|
map.put("deviceIds",deviceIdList);
|
alarmInfoQueryWrapper.in("device_id",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);
|
alarmInfoQueryWrapper.between("alarm_time", startTime, endTime);
|
String index = parameters.get("index").toString();
|
if (!index.equals("all")){
|
map.put("index",index);
|
alarmInfoQueryWrapper.eq("`index`", index);
|
}
|
String alarmType = parameters.get("alarmType").toString();
|
switch (alarmType){
|
case "overrun" : map.put("alarmType","超限");
|
alarmInfoQueryWrapper.eq("alarm_type","超限");
|
break;
|
case "sudden" : map.put("alarmType","突然高");
|
alarmInfoQueryWrapper.eq("alarm_type","突然高");
|
break;
|
case "state100" : map.put("alarmType","超过国控站点100%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过国控站点100%");
|
break;
|
case "state150" : map.put("alarmType","超过国控站点150%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过国控站点150%");
|
break;
|
case "state250" : map.put("alarmType","超过国控站点250%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过国控站点250%");
|
break;
|
case "city150" : map.put("alarmType","超过市区均值150%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过市区均值150%");
|
break;
|
case "city250" : map.put("alarmType","超过市区均值250%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过市区均值250%");
|
break;
|
default:break;
|
}
|
List<Map<String, Object>> resultList = alarmInfoMapper.selectDataByCondition(map);
|
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
for (Map<String, Object> alarmInfo:resultList) {
|
String alarm_time = SDF.format(alarmInfo.get("alarm_time"));
|
alarmInfo.put("alarm_time",alarm_time);
|
}
|
Integer totalNumber = alarmInfoMapper.selectCount(alarmInfoQueryWrapper);
|
resultMap.put("totalNumber", totalNumber);
|
resultMap.put("alarmInfos", resultList);
|
resultMap.put("current",current);
|
resultMap.put("size",size);
|
int totalPageNumber = totalNumber/size;
|
if(totalNumber%size != 0){
|
totalPageNumber += 1;
|
}
|
resultMap.put("totalPageNumber",totalPageNumber);
|
return resultMap;
|
}
|
return null;
|
}
|
|
@Override
|
public Map<String, Object> getDataByConditionWithoutPage(Map<String, Object> parameters) {
|
Map<String, Object> resultMap = new HashMap<>();
|
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<>();
|
QueryWrapper<AlarmInfo> alarmInfoQueryWrapper = new QueryWrapper<>();
|
map.put("deviceIds",deviceIdList);
|
alarmInfoQueryWrapper.in("device_id",deviceIdList);
|
String startTime = parameters.get("startTime")+" 00:00:00";
|
String endTime = parameters.get("endTime")+" 23:59:59";
|
map.put("startTime",startTime);
|
map.put("endTime",endTime);
|
alarmInfoQueryWrapper.between("alarm_time", startTime, endTime);
|
String index = parameters.get("index").toString();
|
if (!index.equals("all")){
|
map.put("index",index);
|
alarmInfoQueryWrapper.eq("`index`", index);
|
}
|
String alarmType = parameters.get("alarmType").toString();
|
switch (alarmType){
|
case "overrun" : map.put("alarmType","超限");
|
alarmInfoQueryWrapper.eq("alarm_type","超限");
|
break;
|
case "sudden" : map.put("alarmType","突然高");
|
alarmInfoQueryWrapper.eq("alarm_type","突然高");
|
break;
|
case "state100" : map.put("alarmType","超过国控站点100%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过国控站点100%");
|
break;
|
case "state150" : map.put("alarmType","超过国控站点150%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过国控站点150%");
|
break;
|
case "state250" : map.put("alarmType","超过国控站点250%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过国控站点250%");
|
break;
|
case "city150" : map.put("alarmType","超过市区均值150%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过市区均值150%");
|
break;
|
case "city250" : map.put("alarmType","超过市区均值250%");
|
alarmInfoQueryWrapper.eq("alarm_type","超过市区均值250%");
|
break;
|
default:break;
|
}
|
List<Map<String, Object>> resultList = alarmInfoMapper.selectDataByConditionWithoutPage(map);
|
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
for (Map<String, Object> alarmInfo:resultList) {
|
String alarm_time = SDF.format(alarmInfo.get("alarm_time"));
|
alarmInfo.put("alarm_time",alarm_time);
|
}
|
Integer totalNumber = alarmInfoMapper.selectCount(alarmInfoQueryWrapper);
|
resultMap.put("alarmInfos", resultList);
|
return resultMap;
|
}
|
return null;
|
}
|
|
@Override
|
public Map<String, Object> alarmReminder(Map<String, Object> parameters) {
|
Map<String,Object> resultMap = new HashMap<>();
|
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());
|
map.put("size",size);
|
List<Map<String, Object>> resultList = alarmInfoMapper.selectNewestData(map);
|
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
for (Map<String, Object> alarmInfo:resultList) {
|
String alarm_time = SDF.format(alarmInfo.get("alarm_time"));
|
alarmInfo.put("alarm_time",alarm_time);
|
}
|
resultMap.put("alarmInfors",resultList);
|
QueryWrapper<AlarmInfo> alarmInfoQueryWrapper = new QueryWrapper<>();
|
alarmInfoQueryWrapper.in("device_id",deviceIdList);
|
Integer totalNumber = alarmInfoMapper.selectCount(alarmInfoQueryWrapper);
|
resultMap.put("totalNumber",totalNumber);
|
return resultMap;
|
}
|
return null;
|
}
|
|
@Override
|
public Map<String, Object> alarmReminderByMonitorPointIds(Map<String, Object> parameters) {
|
Map<String, Object> resultMap = new HashMap<>();
|
String monitorPointIds = parameters.get("monitorPointIds").toString();
|
monitorPointIds.replace("[","");
|
monitorPointIds.replace("]","");
|
String[] monitorPointIdArray = monitorPointIds.split(",");
|
List<String> monitorPointIdList = new ArrayList<>(Arrays.asList(monitorPointIdArray));
|
//声明一个list,存放设备id
|
List<Integer> deviceIdList = new ArrayList<>();
|
//根据id查询所属设备
|
QueryWrapper<Device> wrapper_device = new QueryWrapper<>();
|
wrapper_device.eq("is_delete",Constants.NOT_DELETE);
|
wrapper_device.in("monitor_point_id",monitorPointIdList);
|
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);
|
}
|
}
|
if (deviceIdList.size()>0){
|
Map<String, Object> map = new HashMap<>();
|
map.put("deviceIds",deviceIdList);
|
int size = Integer.parseInt(parameters.get("size").toString());
|
map.put("size",size);
|
List<Map<String, Object>> resultList = alarmInfoMapper.selectNewestData(map);
|
SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
for (Map<String, Object> alarmInfo:resultList) {
|
String alarm_time = SDF.format(alarmInfo.get("alarm_time"));
|
alarmInfo.put("alarm_time",alarm_time);
|
}
|
resultMap.put("alarmInfors",resultList);
|
QueryWrapper<AlarmInfo> alarmInfoQueryWrapper = new QueryWrapper<>();
|
alarmInfoQueryWrapper.in("device_id",deviceIdList);
|
Integer totalNumber = alarmInfoMapper.selectCount(alarmInfoQueryWrapper);
|
resultMap.put("totalNumber",totalNumber);
|
return resultMap;
|
}
|
return null;
|
}
|
}
|