diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a1fd924..3f55292 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -92,7 +92,6 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "][手自动" + fjAm.get(i) + "]"); - deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); // 更新风机状态现状表 PgFjStat temp = fjDao.findLatestStatByDevice(deviceId); @@ -116,13 +115,16 @@ deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步风机故障报警记录日志结果:" + dsbjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步风机故障报警记录日志结果:" + dsbjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); } } } diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a1fd924..3f55292 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -92,7 +92,6 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "][手自动" + fjAm.get(i) + "]"); - deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); // 更新风机状态现状表 PgFjStat temp = fjDao.findLatestStatByDevice(deviceId); @@ -116,13 +115,16 @@ deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步风机故障报警记录日志结果:" + dsbjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步风机故障报警记录日志结果:" + dsbjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index 2cfb318..05f49e7 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -197,6 +197,10 @@ String hsResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + hsResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a1fd924..3f55292 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -92,7 +92,6 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "][手自动" + fjAm.get(i) + "]"); - deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); // 更新风机状态现状表 PgFjStat temp = fjDao.findLatestStatByDevice(deviceId); @@ -116,13 +115,16 @@ deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步风机故障报警记录日志结果:" + dsbjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步风机故障报警记录日志结果:" + dsbjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index 2cfb318..05f49e7 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -197,6 +197,10 @@ String hsResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + hsResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index 744d0bd..12854f0 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -191,6 +191,10 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a1fd924..3f55292 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -92,7 +92,6 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "][手自动" + fjAm.get(i) + "]"); - deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); // 更新风机状态现状表 PgFjStat temp = fjDao.findLatestStatByDevice(deviceId); @@ -116,13 +115,16 @@ deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步风机故障报警记录日志结果:" + dsbjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步风机故障报警记录日志结果:" + dsbjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index 2cfb318..05f49e7 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -197,6 +197,10 @@ String hsResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + hsResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index 744d0bd..12854f0 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -191,6 +191,10 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index a3289ea..7b526e6 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -136,13 +136,16 @@ deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String bjResp = DataPushInterface.addSBAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步水泵故障报警记录日志结果:" + bjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String bjResp = DataPushInterface.addSBAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步水泵故障报警记录日志结果:" + bjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } } } diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a1fd924..3f55292 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -92,7 +92,6 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "][手自动" + fjAm.get(i) + "]"); - deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); // 更新风机状态现状表 PgFjStat temp = fjDao.findLatestStatByDevice(deviceId); @@ -116,13 +115,16 @@ deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步风机故障报警记录日志结果:" + dsbjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步风机故障报警记录日志结果:" + dsbjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index 2cfb318..05f49e7 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -197,6 +197,10 @@ String hsResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + hsResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index 744d0bd..12854f0 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -191,6 +191,10 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index a3289ea..7b526e6 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -136,13 +136,16 @@ deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String bjResp = DataPushInterface.addSBAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步水泵故障报警记录日志结果:" + bjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String bjResp = DataPushInterface.addSBAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步水泵故障报警记录日志结果:" + bjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 19f741e..d290d7a 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -296,6 +296,10 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } + + // 4.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/db/dao/PgAlarmDao.java b/src/com/szpg/db/dao/PgAlarmDao.java index 4ab98d4..8a56db2 100644 --- a/src/com/szpg/db/dao/PgAlarmDao.java +++ b/src/com/szpg/db/dao/PgAlarmDao.java @@ -9,4 +9,5 @@ public PgAlarm findLatestAlarmByDeviceAndType(int deviceId, String type); public long insertAlarmRecord(PgAlarm alarmRecord); + public int autoClearAlarm(int deviceId); } diff --git a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java index 043aed9..d10e66d 100644 --- a/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgAlarmDaoImpl.java @@ -170,31 +170,21 @@ @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; - - String querySql = "SELECT ID FROM PG_ALARM WHERE ALARMDEVID = ? AND ACTIVE=1"; - Object[] queryParam = new Object[1]; - queryParam[0] = alarmRecord.getAlarmdevid(); - + try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); - - // 查询同一设备是否有正在报警的消息 - Number id = runner.query(conn, querySql, new ScalarHandler(1), queryParam); - - if (null != id) { - // 找到设备已存在的记录 - // 1先将正在报警的设备自动消警 - String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ID=?"; - - Object[] updateParam = new Object[2]; - updateParam[0] = "重复报警自动消警"; - updateParam[1] = id.longValue(); - // 更新报警记录 - runner.update(conn, updateSql, updateParam); - } + // 先将正在报警的设备自动消警 + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ACTIVE=1 AND ALARMDEVID=?"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "重复报警自动消警"; + updateParam[1] = alarmRecord.getAlarmdevid(); + + // 更新报警记录 + runner.update(conn, updateSql, updateParam); // 插入新的报警记录 String insertSql = "INSERT INTO PG_ALARM " + @@ -241,4 +231,36 @@ } } + public int autoClearAlarm(int deviceId) { + Connection conn = null; + + String updateSql = "UPDATE PG_ALARM SET ACTIVE=0, LOG_TIME=SYSDATE, LOG_DESC=? WHERE ALARMDEVID=? AND ACTIVE=1"; + + Object[] updateParam = new Object[2]; + updateParam[0] = "正常数据自动消警"; + updateParam[1] = deviceId; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + QueryRunner runner = new QueryRunner(); + + // 更新报警记录 + int count = runner.update(conn, updateSql, updateParam); + + if (count > 0) { + logger.info("正常数据自动消警[" + deviceId + "]" + count); + } + return count; + } catch (Exception ex) { + logger.error("正常数据自动消警异常", ex); + return -1; + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + } } diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 04b9b7e..45d0b0a 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -197,6 +197,10 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index a45a716..362c259 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -192,6 +192,10 @@ String coResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + coResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index f6c45b0..01344b8 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -104,6 +104,7 @@ String dsbjResp = DataPushInterface.addDSAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段入侵报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } } diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a1fd924..3f55292 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -92,7 +92,6 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "][手自动" + fjAm.get(i) + "]"); - deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); // 更新风机状态现状表 PgFjStat temp = fjDao.findLatestStatByDevice(deviceId); @@ -116,13 +115,16 @@ deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步风机故障报警记录日志结果:" + dsbjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String dsbjResp = DataPushInterface.addFJAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步风机故障报警记录日志结果:" + dsbjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index 2cfb318..05f49e7 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -197,6 +197,10 @@ String hsResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + hsResp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index 744d0bd..12854f0 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -191,6 +191,10 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } + + // 3.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index a3289ea..7b526e6 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -136,13 +136,16 @@ deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 - String date = TimeFormat.formatDate(getTime().getTime()); - int count = alarmDao.findAlarmCountByDate(date); - String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); - String bjms = alarm.getDescription(); - String bjsj = date.replace("-", ""); - String bjResp = DataPushInterface.addSBAlarmData(bjbh, zcbh, bjms, bjsj); - logger.info("同步水泵故障报警记录日志结果:" + bjResp); +// String date = TimeFormat.formatDate(getTime().getTime()); +// int count = alarmDao.findAlarmCountByDate(date); +// String bjbh = "THXC." + date + "." + NumberFormat.format(count+1, "0000"); +// String bjms = alarm.getDescription(); +// String bjsj = date.replace("-", ""); +// String bjResp = DataPushInterface.addSBAlarmData(bjbh, zcbh, bjms, bjsj); +// logger.info("同步水泵故障报警记录日志结果:" + bjResp); + } else { + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } } } diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 19f741e..d290d7a 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -296,6 +296,10 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } + + // 4.6 如果有报警记录,则将报警自动清除 + alarmDao.autoClearAlarm(deviceId); + deviceDao.updateDeviceStatus(deviceId, "正常"); } } else { logger.warn("未找到资产[" + zcbh + "]"); diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index af0558b..2dbc525 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -89,6 +89,7 @@ String dsbjResp = DataPushInterface.addYWAlarmData(bjbh, zcbh, bjms, bjsj); logger.info("同步舱段液位爆管报警记录日志结果:" + dsbjResp); } else { + alarmDao.autoClearAlarm(deviceId); deviceDao.updateDeviceStatus(deviceId, "正常"); } }