package com.gkhy.fourierSpecialGasMonitor.service.impl; import com.alibaba.fastjson.JSON; import com.gkhy.fourierSpecialGasMonitor.commons.domain.ForeignResult; import com.gkhy.fourierSpecialGasMonitor.commons.domain.Result; import com.gkhy.fourierSpecialGasMonitor.commons.enums.ForeignResultCode; import com.gkhy.fourierSpecialGasMonitor.commons.enums.ResultCode; import com.gkhy.fourierSpecialGasMonitor.commons.exception.DataReceiveException; import com.gkhy.fourierSpecialGasMonitor.decorator.WarningThresholdUpdateEvent; import com.gkhy.fourierSpecialGasMonitor.entity.*; import com.gkhy.fourierSpecialGasMonitor.entity.req.DeviceMonitorReqDTO; import com.gkhy.fourierSpecialGasMonitor.entity.req.UploadGasConcentrationReqDTO; import com.gkhy.fourierSpecialGasMonitor.entity.req.UploadGasFluxReqDTO; import com.gkhy.fourierSpecialGasMonitor.entity.resp.GasCategoryListRespDTO; import com.gkhy.fourierSpecialGasMonitor.enums.*; import com.gkhy.fourierSpecialGasMonitor.repository.GasConcentrationRepository; import com.gkhy.fourierSpecialGasMonitor.service.*; import com.gkhy.fourierSpecialGasMonitor.utils.SendMessageUtil; import com.gkhy.fourierSpecialGasMonitor.websocket.GasConcentrationExcWebsocketServer; import com.gkhy.fourierSpecialGasMonitor.websocket.GasConcentrationWebsocketServer; import com.gkhy.fourierSpecialGasMonitor.websocket.GasDeviceExcWebsocketServer; import com.gkhy.fourierSpecialGasMonitor.websocket.GasFluxWebsocketServer; import io.micrometer.core.instrument.util.StringUtils; import org.redisson.api.RBucket; import org.redisson.api.RedissonClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.PostConstruct; import java.io.IOException; import java.lang.reflect.Field; import java.text.MessageFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; import static org.apache.el.lang.ELArithmetic.isNumberType; /** * @author Mr.huang * @decription * @date 2023/8/7 14:25 */ @Service public class DataReceiveServiceImpl implements DataReceiveService { @Autowired private GasConcentrationService gasConcentrationService; @Autowired private GasCategoryService gasCategoryService; @Autowired private GasThresholdService gasThresholdService; @Autowired private GasWarnLogService gasWarnLogService; @Autowired private RedissonClient redissonClient; @Autowired private GasFluxService gasFluxService; @Autowired private SendMessageUtil sendMessageUtil; @Autowired private GasWarnLogSmsUserService gasWarnLogSmsUserService; @Autowired private GasWarnUserService gasWarnUserService; @Autowired private DeviceExceptionLogService deviceExceptionLogService; @Autowired private GasConcentrationWebsocketServer gasConcentrationWebsocketServer; @Autowired private GasFluxWebsocketServer gasFluxWebsocketServer; private static final ReentrantLock lock = new ReentrantLock(); @Autowired private GasConcentrationExcWebsocketServer gasConcentrationExcWebsocketServer; private Map gasExcCountMap = new HashMap<>(); private static Integer yellowWarningThreshold = 2; private static Integer redWarningThreshold = 5; @Value("${sms.send.enabled}") private String smsSendEnabledStatus; private final Logger logger = LoggerFactory.getLogger(this.getClass()); private static DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static String gasConcentrationCachePrefix = "gas_concentration_cache_"; private static final String warnContentFormat = "【气体监测预警提示】{0} {1}气体浓度连续超标系统判断为{2},请相关负责人及时检查处置。"; private static final DateTimeFormatter warnLogFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); @PostConstruct public void init() { List gasCategories = gasCategoryService.list(); if (!CollectionUtils.isEmpty(gasCategories)){ List collect = gasCategories.stream().map(gasCategory -> { gasExcCountMap.put(gasCategory.getId(), 0); return gasCategory; }).collect(Collectors.toList()); } logger.info("[GasExcMap] init complete"); } @PostConstruct public void warningThresholdInit() { List gasThresholds = gasThresholdService.findAll(); if (!CollectionUtils.isEmpty(gasThresholds)){ for (int i = 0; i < gasThresholds.size(); i++) { if (WarningThresholdEnum.YELLOW.getCode().equals(gasThresholds.get(i).getId())){ yellowWarningThreshold = gasThresholds.get(i).getThreshold(); } if (WarningThresholdEnum.RED.getCode().equals(gasThresholds.get(i).getId())){ redWarningThreshold = gasThresholds.get(i).getThreshold(); } } } logger.info("[WarningThreshold] init complete"); } @Override public ForeignResult listGasCategory() { Result result = gasCategoryService.gasCategoryList(); List data = (List) result.getData(); ForeignResult success = ForeignResult.success(); success.setData(data); return success; } @Override public ForeignResult uploadGasFlux(UploadGasFluxReqDTO reqDto) { //gasFluxParameterVerification(reqDto); GasFlux gasFlux = new GasFlux(); BeanUtils.copyProperties(reqDto,gasFlux); gasFlux.setDataReceivingTime(LocalDateTime.now()); GasFlux save = gasFluxService.save(gasFlux); if (save == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"气体通量数据保存失败"); gasFluxDataCacheAndPush(); return ForeignResult.success(); } @Override public ForeignResult deviceMonitor(DeviceMonitorReqDTO reqDTO) { if (reqDTO == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"数据为空"); if (CollectionUtils.isEmpty(reqDTO.getHardwareState())) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"硬件设备状态不能为空"); if (reqDTO.getConState() < 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"浓度数据状态不能为空"); if (reqDTO.getFluxState() < 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"通量数据状态不能为空"); Boolean push = false; List descs = new ArrayList<>(); if (reqDTO.getHardwareState().size() > 1){ push = true; for (int i = 0; i < reqDTO.getHardwareState().size(); i++) { descs.add(HardwareStateEnum.getValue(reqDTO.getHardwareState().get(i))); } } if (GasConcentrationStateEnum.NO_DATA_FROM_ONSITE_EQUIPMENT_FOR_5_MINUTES.getState().equals(reqDTO.getConState())){ push = true; descs.add(GasConcentrationStateEnum.NO_DATA_FROM_ONSITE_EQUIPMENT_FOR_5_MINUTES.getDesc()); } if (GasFluxStateEnum.INVERSION_FAILED_10_MINUTES_NO_DATA.getState().equals(reqDTO.getFluxState())){ push = true; descs.add(GasFluxStateEnum.INVERSION_FAILED_10_MINUTES_NO_DATA.getDesc()); } String message = JSON.toJSONString(reqDTO); //todo 暂时改为实时推送给前端 try { GasDeviceExcWebsocketServer.sendInfo(message,null); } catch (IOException e) { logger.info("【警告】设备异常提醒推送>>>>>>>>>>>>>>>>>>失败"); } if (push){ //todo 线上环境还是异常才向前端推送 //String message = JSON.toJSONString(reqDTO); //try { // GasDeviceExcWebsocketServer.sendInfo(message,null); //} catch (IOException e) { // logger.info("【警告】设备异常提醒推送>>>>>>>>>>>>>>>>>>失败"); //} String execInfo = JSON.toJSONString(descs); logger.info("【警告】设备异常,异常原因: "+ execInfo); DeviceExceptionLog log = new DeviceExceptionLog(); log.setTime(LocalDateTime.now()); log.setExecDesc(execInfo); DeviceExceptionLog save = deviceExceptionLogService.save(log); if (save == null) logger.info("【警告】设备异常日志保存>>>>>>>>>>>>>>>>>>失败"); } return ForeignResult.success(); } private void gasFluxDataCacheAndPush(){ LocalDateTime time = LocalDateTime.now(); LocalDateTime startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0); List gasFluxes = gasFluxService.listTodayGasFluxData(startTime,time); String message = ""; if (!CollectionUtils.isEmpty(gasFluxes)){ message = JSON.toJSONString(gasFluxes); } try { gasFluxWebsocketServer.sendInfo(message,null); } catch (IOException e) { logger.info("【警告】气体通量数据推送>>>>>>>>>>>>>>>>>>失败"); } } @Override @Transactional public ForeignResult uploadGasConcentration(UploadGasConcentrationReqDTO reqDto) { //gasConcentrationParameterVerification(reqDto); GasConcentration gasConcentration = new GasConcentration(); BeanUtils.copyProperties(reqDto,gasConcentration); gasConcentration.setDataReceivingTime(LocalDateTime.now()); GasConcentration save = gasConcentrationService.save(gasConcentration); if (save == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"气体实时数据保存失败"); dataCacheAndPush(save); execDataCountAndPush(reqDto); return ForeignResult.success(); } private void execDataCountAndPush(UploadGasConcentrationReqDTO reqDto){ RBucket> bucket = redissonClient.getBucket("gas_category_cache_info"); List gasCategoryCache = bucket.get(); if (CollectionUtils.isEmpty(gasCategoryCache)){ gasCategoryCache = gasCategoryService.list(); if (CollectionUtils.isEmpty(gasCategoryCache)){ throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"气体对照表为空"); } bucket.set(gasCategoryCache); } Map threshold = gasCategoryCache.stream().collect(Collectors.toMap(GasCategory::getId, GasCategory::getThreshold)); Map gasCategory = gasCategoryCache.stream().collect(Collectors.toMap(GasCategory::getId,g -> g)); lock.lock(); try{ for (int i = 1; i <= gasCategoryCache.size(); i++) { String fileNamePrefix = "gasValue"; String fileName = fileNamePrefix + i; if (i < 10) { fileName = fileNamePrefix + "0" + i; } Field[] fields = reqDto.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); // 设置字段可访问,即使是私有字段 if (field.getName().equals(fileName)) { Double value = null; try { value = (Double) field.get(reqDto); } catch (IllegalAccessException e) { logger.info("【警告】反射获取气体浓度失败"); } if (value != null) { if (value > threshold.get(i)) { Integer integer = gasExcCountMap.get(i); Integer count = integer + 1; gasExcCountMap.put(i, count); if (yellowWarningThreshold.equals(count)) { warnLogGenerateAndExecPush(WarningThresholdEnum.YELLOW.getCode(), gasCategory.get(i), value); } if (redWarningThreshold.equals(count)) { warnLogGenerateAndExecPush(WarningThresholdEnum.RED.getCode(), gasCategory.get(i), value); } } else { Integer integer = gasExcCountMap.get(i); if (integer != null) { gasExcCountMap.put(i, 0); } } } } } } }finally { lock.unlock(); } } private void warnLogGenerateAndExecPush(Integer warnThresholdEnumCode,GasCategory gasCategory,Double value){ if (gasCategory == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"该气体不存在于对照表"); GasWarnLog gasWarnLog = new GasWarnLog(); String warnThresholdName = WarningThresholdEnum.getValue(warnThresholdEnumCode); LocalDateTime now = LocalDateTime.now(); String warnTime = now.format(warnLogFormatter); String content = MessageFormat.format(warnContentFormat,warnTime,gasCategory.getName(),warnThresholdName); gasWarnLog.setGasConcentration(value); gasWarnLog.setGasName(gasCategory.getName()); gasWarnLog.setGasUnit(gasCategory.getUnit()); gasWarnLog.setGasConcentrationThreshold(gasCategory.getThreshold()); gasWarnLog.setGasMolecularFormula(gasCategory.getMolecularFormula()); gasWarnLog.setContent(content); gasWarnLog.setStatus(WarnHandleStatusEnum.HANDLE_NO.getStatus()); gasWarnLog.setWarnTime(now); gasWarnLog.setGasCategoryId(gasCategory.getId()); gasWarnLog.setGasThresholdId(warnThresholdEnumCode); gasWarnLog.setGasThresholdName(warnThresholdName); GasWarnLog save = gasWarnLogService.save(gasWarnLog); if (save == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"预警异常日志保存失败"); String gasConcentrationExcInfo = JSON.toJSONString(save); try { gasConcentrationExcWebsocketServer.sendInfo(gasConcentrationExcInfo,null); } catch (IOException e) { logger.info("【警告】气体浓度异常推送>>>>>>>>>>>>>>>>>>失败"); } List gasWarnUsers = gasWarnUserService.findAll(); if (!CollectionUtils.isEmpty(gasWarnUsers)){ List phone = new ArrayList<>(); List gasWarnLogSmsUsers = gasWarnUsers.stream().map(gasWarnUser -> { phone.add(gasWarnUser.getPhone()); GasWarnLogSmsUser gasWarnLogSmsUser = new GasWarnLogSmsUser(); BeanUtils.copyProperties(gasWarnUser, gasWarnLogSmsUser, "id"); gasWarnLogSmsUser.setWarnLogId(save.getId()); return gasWarnLogSmsUser; }).collect(Collectors.toList()); List saveAll = gasWarnLogSmsUserService.saveAll(gasWarnLogSmsUsers); if (saveAll == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.SYSTEM_ERROR_DATABASE_FAIL.getCode(),"预警异常短信接收人保存失败"); Map mesMap = new HashMap<>(); mesMap.put("message",warnTime+" "+gasCategory.getName()); mesMap.put("level",warnThresholdName); //todo if (!CollectionUtils.isEmpty(phone)) { List distinctPhone = phone.stream().distinct().collect(Collectors.toList()); logger.info("【气体浓度异常短信发送】-----发送内容:" + content + " 发送时间: " + now + " 接收人手机号:" + distinctPhone); if (!org.springframework.util.StringUtils.isEmpty(smsSendEnabledStatus) && "true".equals(smsSendEnabledStatus)) { sendMessageUtil.sendMessageCheck(phone.toArray(new String[phone.size()]), mesMap); } } } } private void dataCacheAndPush(GasConcentration save){ LocalDateTime startTime = LocalDateTime.now().withHour(0).withMinute(0).withSecond(0).withNano(0); LocalDateTime time = LocalDateTime.now(); String cacheName = time.format(formatter); RBucket bucket = redissonClient.getBucket(gasConcentrationCachePrefix+cacheName); String cache = bucket.get(); List gasConcentrations = JSON.parseArray(cache,GasConcentration.class); if (CollectionUtils.isEmpty(gasConcentrations)){ List concentrations = gasConcentrationService.listDatabyTimeSlot(startTime, time); if (CollectionUtils.isEmpty(concentrations)){ gasConcentrations = new ArrayList<>(); }else { gasConcentrations = concentrations; } gasConcentrations.add(save); }else { gasConcentrations.add(save); } String gasConcentrationsToJson = JSON.toJSONString(gasConcentrations); bucket.set(gasConcentrationsToJson); try { gasConcentrationWebsocketServer.sendInfo(gasConcentrationsToJson,null); } catch (IOException e) { logger.info("【警告】气体浓度实时推送>>>>>>>>>>>>>>>>>>失败"); } } private void gasConcentrationParameterVerification(UploadGasConcentrationReqDTO reqDto){ if (reqDto == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"数据为空"); if (StringUtils.isBlank(reqDto.getEquipmentId())) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"设备id为空"); if (reqDto.getTime() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"扫描时间为空"); if (reqDto.getType() <= 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"设备类型异常"); if (StringUtils.isBlank(reqDto.getLng())) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"经度为空"); if (StringUtils.isBlank(reqDto.getLat())) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"纬度为空"); if (StringUtils.isBlank(reqDto.getAngle())) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"角度为空"); if (reqDto.getTemp() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时温度数据为空"); if (reqDto.getHumidity() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时相对湿度数据为空"); if (reqDto.getWindSpeed() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时风速数据为空"); if (reqDto.getWindDirection() <= 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时风向数据为空"); if (reqDto.getPressure() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时气压数据为空"); //if (reqDto.getGasName01() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类01编号异常"); //if (reqDto.getGasName02() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类02编号异常"); //if (reqDto.getGasName03() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类03编号异常"); //if (reqDto.getGasName04() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类04编号异常"); //if (reqDto.getGasName05() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类05编号异常"); //if (reqDto.getGasName06() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类06编号异常"); //if (reqDto.getGasName07() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类07编号异常"); //if (reqDto.getGasName08() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类08编号异常"); //if (reqDto.getGasName09() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类09编号异常"); //if (reqDto.getGasName10() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类10编号异常"); //if (reqDto.getGasName11() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类11编号异常"); //if (reqDto.getGasName12() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类12编号异常"); //if (reqDto.getGasName13() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类13编号异常"); //if (reqDto.getGasName14() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类14编号异常"); //if (reqDto.getGasName15() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类15编号异常"); //if (reqDto.getGasName16() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类16编号异常"); //if (reqDto.getGasName17() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类17编号异常"); //if (reqDto.getGasName18() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类18编号异常"); //if (reqDto.getGasName19() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类19编号异常"); //if (reqDto.getGasName20() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类20编号异常"); //if (reqDto.getGasName21() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类21编号异常"); //if (reqDto.getGasName22() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类22编号异常"); //if (reqDto.getGasName23() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类23编号异常"); //if (reqDto.getGasName24() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类24编号异常"); //if (reqDto.getGasName25() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类25编号异常"); //if (reqDto.getGasName26() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类26编号异常"); //if (reqDto.getGasName27() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类27编号异常"); //if (reqDto.getGasName28() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类28编号异常"); //if (reqDto.getGasName29() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类29编号异常"); //if (reqDto.getGasName30() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类30编号异常"); } private void gasFluxParameterVerification(UploadGasFluxReqDTO reqDto){ if (reqDto == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"数据为空"); if (StringUtils.isBlank(reqDto.getEquipmentId())) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"设备id为空"); if (reqDto.getAreaId() <= 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"区域id为空"); if (reqDto.getTime() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"扫描时间为空"); if (reqDto.getType() <= 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"设备类型异常"); if (reqDto.getWindSpeed() == null) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时风速数据为空"); if (reqDto.getWindDirection() <= 0) throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"实时风向数据为空"); //if (reqDto.getGasName01() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类01编号异常"); //if (reqDto.getGasName02() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类02编号异常"); //if (reqDto.getGasName03() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类03编号异常"); //if (reqDto.getGasName04() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类04编号异常"); //if (reqDto.getGasName05() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类05编号异常"); //if (reqDto.getGasName06() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类06编号异常"); //if (reqDto.getGasName07() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类07编号异常"); //if (reqDto.getGasName08() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类08编号异常"); //if (reqDto.getGasName09() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类09编号异常"); //if (reqDto.getGasName10() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类10编号异常"); //if (reqDto.getGasName11() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类11编号异常"); //if (reqDto.getGasName12() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类12编号异常"); //if (reqDto.getGasName13() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类13编号异常"); //if (reqDto.getGasName14() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类14编号异常"); //if (reqDto.getGasName15() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类15编号异常"); //if (reqDto.getGasName16() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类16编号异常"); //if (reqDto.getGasName17() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类17编号异常"); //if (reqDto.getGasName18() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类18编号异常"); //if (reqDto.getGasName19() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类19编号异常"); //if (reqDto.getGasName20() <= 0) // throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"气体种类20编号异常"); } //@Async // 异步方式 @EventListener // 监听器注解 public void updateWarningThreshold(WarningThresholdUpdateEvent event){ List gasThresholds = gasThresholdService.findAll(); if (!CollectionUtils.isEmpty(gasThresholds)){ for (int i = 0; i < gasThresholds.size(); i++) { if (WarningThresholdEnum.YELLOW.getCode().equals(gasThresholds.get(i).getId())){ yellowWarningThreshold = gasThresholds.get(i).getThreshold(); } if (WarningThresholdEnum.RED.getCode().equals(gasThresholds.get(i).getId())){ redWarningThreshold = gasThresholds.get(i).getThreshold(); } } } logger.info("【预警阈值】更新完成"); } }