zhangnaisong
2024-09-07 0819312988ae6e041360fd354ef57a73633b7354
二厂数字化工况预警与停机报警提交
已添加4个文件
已修改1个文件
389 ■■■■■ 文件已修改
pom.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/digitization/model/CylbdBj.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/digitization/model/Gkbj.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/digitization/service/Digitization2Service.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ard/alarm/digitization/service/impl/Digitization2ServiceImpl.java 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -132,6 +132,11 @@
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <build>
src/main/java/com/ard/alarm/digitization/model/CylbdBj.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ard.alarm.digitization.model;
import lombok.Data;
import java.util.Date;
@Data
public class CylbdBj {
    private Integer id;
    private String orgName;
    private String km;
    private String dm;
    private String dmc;
    private String jh;
    private String wellCommonName;
    private Date fssj;
    private String bdbj;
    private String bjtz;
    private Float cyl1;
    private Float cyl2;
    private String hsqk;
    private String gxsj;
    private String xqkdm;
    private String qdfs;
    private String cyfs;
    private String czsj;
    private String czr;
    private String cznr;
    private String bz;
    private String alarmType;
}
src/main/java/com/ard/alarm/digitization/model/Gkbj.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.ard.alarm.digitization.model;
import lombok.Data;
import java.util.Date;
@Data
public class Gkbj {
    private Integer id;
    private String orgName;
    private String km;
    private String dm;
    private String dmc;
    private String jh;
    private String wellCommonName;
    private Date fssj;
    private String bdbj;
    private String bjtz;
    private Float cyl1;
    private Float cyl2;
    private String hsqk;
    private String gxsj;
    private String xqkdm;
    private String qdfs;
    private String cyfs;
    private String czsj;
    private String czr;
    private String cznr;
    private String bz;
    private String alarmType;
}
src/main/java/com/ard/alarm/digitization/service/Digitization2Service.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
package com.ard.alarm.digitization.service;
public interface Digitization2Service {
}
src/main/java/com/ard/alarm/digitization/service/impl/Digitization2ServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,272 @@
package com.ard.alarm.digitization.service.impl;
import com.alibaba.fastjson2.JSON;
import com.ard.alarm.digitization.model.CylbdBj;
import com.ard.alarm.digitization.model.Gkbj;
import com.ard.alarm.digitization.service.Digitization2Service;
import com.ard.utils.jdbc.Query;
import com.ard.utils.mqtt.MqttProducer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Service
@Slf4j(topic = "digitization2")
public class Digitization2ServiceImpl implements Digitization2Service {
    @Value("${digitization2.enabled}")
    private Boolean digitization2Enabled;
    @Value("${digitization2.mysql.dbIP}")
    private String digitization2MysqlIP;
    @Value("${digitization2.mysql.dbPort}")
    private Integer digitization2MysqlPort;
    @Value("${digitization2.mysql.dbName}")
    private String digitization2MysqlName;
    @Value("${digitization2.mysql.dbCount}")
    private String digitization2MysqlCount;
    @Value("${digitization2.mysql.dbPassword}")
    private String digitization2MysqlPassword;
    Connection connection = null;
    Statement statement = null;
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //public Date gkbjLastTime;
    public String gkbjLastTime;
    //public Date cylbdBjLastTime;
    public String cylbdBjLastTime;
    @Scheduled(cron = "*/5 * * * * ?")
    public void alarmHandler() {
        if(!digitization2Enabled){
            return;
        }
        Thread gkbjThread = new Thread(){
            @Override
            public void run() {
                try {
                    Class.forName("com.mysql.cj.jdbc.Driver");
                    Connection connection = DriverManager.getConnection("jdbc:mysql://" + digitization2MysqlIP + ":" + digitization2MysqlPort + "/" + digitization2MysqlName, digitization2MysqlCount, digitization2MysqlPassword);
                    Statement statement = (Statement) connection.createStatement();
                    if (gkbjLastTime == null) {
                        //初次查询,只获取10条最近数据。
                        String sql = "select * from gkbj order by fssj desc limit 0,10";
                        ResultSet resultSet = statement.executeQuery(sql);
                        while (resultSet.next()) {
                            if(resultSet.isFirst()){
                                gkbjLastTime = sdf.format(resultSet.getTimestamp("fssj"));
                            }
                            Gkbj gkbj = new Gkbj();
                            gkbj.setId(resultSet.getInt("id"));
                            gkbj.setOrgName(resultSet.getString("org_name"));
                            gkbj.setKm(resultSet.getString("km"));
                            gkbj.setDm(resultSet.getString("dm"));
                            gkbj.setDmc(resultSet.getString("dmc"));
                            gkbj.setJh(resultSet.getString("jh"));
                            gkbj.setWellCommonName(resultSet.getString("well_common_name"));
                            gkbj.setFssj(resultSet.getTimestamp("fssj"));
                            gkbj.setBdbj(resultSet.getString("bdbj"));
                            gkbj.setBjtz(resultSet.getString("bdbj"));
                            gkbj.setCyl1(resultSet.getFloat("cyl1"));
                            gkbj.setCyl2(resultSet.getFloat("cyl2"));
                            gkbj.setHsqk(resultSet.getString("hsqk"));
                            gkbj.setGxsj(resultSet.getString("gxsj"));
                            gkbj.setXqkdm(resultSet.getString("xqkdm"));
                            gkbj.setQdfs(resultSet.getString("qdfs"));
                            gkbj.setCyfs(resultSet.getString("cyfs"));
                            gkbj.setCzsj(resultSet.getString("czsj"));
                            gkbj.setCzr(resultSet.getString("czr"));
                            gkbj.setCznr(resultSet.getString("cznr"));
                            gkbj.setBz(resultSet.getString("bz"));
                            gkbj.setAlarmType("工况预警");
                            MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(gkbj));
                        }
                        connection.close();
                        statement.close();
                        resultSet.close();
                    } else {
                        //查询大于上次查询最后一条数据的时间
                        String sql = "select * from gkbj where fssj >= \'" + gkbjLastTime + " \'order by fssj desc";
                        ResultSet resultSet = statement.executeQuery(sql);
                        while (resultSet.next()) {
                            if(resultSet.isFirst()){
                                gkbjLastTime = sdf.format(resultSet.getTimestamp("fssj"));
                            }
                            Gkbj gkbj = new Gkbj();
                            gkbj.setId(resultSet.getInt("id"));
                            gkbj.setOrgName(resultSet.getString("org_name"));
                            gkbj.setKm(resultSet.getString("km"));
                            gkbj.setDm(resultSet.getString("dm"));
                            gkbj.setDmc(resultSet.getString("dmc"));
                            gkbj.setJh(resultSet.getString("jh"));
                            gkbj.setWellCommonName(resultSet.getString("well_common_name"));
                            gkbj.setFssj(resultSet.getTimestamp("fssj"));
                            gkbj.setBdbj(resultSet.getString("bdbj"));
                            gkbj.setBjtz(resultSet.getString("bdbj"));
                            gkbj.setCyl1(resultSet.getFloat("cyl1"));
                            gkbj.setCyl2(resultSet.getFloat("cyl2"));
                            gkbj.setHsqk(resultSet.getString("hsqk"));
                            gkbj.setGxsj(resultSet.getString("gxsj"));
                            gkbj.setXqkdm(resultSet.getString("xqkdm"));
                            gkbj.setQdfs(resultSet.getString("qdfs"));
                            gkbj.setCyfs(resultSet.getString("cyfs"));
                            gkbj.setCzsj(resultSet.getString("czsj"));
                            gkbj.setCzr(resultSet.getString("czr"));
                            gkbj.setCznr(resultSet.getString("cznr"));
                            gkbj.setBz(resultSet.getString("bz"));
                            gkbj.setAlarmType("工况报警");
                            MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(gkbj));
                        }
                        connection.close();
                        statement.close();
                        resultSet.close();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                    log.error("二厂数字化工况报警数据处理异常:" + ex.getMessage());
                }
            }
        };
        gkbjThread.start();
        Thread cylbdBjThread = new Thread(){
            @Override
            public void run() {
                try {
                    Class.forName("com.mysql.cj.jdbc.Driver");
                    Connection connection = DriverManager.getConnection("jdbc:mysql://" + digitization2MysqlIP + ":" + digitization2MysqlPort + "/" + digitization2MysqlName, digitization2MysqlCount, digitization2MysqlPassword);
                    Statement statement = (Statement) connection.createStatement();
                    if (cylbdBjLastTime == null) {
                        //初次查询,只获取10条最近数据。
                        String sql = "select * from cylbd_bj order by fssj desc limit 0,10";
                        ResultSet resultSet = statement.executeQuery(sql);
                        while (resultSet.next()) {
                            if(resultSet.isFirst()){
                                cylbdBjLastTime = sdf.format(resultSet.getTimestamp("fssj"));
                            }
                            CylbdBj cylbdBj = new CylbdBj();
                            cylbdBj.setId(resultSet.getInt("id"));
                            cylbdBj.setOrgName(resultSet.getString("org_name"));
                            cylbdBj.setKm(resultSet.getString("km"));
                            cylbdBj.setDm(resultSet.getString("dm"));
                            cylbdBj.setDmc(resultSet.getString("dmc"));
                            cylbdBj.setJh(resultSet.getString("jh"));
                            cylbdBj.setWellCommonName(resultSet.getString("well_common_name"));
                            cylbdBj.setFssj(resultSet.getTimestamp("fssj"));
                            cylbdBj.setBdbj(resultSet.getString("bdbj"));
                            cylbdBj.setBjtz(resultSet.getString("bdbj"));
                            cylbdBj.setCyl1(resultSet.getFloat("cyl1"));
                            cylbdBj.setCyl2(resultSet.getFloat("cyl2"));
                            cylbdBj.setHsqk(resultSet.getString("hsqk"));
                            cylbdBj.setGxsj(resultSet.getString("gxsj"));
                            cylbdBj.setXqkdm(resultSet.getString("xqkdm"));
                            cylbdBj.setQdfs(resultSet.getString("qdfs"));
                            cylbdBj.setCyfs(resultSet.getString("cyfs"));
                            cylbdBj.setCzsj(resultSet.getString("czsj"));
                            cylbdBj.setCzr(resultSet.getString("czr"));
                            cylbdBj.setCznr(resultSet.getString("cznr"));
                            cylbdBj.setBz(resultSet.getString("bz"));
                            cylbdBj.setAlarmType("停机报警");
                            MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(cylbdBj));
                        }
                        connection.close();
                        statement.close();
                        resultSet.close();
                    } else {
                        //查询大于上次查询最后一条数据的时间
                        String sql = "select * from cylbd_bj where fssj >= \'" + cylbdBjLastTime + "\' order by fssj desc";
                        ResultSet resultSet = statement.executeQuery(sql);
                        while (resultSet.next()) {
                            if(resultSet.isFirst()){
                                cylbdBjLastTime = sdf.format(resultSet.getTimestamp("fssj"));
                            }
                            CylbdBj cylbdBj = new CylbdBj();
                            cylbdBj.setId(resultSet.getInt("id"));
                            cylbdBj.setOrgName(resultSet.getString("org_name"));
                            cylbdBj.setKm(resultSet.getString("km"));
                            cylbdBj.setDm(resultSet.getString("dm"));
                            cylbdBj.setDmc(resultSet.getString("dmc"));
                            cylbdBj.setJh(resultSet.getString("jh"));
                            cylbdBj.setWellCommonName(resultSet.getString("well_common_name"));
                            cylbdBj.setFssj(resultSet.getTimestamp("fssj"));
                            cylbdBj.setBdbj(resultSet.getString("bdbj"));
                            cylbdBj.setBjtz(resultSet.getString("bdbj"));
                            cylbdBj.setCyl1(resultSet.getFloat("cyl1"));
                            cylbdBj.setCyl2(resultSet.getFloat("cyl2"));
                            cylbdBj.setHsqk(resultSet.getString("hsqk"));
                            cylbdBj.setGxsj(resultSet.getString("gxsj"));
                            cylbdBj.setXqkdm(resultSet.getString("xqkdm"));
                            cylbdBj.setQdfs(resultSet.getString("qdfs"));
                            cylbdBj.setCyfs(resultSet.getString("cyfs"));
                            cylbdBj.setCzsj(resultSet.getString("czsj"));
                            cylbdBj.setCzr(resultSet.getString("czr"));
                            cylbdBj.setCznr(resultSet.getString("cznr"));
                            cylbdBj.setBz(resultSet.getString("bz"));
                            cylbdBj.setAlarmType("停机报警");
                            MqttProducer.publish(2, false, "digitization2", JSON.toJSONString(cylbdBj));
                        }
                        connection.close();
                        statement.close();
                        resultSet.close();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                    log.error("二厂数字化工况报警数据处理异常:" + ex.getMessage());
                }
            }
        };
        cylbdBjThread.start();
    }
    public void initMysql() throws ClassNotFoundException, SQLException {
        if(this.connection != null){
            if(!this.connection.isClosed()){
                try{
                    this.connection.close();
                    this.connection = null;
                }catch(Exception e){
                    this.connection = null;
                }
            }
        }
        if(this.statement != null){
            if(!this.statement.isClosed()){
                try{
                    this.statement.close();
                    this.statement = null;
                }catch(Exception e){
                    this.statement = null;
                }
            }
        }
        Class.forName("com.mysql.cj.jdbc.Driver");
        this.connection = DriverManager.getConnection("jdbc:mysql://" + digitization2MysqlIP + ":" + digitization2MysqlPort + "/" + digitization2MysqlName, digitization2MysqlCount, digitization2MysqlPassword);
        this.statement = (Statement) connection.createStatement();
    }
}