package com.ruoyi.alarm.globalAlarm.service.impl;
|
|
import com.alibaba.fastjson2.JSONObject;
|
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmCondition;
|
import com.ruoyi.alarm.globalAlarm.domain.GlobalAlarmData;
|
import com.ruoyi.alarm.globalAlarm.service.IGlobalAlarmService;
|
import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec;
|
import com.ruoyi.alarm.stealAlarm.mapper.ArdAlarmStealelecMapper;
|
import com.ruoyi.alarm.tubeAlarm.domain.ArdAlarmTube;
|
import com.ruoyi.alarm.tubeAlarm.mapper.ArdAlarmTubeMapper;
|
import com.ruoyi.alarm.tubeAlarm.service.IArdAlarmTubeService;
|
import com.ruoyi.alarmpoints.tube.domain.ArdTubes;
|
import com.ruoyi.alarmpoints.tube.domain.ArdTubesDetails;
|
import com.ruoyi.alarmpoints.tube.mapper.ArdTubesDetailsMapper;
|
import com.ruoyi.alarmpoints.tube.mapper.ArdTubesMapper;
|
import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
|
import com.ruoyi.alarmpoints.well.mapper.ArdAlarmpointsWellMapper;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.uuid.UUID;
|
import com.ruoyi.system.service.ISysConfigService;
|
import com.ruoyi.utils.tube.GeoPoint;
|
import com.ruoyi.utils.tube.TubeTools;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.poi.ss.formula.functions.T;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
|
import static jdk.nashorn.internal.runtime.regexp.joni.Config.log;
|
|
/**
|
* @ClassName: globalAlarmServiceImpl
|
* @Description:
|
* @Author: Administrator
|
* @Date: 2023年03月10日 11:03
|
* @Version: 1.0
|
**/
|
@Service
|
@Slf4j(topic = "mqtt")
|
public class GlobalAlarmServiceImpl implements IGlobalAlarmService {
|
@Resource
|
ArdAlarmStealelecMapper ardAlarmStealelecMapper;
|
@Resource
|
ArdAlarmTubeMapper ardAlarmTubeMapper;
|
@Resource
|
ArdTubesMapper ardTubesMapper;
|
@Resource
|
ArdAlarmpointsWellMapper ardAlarmpointsWellMapper;
|
@Resource
|
ArdTubesDetailsMapper ardTubesDetailsMapper;
|
@Resource
|
private ISysConfigService configService;
|
|
@Override
|
public List<GlobalAlarmData> selectAlarmLogs(GlobalAlarmCondition condition) {
|
String refreshTime = configService.selectConfigByKey("refreshTime");
|
switch (condition.getCommand()) {
|
case 1001:
|
List<ArdAlarmStealelec> ardAlarmStealelecs = ardAlarmStealelecMapper.selectListAllByCommand(refreshTime);
|
return ardAlarmStealelecs.stream()
|
.map(ardAlarmStealelec -> {
|
GlobalAlarmData globalAlarmData = new GlobalAlarmData()
|
.setId(ardAlarmStealelec.getId())
|
.setName(ardAlarmStealelec.getDescribe())
|
.setAlarmTime(ardAlarmStealelec.getStartTime())
|
.setLongitude(ardAlarmStealelec.getLongitude())
|
.setLatitude(ardAlarmStealelec.getLatitude())
|
.setAltitude(ardAlarmStealelec.getAltitude())
|
.setCount(ardAlarmStealelec.getCount())
|
.setTotal(ardAlarmStealelec.getTotal());
|
return globalAlarmData;
|
})
|
.collect(Collectors.toList());
|
case 1014:
|
List<ArdAlarmTube> ardAlarmTubes = ardAlarmTubeMapper.selectListAllByCommand(refreshTime);
|
return ardAlarmTubes.stream()
|
.map(ardAlarmTube -> {
|
GlobalAlarmData globalAlarmData = new GlobalAlarmData()
|
.setId(ardAlarmTube.getId())
|
.setName(ardAlarmTube.getTubeName())
|
.setAlarmTime(ardAlarmTube.getAlarmTime())
|
.setLongitude(ardAlarmTube.getLongitude())
|
.setLatitude(ardAlarmTube.getLatitude())
|
.setAltitude(ardAlarmTube.getAltitude())
|
.setCount(ardAlarmTube.getCount())
|
.setTotal(ardAlarmTube.getTotal());
|
return globalAlarmData;
|
})
|
.collect(Collectors.toList());
|
default:
|
return null;
|
}
|
}
|
|
@Override
|
public Object updateAlarmViewTime(GlobalAlarmCondition condition) {
|
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
switch (condition.getCommand()) {
|
case 1001:
|
ArdAlarmStealelec ardAlarmStealelec = ardAlarmStealelecMapper.selectByPrimaryKey(condition.getId());
|
if(StringUtils.isNotNull(ardAlarmStealelec)) {
|
String describe = ardAlarmStealelec.getDescribe();
|
String startTime = fmt.format(ardAlarmStealelec.getStartTime());
|
int i = ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, startTime, DateUtils.getTime());
|
return ardAlarmStealelec;
|
}
|
case 1014:
|
ArdAlarmTube ardAlarmTube = ardAlarmTubeMapper.selectArdAlarmTubeById(condition.getId());
|
if(StringUtils.isNotNull(ardAlarmTube)) {
|
String tubeId = ardAlarmTube.getTubeId();
|
String alarmTime = fmt.format(ardAlarmTube.getAlarmTime());
|
int i = ardAlarmTubeMapper.updateViewTimeByTubeId(tubeId, alarmTime, DateUtils.getTime());
|
return ardAlarmTube;
|
}
|
default: return null;
|
}
|
}
|
|
@Override
|
@Async("alarmExecutor")
|
public void receiveAlarm(String topic, String message) {
|
String uuid = UUID.randomUUID().toString().replace("-", "");
|
switch (topic) {
|
case "stealelec":
|
ArdAlarmStealelec ardAlarmStealelec = JSONObject.parseObject(message, ArdAlarmStealelec.class);
|
ArdAlarmpointsWell well = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(ardAlarmStealelec.getDescribe());
|
if(well!=null)
|
{
|
ardAlarmStealelec.setLongitude(well.getLongitude());
|
ardAlarmStealelec.setLatitude(well.getLatitude());
|
ardAlarmStealelec.setDeptId(well.getDeptId());
|
}
|
ArdAlarmStealelec existe = ardAlarmStealelecMapper.selectByPrimaryKey(ardAlarmStealelec.getId());
|
if(StringUtils.isNotNull(existe))
|
{
|
return;
|
}
|
int aas = ardAlarmStealelecMapper.insert(ardAlarmStealelec);
|
if(aas>0)
|
{
|
log.info("stealelec入库成功:" +ardAlarmStealelec);
|
}
|
break;
|
case "tube":
|
ArdAlarmTube ardAlarmTube = JSONObject.parseObject(message, ArdAlarmTube.class);
|
ardAlarmTube.setId(uuid);
|
ArdTubesDetails atd = new ArdTubesDetails();
|
atd.setReelNumber(ardAlarmTube.getTubeId());
|
List<ArdTubesDetails> ardTubesDetails = ardTubesDetailsMapper.selectArdTubesDetailsList(atd);
|
if (ardTubesDetails.size() > 0) {
|
String tubeId = ardTubesDetails.get(0).getTubeId();
|
ArdTubes ardTubes = ardTubesMapper.selectArdTubesById(tubeId);
|
ardAlarmTube.setTubeName(ardTubes.getName());
|
ardAlarmTube.setColor(ardTubes.getColor());
|
ardAlarmTube.setPipeDiameter(ardTubes.getPipeDiameter());
|
ardAlarmTube.setTubeType(ardTubes.getType());
|
GeoPoint geoPoint = TubeTools.CalculateCoordinates(ardTubesDetails, ardAlarmTube.getPosition());
|
if (StringUtils.isNotNull(geoPoint)) {
|
ardAlarmTube.setLongitude(geoPoint.getLongitude());
|
ardAlarmTube.setLatitude(geoPoint.getLatitude());
|
ardAlarmTube.setAltitude(geoPoint.getAltitude());
|
}
|
}
|
int aat = ardAlarmTubeMapper.insertArdAlarmTube(ardAlarmTube);
|
if (aat > 0) {
|
log.info("tube入库成功:" + ardAlarmTube);
|
}
|
break;
|
}
|
}
|
/**
|
* @描述 查询所有报警的当前数量
|
* @参数 []
|
* @返回值 java.util.Map<java.lang.String,java.lang.Integer>
|
* @创建人 刘苏义
|
* @创建时间 2023/6/13 16:30
|
* @修改人和其它信息
|
*/
|
@Override
|
public Map<String, Integer> selectAlarmLogsCount() {
|
Map<String, Integer> countMap=new HashMap<>();
|
String refreshTime = configService.selectConfigByKey("refreshTime");
|
int count1001 = ardAlarmStealelecMapper.selectCountByStartTime(refreshTime);
|
countMap.put("1001",count1001);
|
int count1014 = ardAlarmTubeMapper.selectCountByStartTime(refreshTime);
|
countMap.put("1014 ",count1014);
|
return countMap;
|
}
|
}
|