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.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.ArrayList; import java.util.Date; import java.util.List; 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 IArdAlarmTubeService ardAlarmTubeService; @Resource ArdTubesMapper ardTubesMapper; @Resource ArdTubesDetailsMapper ardTubesDetailsMapper; @Resource private ISysConfigService configService; @Override public List selectAlarmLogs(GlobalAlarmCondition condition) { String refreshTime = configService.selectConfigByKey("refreshTime"); switch (condition.getCommand()) { case 1001: List ardAlarmStealelecs = ardAlarmStealelecMapper.selectAllByCommandArdAlarmStealelecList(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()); default: return null; } } @Override public Object updateAlarmViewTime(GlobalAlarmCondition condition) { SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); switch (condition.getCommand()) { case 1001: String id = condition.getId(); ArdAlarmStealelec ardAlarmStealelec = ardAlarmStealelecMapper.selectByPrimaryKey(id); if(StringUtils.isNotNull(ardAlarmStealelec)) { String describe = ardAlarmStealelec.getDescribe(); String startTime = fmt.format(ardAlarmStealelec.getStartTime()); int i = ardAlarmStealelecMapper.updateViewTimeByDescribe(describe, startTime, DateUtils.getTime()); return ardAlarmStealelec; } default: return null; } } @Override @Async("alarmExecutor") public void receiveAlarm(String topic, String message) { switch (topic) { case "tube": ArdAlarmTube ardAlarmTube = JSONObject.parseObject(message, ArdAlarmTube.class); ardAlarmTube.setId(UUID.randomUUID().toString().replace("-", "")); ArdTubesDetails atd = new ArdTubesDetails(); atd.setReelNumber(ardAlarmTube.getTubeId()); List 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 i = ardAlarmTubeService.insertArdAlarmTube(ardAlarmTube); if (i > 0) { log.info("入库成功:" + ardAlarmTube.toString()); } break; } } }