From 4e6ba796be67ccbefb8e0f8f61bbfa12d8e0df6d Mon Sep 17 00:00:00 2001 From: huangzhen <867217663@qq.com> Date: 星期四, 04 一月 2024 09:53:51 +0800 Subject: [PATCH] 新增功能 --- src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DataReceiveServiceImpl.java | 11 +++ src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/GasFluxStateEnum.java | 2 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/DeviceExceptionLog.java | 2 src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/DeviceExcLogPageQuery.java | 18 ++++++ src/main/java/com/gkhy/fourierSpecialGasMonitor/service/DeviceExceptionLogService.java | 6 ++ src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DeviceExceptionLogServiceImpl.java | 49 ++++++++++++++++ src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/DeviceExcLogController.java | 39 +++++++++++++ src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java | 22 +++++- 8 files changed, 140 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/DeviceExcLogController.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/DeviceExcLogController.java new file mode 100644 index 0000000..4b61bb8 --- /dev/null +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/DeviceExcLogController.java @@ -0,0 +1,39 @@ +package com.gkhy.fourierSpecialGasMonitor.controller; + +import com.gkhy.fourierSpecialGasMonitor.commons.domain.Result; +import com.gkhy.fourierSpecialGasMonitor.commons.model.PageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.query.DeviceExcLogPageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.query.GasAtmospherePageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.query.GasFluxPageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.query.GasPageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.req.GasAtmosphereLineChartReqDTO; +import com.gkhy.fourierSpecialGasMonitor.entity.req.GasFluxLineChartReqDTO; +import com.gkhy.fourierSpecialGasMonitor.entity.req.GasLineChartReqDTO; +import com.gkhy.fourierSpecialGasMonitor.service.DeviceExceptionLogService; +import com.gkhy.fourierSpecialGasMonitor.service.MonitorDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author Mr.huang + * @decription + * @date 2023/8/10 9:06 + */ +@RestController +@RequestMapping("/deviceExcLog") +public class DeviceExcLogController { + + @Resource + private DeviceExceptionLogService deviceExceptionLogService; + + @PostMapping("/page") + public Result deviceExcLogPage(@RequestBody PageQuery<DeviceExcLogPageQuery> pageQuery){ + Result result = deviceExceptionLogService.deviceExcLogPage(pageQuery); + return result; + } +} \ No newline at end of file diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/DeviceExceptionLog.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/DeviceExceptionLog.java index 7abf2f5..e4d5a45 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/DeviceExceptionLog.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/DeviceExceptionLog.java @@ -19,6 +19,8 @@ @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; + private String content; + private LocalDateTime time; private String execDesc; diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/DeviceExcLogPageQuery.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/DeviceExcLogPageQuery.java new file mode 100644 index 0000000..170be65 --- /dev/null +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/DeviceExcLogPageQuery.java @@ -0,0 +1,18 @@ +package com.gkhy.fourierSpecialGasMonitor.entity.query; + +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * @author Mr.huang + * @decription + * @date 2023/8/10 10:52 + */ +@Data +public class DeviceExcLogPageQuery { + + private LocalDateTime startTime; + + private LocalDateTime endTime; +} \ No newline at end of file diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/GasFluxStateEnum.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/GasFluxStateEnum.java index 5703f1b..05dddf6 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/GasFluxStateEnum.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/GasFluxStateEnum.java @@ -8,7 +8,7 @@ NORMAL((Integer) 0, "正常"), - INVERSION_FAILED_10_MINUTES_NO_DATA((Integer) 1, "现场设备连续5min无数据") + INVERSION_FAILED_10_MINUTES_NO_DATA((Integer) 1, "反演失败,现场连续10min无数据") ; private Integer state; diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java index 33ea153..f0c9d01 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java @@ -18,7 +18,9 @@ import org.springframework.stereotype.Component; import java.io.IOException; +import java.text.MessageFormat; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; /** * @author Mr.huang @@ -42,9 +44,13 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass()); + private static final String deviceExcLogFormat = "【设备预警提示】{0} 硬件设备离线。"; + + private static final DateTimeFormatter deviceExcLogFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); - @Scheduled(cron = "0/30 * * * * ?") + + @Scheduled(cron = "0 0/1 * * * ?") @Async(value = "SocketTaskExecutor") public void gasConcentrationStatus() { GasConcentration gasConcentration = gasConcentrationService.getLastData(); @@ -53,9 +59,12 @@ if (LocalDateTime.now().compareTo(lastReceiveTime) > 0){ try { heartbeatExcWebsocketServer.sendInfo(HeartbeatExecEnum.GAS_CONCENTRATION.getStatus()+"",null); - logger.info(HeartbeatExecEnum.GAS_CONCENTRATION.getDesc()); + //logger.info(HeartbeatExecEnum.GAS_CONCENTRATION.getDesc()); DeviceExceptionLog deviceExceptionLog = new DeviceExceptionLog(); - deviceExceptionLog.setTime(LocalDateTime.now()); + LocalDateTime now = LocalDateTime.now(); + String content = MessageFormat.format(deviceExcLogFormat,deviceExcLogFormatter.format(now)); + deviceExceptionLog.setTime(now); + deviceExceptionLog.setContent(content); deviceExceptionLog.setExecDesc(HeartbeatExecEnum.GAS_CONCENTRATION.getDesc()); DeviceExceptionLog save = deviceExceptionLogService.save(deviceExceptionLog); if (save == null) @@ -76,9 +85,12 @@ if (LocalDateTime.now().compareTo(lastReceiveTime) > 0){ try { heartbeatExcWebsocketServer.sendInfo(HeartbeatExecEnum.GAS_FLUX.getStatus()+"",null); - logger.info(HeartbeatExecEnum.GAS_FLUX.getDesc()); + //logger.info(HeartbeatExecEnum.GAS_FLUX.getDesc()); DeviceExceptionLog deviceExceptionLog = new DeviceExceptionLog(); - deviceExceptionLog.setTime(LocalDateTime.now()); + LocalDateTime now = LocalDateTime.now(); + String content = MessageFormat.format(deviceExcLogFormat,deviceExcLogFormatter.format(now)); + deviceExceptionLog.setTime(now); + deviceExceptionLog.setContent(content); deviceExceptionLog.setExecDesc(HeartbeatExecEnum.GAS_FLUX.getDesc()); DeviceExceptionLog save = deviceExceptionLogService.save(deviceExceptionLog); if (save == null) diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/DeviceExceptionLogService.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/DeviceExceptionLogService.java index 7b91b30..141b19e 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/DeviceExceptionLogService.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/DeviceExceptionLogService.java @@ -1,6 +1,9 @@ package com.gkhy.fourierSpecialGasMonitor.service; +import com.gkhy.fourierSpecialGasMonitor.commons.domain.Result; +import com.gkhy.fourierSpecialGasMonitor.commons.model.PageQuery; import com.gkhy.fourierSpecialGasMonitor.entity.DeviceExceptionLog; +import com.gkhy.fourierSpecialGasMonitor.entity.query.DeviceExcLogPageQuery; /** * @author Mr.huang @@ -9,4 +12,7 @@ */ public interface DeviceExceptionLogService { DeviceExceptionLog save(DeviceExceptionLog log); + + Result deviceExcLogPage(PageQuery<DeviceExcLogPageQuery> pageQuery); + } diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DataReceiveServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DataReceiveServiceImpl.java index 6890cd6..5ed0334 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DataReceiveServiceImpl.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DataReceiveServiceImpl.java @@ -115,6 +115,10 @@ private static final String warnContentFormat = "【气体监测预警提示】{0} {1}气体浓度连续超标系统判断为{2},请相关负责人及时检查处置。"; + private static final String deviceExcLogFormat = "【设备预警提示】{0} 硬件设备离线。"; + + private static final DateTimeFormatter deviceExcLogFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); + private static final DateTimeFormatter warnLogFormatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); @@ -180,7 +184,7 @@ throw new DataReceiveException(this.getClass(), ForeignResultCode.PARAM_ERROR_NULL.getCode(),"通量数据状态不能为空"); Boolean push = false; List<String> descs = new ArrayList<>(); - if (reqDTO.getHardwareState().size() > 1){ + if (!(reqDTO.getHardwareState().size() == 1 && reqDTO.getHardwareState().get(0) == 0)){ push = true; for (int i = 0; i < reqDTO.getHardwareState().size(); i++) { descs.add(HardwareStateEnum.getValue(reqDTO.getHardwareState().get(i))); @@ -212,7 +216,10 @@ String execInfo = JSON.toJSONString(descs); logger.info("【警告】设备异常,异常原因: "+ execInfo); DeviceExceptionLog log = new DeviceExceptionLog(); - log.setTime(LocalDateTime.now()); + LocalDateTime now = LocalDateTime.now(); + String content = MessageFormat.format(deviceExcLogFormat,deviceExcLogFormatter.format(now)); + log.setContent(content); + log.setTime(now); log.setExecDesc(execInfo); DeviceExceptionLog save = deviceExceptionLogService.save(log); if (save == null) diff --git a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DeviceExceptionLogServiceImpl.java b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DeviceExceptionLogServiceImpl.java index 6be49cc..0acbeb4 100644 --- a/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DeviceExceptionLogServiceImpl.java +++ b/src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DeviceExceptionLogServiceImpl.java @@ -1,10 +1,32 @@ package com.gkhy.fourierSpecialGasMonitor.service.impl; +import com.gkhy.fourierSpecialGasMonitor.commons.domain.Result; +import com.gkhy.fourierSpecialGasMonitor.commons.domain.SearchResult; +import com.gkhy.fourierSpecialGasMonitor.commons.model.PageQuery; import com.gkhy.fourierSpecialGasMonitor.entity.DeviceExceptionLog; +import com.gkhy.fourierSpecialGasMonitor.entity.GasConcentration; +import com.gkhy.fourierSpecialGasMonitor.entity.query.DeviceExcLogPageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.query.GasPageQuery; +import com.gkhy.fourierSpecialGasMonitor.entity.resp.GasPageRespDTO; import com.gkhy.fourierSpecialGasMonitor.repository.DeviceExceptionLogRepository; import com.gkhy.fourierSpecialGasMonitor.service.DeviceExceptionLogService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.time.LocalDateTime; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * @author Mr.huang @@ -14,11 +36,36 @@ @Service public class DeviceExceptionLogServiceImpl implements DeviceExceptionLogService { - @Autowired + @Resource private DeviceExceptionLogRepository deviceExceptionLogRepository; @Override public DeviceExceptionLog save(DeviceExceptionLog log) { return deviceExceptionLogRepository.save(log); } + + @Override + public Result deviceExcLogPage(PageQuery<DeviceExcLogPageQuery> pageQuery) { + SearchResult<List<DeviceExceptionLog>> searchResult = new SearchResult<>(); + searchResult.setPageIndex(pageQuery.getPageIndex()); + searchResult.setPageSize(pageQuery.getPageSize()); + searchResult.setSuccess(); + Pageable pageable = PageRequest.of(pageQuery.getPageIndex()-1, pageQuery.getPageSize(), Sort.Direction.DESC, "time"); + Specification<DeviceExceptionLog> specification = new Specification<DeviceExceptionLog>() { + @Override + public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder criteriaBuilder) { + Set<Predicate> predicateList = new HashSet<>(); + DeviceExcLogPageQuery searchParams = pageQuery.getSearchParams(); + if (searchParams != null && searchParams.getStartTime() != null && searchParams.getEndTime() != null){ + predicateList.add(criteriaBuilder.between(root.get("time").as(LocalDateTime.class),searchParams.getStartTime(),searchParams.getEndTime())); + } + return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()])); + } + }; + Page<DeviceExceptionLog> pageResult = deviceExceptionLogRepository.findAll(specification,pageable); + searchResult.setTotal(pageResult.getTotalElements()); + searchResult.setPages(pageResult.getTotalPages()); + searchResult.setData(pageResult.getContent()); + return searchResult; + } } \ No newline at end of file -- Gitblit v1.9.2