Lius
2024-07-17 d54b8d2372ff5cf685c10c66f094df7d3b91ecbf
跳板机状态反馈
已添加7个文件
301 ■■■■■ 文件已修改
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/PcAppRunHisData.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/PcAppRunRealData.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/PcAppRunScanJob.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/PcAppRunRealDataMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/PcAppRunRealDataMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IPcAppRunRealDataService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/PcAppRunRealDataServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/PcAppRunHisData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package org.jeecg.modules.mdc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * @Description: app运行历史表
 * @Author: lius
 * @Date: 2024-07-17
 * @Version: V1.0
 */
@Data
@TableName("pcAppRunHisData")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "pcAppRunHisData对象", description = "app运行历史表")
public class PcAppRunHisData implements Serializable {
    private static final long serialVersionUID = -4306230586083354342L;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date collecttime;
    /**
     * äº§çº¿id
     */
    @Excel(name = "产线id", width = 15)
    @ApiModelProperty(value = "产线id")
    private String machineid;
    /**
     * app名称
     */
    @Excel(name = "app名称", width = 15)
    @ApiModelProperty(value = "app名称")
    private String appname;
    /**
     * app描述
     */
    @Excel(name = "app描述", width = 15)
    @ApiModelProperty(value = "app描述")
    private String appdescribe;
    /**
     * çŠ¶æ€(1正常 0异常)
     */
    @Excel(name = "状态", width = 15)
    @ApiModelProperty(value = "状态")
    private Integer oporation;
    /**
     * æ˜¯å¦é¦–次启动
     */
    @Excel(name = "是否首次启动", width = 15)
    @ApiModelProperty(value = "是否首次启动")
    private Integer isfirst;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/PcAppRunRealData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package org.jeecg.modules.mdc.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * @Description: app运行实时状态表
 * @Author: lius
 * @Date: 2024-07-17
 * @Version: V1.0
 */
@Data
@TableName("pcAppRunRealData")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "pcAppRunRealData对象", description = "app运行实时状态表")
public class PcAppRunRealData implements Serializable {
    private static final long serialVersionUID = -6241954790799443543L;
    /**
     * äº§çº¿id
     */
    @Excel(name = "产线id", width = 15)
    @ApiModelProperty(value = "产线id")
    private String machineid;
    /**
     * app名称
     */
    @Excel(name = "app名称", width = 15)
    @ApiModelProperty(value = "app名称")
    private String appname;
    /**
     * è®°å½•æ—¶é—´
     */
    @Excel(name = "记录时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "记录时间")
    private Date collecttime;
    /**
     * app描述
     */
    @Excel(name = "app描述", width = 15)
    @ApiModelProperty(value = "app描述")
    private String appdescribe;
    /**
     * çŠ¶æ€(1正常 0异常)
     */
    @Excel(name = "状态", width = 15)
    @ApiModelProperty(value = "状态(1正常 0异常)")
    private Integer oporation;
    /**
     * æ˜¯å¦é¦–次启动(1是 0否)
     */
    @Excel(name = "是否首次启动", width = 15)
    @ApiModelProperty(value = "是否首次启动(1是 0否)")
    private Integer isfirst;
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/PcAppRunScanJob.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,112 @@
package org.jeecg.modules.mdc.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.mdc.entity.MdcFeedback;
import org.jeecg.modules.mdc.entity.PcAppRunRealData;
import org.jeecg.modules.mdc.service.IMdcFeedbackService;
import org.jeecg.modules.mdc.service.IPcAppRunRealDataService;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.util.ThrowableUtil;
import org.jeecg.modules.quartz.entity.QuartzJob;
import org.jeecg.modules.quartz.entity.SysQuartzLog;
import org.jeecg.modules.quartz.service.IQuartzJobService;
import org.jeecg.modules.quartz.service.ISysQuartzLogService;
import org.jeecg.modules.system.entity.MdcProduction;
import org.jeecg.modules.system.service.IMdcProductionService;
import org.jeecg.modules.system.service.ISysAnnouncementService;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
/**
 * è·³æ¿æœºçŠ¶æ€ç›‘æŽ§
 *
 * @author Lius
 * @date 2024/7/17 10:33
 */
@Slf4j
public class PcAppRunScanJob implements Job {
    @Resource
    private ISysQuartzLogService sysQuartzLogService;
    @Resource
    private IQuartzJobService quartzJobService;
    @Resource
    private ISysAnnouncementService sysAnnouncementService;
    @Resource
    private IMdcFeedbackService mdcFeedbackService;
    @Resource
    private IPcAppRunRealDataService pcAppRunRealDataService;
    @Resource
    private IMdcProductionService mdcProductionService;
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        SysQuartzLog quartzLog = new SysQuartzLog();
        quartzLog.setCreateTime(new Date());
        List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName());
        if (byJobClassName != null && !byJobClassName.isEmpty()) {
            quartzLog.setJobId(byJobClassName.get(0).getId());
        }
        log.info("定时监控跳板机状态任务 PcAppRunScanJob start!  æ—¶é—´:" + DateUtils.getNow());
        long startTime = System.currentTimeMillis();
        try {
            // step.1 æŸ¥è¯¢çŠ¶æ€ä¸ºO
            List<PcAppRunRealData> pcAppRunRealDataList = pcAppRunRealDataService.list();
            if (pcAppRunRealDataList != null && !pcAppRunRealDataList.isEmpty()) {
                for (PcAppRunRealData pcAppRunRealData : pcAppRunRealDataList) {
                    MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionName, pcAppRunRealData.getMachineid()));
                    Integer oporation = pcAppRunRealData.getOporation();
                    Date collectTime = pcAppRunRealData.getCollecttime();
                    long second = DateUtils.differentSecond(collectTime, DateUtils.getNow());
                    MdcFeedback mdcFeedback = new MdcFeedback();
                    if (oporation.equals(CommonConstant.DEL_FLAG_1)) {
                        // è¶…过10分钟则报警
                        if (second > 600) {
                            //状态异常插入问题反馈记录
                            List<MdcFeedback> list = mdcFeedbackService.list(new LambdaQueryWrapper<MdcFeedback>().like(MdcFeedback::getContent, pcAppRunRealData.getAppdescribe()));
                            if (list == null || list.isEmpty()) {
                                mdcFeedback.setProductionId(mdcProduction.getId());
                                mdcFeedback.setContent(pcAppRunRealData.getAppdescribe() + "连接异常!");
                            }
                        } else {
                            //状态正常查询问题反馈删除记录
                            mdcFeedbackService.remove(new LambdaQueryWrapper<MdcFeedback>().like(MdcFeedback::getContent, pcAppRunRealData.getAppdescribe()));
                        }
                    } else {
                        //状态异常插入问题反馈记录
                        List<MdcFeedback> list = mdcFeedbackService.list(new LambdaQueryWrapper<MdcFeedback>().like(MdcFeedback::getContent, pcAppRunRealData.getAppdescribe()));
                        if (list == null || list.isEmpty()) {
                            mdcFeedback.setProductionId(mdcProduction.getId());
                            mdcFeedback.setContent(pcAppRunRealData.getAppdescribe() + "连接异常!");
                        }
                    }
                    if (StringUtils.isNotBlank(mdcFeedback.getProductionId())) {
                        mdcFeedbackService.save(mdcFeedback);
                    }
                }
            }
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
            // å‘送消息通知
            sysAnnouncementService.jobSendMessage("定时监控跳板机状态任务", quartzLog.getExceptionDetail());
        }
        long endTime = System.currentTimeMillis();
        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
        sysQuartzLogService.save(quartzLog);
    }
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/PcAppRunRealDataMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.mdc.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.mdc.entity.PcAppRunRealData;
/**
 * @Description: app运行实时状态表
 * @Author: lius
 * @Date:   2024-07-17
 * @Version: V1.0
 */
public interface PcAppRunRealDataMapper extends BaseMapper<PcAppRunRealData> {
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/PcAppRunRealDataMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.mdc.mapper.PcAppRunRealDataMapper">
</mapper>
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IPcAppRunRealDataService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.mdc.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.mdc.entity.PcAppRunRealData;
/**
 * @Description: app运行实时状态表
 * @Author: lius
 * @Date:   2024-07-17
 * @Version: V1.0
 */
public interface IPcAppRunRealDataService extends IService<PcAppRunRealData> {
}
lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/PcAppRunRealDataServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.modules.mdc.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.mdc.entity.PcAppRunRealData;
import org.jeecg.modules.mdc.mapper.PcAppRunRealDataMapper;
import org.jeecg.modules.mdc.service.IPcAppRunRealDataService;
import org.springframework.stereotype.Service;
/**
 * @Description: app运行实时状态表
 * @Author: lius
 * @Date:   2024-07-17
 * @Version: V1.0
 */
@Service
public class PcAppRunRealDataServiceImpl extends ServiceImpl<PcAppRunRealDataMapper, PcAppRunRealData> implements IPcAppRunRealDataService {
}