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();
|
}
|
|
}
|