huangzhen
2024-01-04 4e6ba796be67ccbefb8e0f8f61bbfa12d8e0df6d
新增功能
已修改6个文件
已添加2个文件
149 ■■■■■ 文件已修改
src/main/java/com/gkhy/fourierSpecialGasMonitor/controller/DeviceExcLogController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/DeviceExceptionLog.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/entity/query/DeviceExcLogPageQuery.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/enums/GasFluxStateEnum.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/schedule/HeartbeatSchedule.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/service/DeviceExceptionLogService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DataReceiveServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/gkhy/fourierSpecialGasMonitor/service/impl/DeviceExceptionLogServiceImpl.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}
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;
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;
}
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;
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)
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);
}
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)
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;
    }
}