diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java index f10831c..c477186 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖关闭"); } logger.info("[" + this.getAcucode() + "]关闭井盖成功"); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java index f10831c..c477186 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖关闭"); } logger.info("[" + this.getAcucode() + "]关闭井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java index 35eb98c..5377a1b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖开启"); } logger.info("[" + this.getAcucode() + "]打开井盖成功"); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java index f10831c..c477186 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖关闭"); } logger.info("[" + this.getAcucode() + "]关闭井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java index 35eb98c..5377a1b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖开启"); } logger.info("[" + this.getAcucode() + "]打开井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java index 1575f09..323e651 100644 --- a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java @@ -1,10 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; -import com.szpg.plc.message.command.write.SetJgUnlockBitCommand; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -12,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -21,7 +17,7 @@ // 更新设备状态 解锁 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖解锁"); } logger.info("[" + this.getAcucode() + "]解锁井盖成功"); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java index f10831c..c477186 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖关闭"); } logger.info("[" + this.getAcucode() + "]关闭井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java index 35eb98c..5377a1b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖开启"); } logger.info("[" + this.getAcucode() + "]打开井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java index 1575f09..323e651 100644 --- a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java @@ -1,10 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; -import com.szpg.plc.message.command.write.SetJgUnlockBitCommand; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -12,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -21,7 +17,7 @@ // 更新设备状态 解锁 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖解锁"); } logger.info("[" + this.getAcucode() + "]解锁井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java index bd36ece..c52005e 100644 --- a/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "照明关闭"); } logger.info("[" + this.getAcucode() + "]关闭照明成功"); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java index f10831c..c477186 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖关闭"); } logger.info("[" + this.getAcucode() + "]关闭井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java index 35eb98c..5377a1b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖开启"); } logger.info("[" + this.getAcucode() + "]打开井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java index 1575f09..323e651 100644 --- a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java @@ -1,10 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; -import com.szpg.plc.message.command.write.SetJgUnlockBitCommand; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -12,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -21,7 +17,7 @@ // 更新设备状态 解锁 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖解锁"); } logger.info("[" + this.getAcucode() + "]解锁井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java index bd36ece..c52005e 100644 --- a/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "照明关闭"); } logger.info("[" + this.getAcucode() + "]关闭照明成功"); diff --git a/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java index 61822b8..2d15232 100644 --- a/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "照明开启"); } logger.info("[" + this.getAcucode() + "]打开照明成功"); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index e4db807..dd48340 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -297,6 +297,16 @@ THXC.ACU002.JGSTAT.WORDCOUNT = 6 +#\u914D\u7535\u67DC\u6570\u91CF +THXC.ACU002.DL.COUNT = 1 +#\u914D\u7535\u67DC\u7F16\u7801\u5217\u8868 +THXC.ACU002.DL.ZC.LIST = THXC.ACU002.D.PDL01 +#\u914D\u7535\u67DC\u53C2\u6570\u8D77\u59CB\u5730\u5740 +THXC.ACU002.DL.START = 10 +#\u914D\u7535\u67DC\u53C2\u6570\u6240\u5360\u5B57\u6570 +THXC.ACU002.DL.WORDCOUNT = 12 + + ######## 03 THXC.ACU003 ######## #\u7532\u70F7\u4F20\u611F\u5668\u6570\u91CF diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 576699c..2180c16 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -15,4 +15,6 @@ public List findDeviceByPositionAndType(String acucode, String devtype, String cabin); public int addGenerlAlarmRecord(PgAlarm alarmRec); + + public int updateDeviceStatus(int deviceid, String status); } diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 7fc3b48..d1ac022 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -29,6 +29,4 @@ public int addStatRecord(PgFjStat fjstat); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgJgDao.java b/src/com/szpg/db/dao/PgJgDao.java index 7d93770..2192e88 100644 --- a/src/com/szpg/db/dao/PgJgDao.java +++ b/src/com/szpg/db/dao/PgJgDao.java @@ -21,5 +21,4 @@ public int addSbjzRecord(PgJgStat jgstat); public int addSbjzRecord(String open, boolean lock, String tm, int deviceid); - public int updateDeviceStatus(int deviceid, String open); } diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 76518d5..e3e16a6 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -31,6 +31,4 @@ public int addStatRecord(PgSbStat sbstat); public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index f4ea60a..212f7f8 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -30,6 +30,4 @@ public int addStatRecord(PgZmStat zmstat); public int addStatRecord(boolean run, String tm, int deviceid); public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); - - public int updateDeviceStatus(int deviceid, boolean run); } diff --git a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 72e1192..eb9e1c1 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -229,4 +229,37 @@ return 0; } + @Override + public int updateDeviceStatus(int deviceid, String status) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = status; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新设备状态成功[status=" + status + ", deviceid=" + deviceid + "]"); + else + logger.error("更新设备状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新设备状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } } diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index 176c774..0fb927f 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -465,40 +465,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java index f74d579..a923a0f 100644 --- a/src/com/szpg/db/dao/impl/PgJgDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgJgDaoImpl.java @@ -310,40 +310,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, String open) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = open; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新井盖打开状态成功[run=" + open + ", deviceid=" + deviceid + "]"); - else - logger.error("更新井盖打开状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新井盖打开状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 55e32a5..3de90f8 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -537,40 +537,5 @@ } return 0; } - - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index c4bcbd7..5dd946c 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -491,39 +491,5 @@ } return 0; } - - @Override - public int updateDeviceStatus(int deviceid, boolean run) { - Connection conn = null; - - String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; - Object[] params = new Object[2]; - params[0] = run; - params[1] = deviceid; - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("更新照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("更新照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } } diff --git a/src/com/szpg/db/data/PgAcu.java b/src/com/szpg/db/data/PgAcu.java index 9b486fe..ece92ca 100644 --- a/src/com/szpg/db/data/PgAcu.java +++ b/src/com/szpg/db/data/PgAcu.java @@ -17,6 +17,7 @@ private String acu_unit; // ACU单元号 private String acu_flag; // ACU建设标段标志 private String active; // ACU可用标志位 + private String acu_cabin; // ACU所含的舱室 public Integer getId() { return id; @@ -98,6 +99,14 @@ this.active = active; } + public String getAcu_cabin() { + return acu_cabin; + } + + public void setAcu_cabin(String acu_cabin) { + this.acu_cabin = acu_cabin; + } + @Override public String toString() { return "PgAcu[" + acu_host + ":" + acu_port + "," + acu_net + acu_node + acu_unit + "]"; diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java deleted file mode 100644 index 4246a06..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCh4Dao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCh4DaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCh4; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCH4StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6940879434912360622L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List jwbj; // 甲烷浓度报警状态 - private List jwldbj; // 甲烷是否联动报警 - private String[] zcList; //甲烷监测的资产列表,从配置文件中获取 - - public ReadCH4StatusCommandResponse() { - jwbj = new ArrayList(); - jwldbj = new ArrayList(); - } - - public List getJwbj() { - return jwbj; - } - - public void setJwbj(List jwbj) { - this.jwbj = jwbj; - } - - public List getJwldbj() { - return jwldbj; - } - - public void setJwldbj(List jwldbj) { - this.jwldbj = jwldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将甲烷浓度数据存入数据库 - PgCh4Dao ch4Dao = new PgCh4DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历甲烷设备列表,将甲烷报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (jwbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCh4 value = ch4Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCh4(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU甲烷监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".CHALM.START")); - - // 获取目标ACU甲烷相关的资产列表,即甲烷设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CH.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析甲烷浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析甲烷浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 甲烷浓度报警状态标志位 - - // 解析甲烷浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 甲烷浓度联动报警使能标志位 - - getJwbj().add(bjBt == '1' ? true : false); - getJwldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index 0f7e11e..542b577 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -123,7 +124,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); - + // 自动打开当前舱段的排风机,手动关闭风机 // 首先找到当前舱段的排风机资产编号 if (Boolean.valueOf(Configure.getProperty("sys", "CH4_ON_FJ", "false")) == true) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java deleted file mode 100644 index 3993ed2..0000000 --- a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgCODao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgCODaoImpl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgCO; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 1978575736131174986L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List cobj; // 一氧化碳浓度报警状态 - private List coldbj; // 一氧化碳是否联动报警 - private String[] zcList; //一氧化碳监测的资产列表,从配置文件中获取 - - public ReadCOStatusCommandResponse() { - cobj = new ArrayList(); - coldbj = new ArrayList(); - } - - public List getCobj() { - return cobj; - } - - public void setCobj(List cobj) { - this.cobj = cobj; - } - - public List getColdbj() { - return coldbj; - } - - public void setColdbj(List coldbj) { - this.coldbj = coldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将一氧化碳报警状态数据存入数据库 - PgCODao coalmDao = new PgCODaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历一氧化碳设备列表,将一氧化碳报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (cobj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgCO value = coalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getCo(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU一氧化碳监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".COALM.START")); - - // 获取目标ACU一氧化碳相关的资产列表,即一氧化碳设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".CO.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析一氧化碳浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析一氧化碳浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 一氧化碳浓度报警状态标志位 - - // 解析一氧化碳浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 一氧化碳浓度联动报警使能标志位 - - getCobj().add(bjBt == '1' ? true : false); - getColdbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java index 340dcc0..58c8288 100644 --- a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -108,6 +108,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "一氧化碳浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -121,7 +122,7 @@ // 将报警值推送至市级平台 String jwResp = DataPushInterface.addCOData(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步一氧化碳浓度值结果:" + jwResp); - + // 一氧化碳不需要联动控制风机 } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 293d225..425d940 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -75,6 +75,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段入侵报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java deleted file mode 100644 index 9bfdcf9..0000000 --- a/src/com/szpg/plc/message/response/read/ReadFjRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3733073050500592967L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjscs; // 风机运行时长——秒数 - private List fjsch; // 风机运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjRtCommandResponse() { - fjscs = new ArrayList(); - fjsch = new ArrayList(); - } - - public List getFjscs() { - return fjscs; - } - - public void setFjscs(List fjscs) { - this.fjscs = fjscs; - } - - public List getFjsch() { - return fjsch; - } - - public void setFjsch(List fjsch) { - this.fjsch = fjsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机累计运行时长数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addRtRecord(fjscs.get(i), fjsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJRT.START")); - - // 获取目标ACU风机相关的资产列表,即风机设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析风机运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getFjsch().add(hour); - getFjscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index a41f3d9..f9b138f 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -81,9 +81,8 @@ int deviceId = deviceDao.findDeviceIdByCode(zcbh); if (deviceId > 0) { logger.info("风机[" + zcbh + "][运行状态" + fjRun.get(i) + "][风机故障" + fjFlt.get(i) + "]"); -// fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - fjDao.updateDeviceStatus(deviceId, fjRun.get(i)); - + deviceDao.updateDeviceStatus(deviceId, fjRun.get(i) == true ? "风机运行" : "风机停止"); + if (null != fjFlt.get(i) && fjFlt.get(i) == true) { PgAlarm alarm = new PgAlarm(); alarm.setActive(1); @@ -92,8 +91,10 @@ alarm.setAlarmtypeid(PgAlarm.ALARM_TYPE_DEVRUN); alarm.setDescription("风机故障"); alarm.setUserid(null); - + + // 数据库操作 alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "风机故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java index 079c421..3fd8b02 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSCH4ValueCommandResponse.java @@ -112,6 +112,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -144,7 +145,7 @@ } } } - /* + // (二)如果监测值有变化则推送 // 判断硫化氢浓度值是否有变化 double lastValue = hsDao.findLastValueByDevice(deviceId); @@ -162,7 +163,7 @@ String coResp = DataPushInterface.addHSData(zcbh, NumberFormat.format(hsValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步硫化氢浓度值结果:" + coResp); } - */ + } } else if (zcbh.indexOf("CH") >= 0) { if (null != ch4.get(i)) { @@ -198,6 +199,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "甲烷浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -231,13 +233,12 @@ } } - /* // (二)如果监测值有变化则推送 // 判断甲烷浓度值是否有变化 double lastValue = ch4Dao.findLastValueByDevice(deviceId); if (Math.abs(ch4Value - lastValue) > 0.01) { // 将监测值推送至市级平台 - String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); + String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } @@ -249,7 +250,6 @@ String jwResp = DataPushInterface.addCH4Data(zcbh, NumberFormat.format(ch4Value, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步甲烷浓度值结果:" + jwResp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java deleted file mode 100644 index 91c396c..0000000 --- a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHSDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHSDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgSH; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -6523885113265769167L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List hsbj; // 硫化氢浓度报警状态 - private List hsldbj; // 硫化氢是否联动报警 - private String[] zcList; //硫化氢监测的资产列表,从配置文件中获取 - - public ReadHSStatusCommandResponse() { - hsbj = new ArrayList(); - hsldbj = new ArrayList(); - } - - public List getHsbj() { - return hsbj; - } - - public void setHsbj(List hsbj) { - this.hsbj = hsbj; - } - - public List getHsldbj() { - return hsldbj; - } - - public void setHsldbj(List hsldbj) { - this.hsldbj = hsldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将硫化氢报警状态数据存入数据库 - PgHSDao hsalmDao = new PgHSDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将硫化氢报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (hsbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgSH value = hsalmDao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getSh(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU硫化氢监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".HSALM.START")); - - // 获取目标ACU硫化氢相关的资产列表,即硫化氢设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".HS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析硫化氢浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析硫化氢浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 硫化氢浓度报警状态标志位 - - // 解析硫化氢浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 硫化氢浓度联动报警使能标志位 - - getHsbj().add(bjBt == '1' ? true : false); - getHsldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java index b673f81..f442f23 100644 --- a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "硫化氢浓度过高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java index 428139f..b76ad87 100644 --- a/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadJgStatusCommandResponse.java @@ -93,7 +93,7 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { jgDao.addSbjzRecord(jgzt.get(i), jgsd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - jgDao.updateDeviceStatus(id, jgzt.get(i)); + deviceDao.updateDeviceStatus(id, jgzt.get(i)); } } } @@ -160,13 +160,13 @@ // 判断井盖打开状态 if (openBt == '0' && closeBt == '0') { - getJgzt().add("2"); //半开半闭 + getJgzt().add("半开半闭"); //半开半闭 } else if (openBt == '1' && closeBt == '0') { - getJgzt().add("1"); //全开 + getJgzt().add("全开"); //全开 } else if (openBt == '0' && closeBt == '1') { - getJgzt().add("0"); //全关 + getJgzt().add("全关"); //全关 } else { - getJgzt().add("3"); //数值异常 + getJgzt().add("数值异常"); //数值异常 } // 解析井盖锁定/解锁状态 diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java deleted file mode 100644 index 8fa0035..0000000 --- a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java +++ /dev/null @@ -1,162 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgO2Dao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgO2DaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgO2; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2070206047602742122L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List o2bj; // 氧气浓度报警状态 - private List o2ldbj; // 氧气是否联动报警 - private String[] zcList; //氧气监测的资产列表,从配置文件中获取 - - public ReadO2StatusCommandResponse() { - o2bj = new ArrayList(); - o2ldbj = new ArrayList(); - } - - public List getO2bj() { - return o2bj; - } - - public void setO2bj(List o2bj) { - this.o2bj = o2bj; - } - - public List getO2ldbj() { - return o2ldbj; - } - - public void setO2ldbj(List o2ldbj) { - this.o2ldbj = o2ldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将氧气报警状态数据存入数据库 - PgO2Dao o2Dao = new PgO2DaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将氧气报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (o2bj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgO2 value = o2Dao.findLatestPblzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getO2(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU氧气监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YQALM.START")); - - // 获取目标ACU氧气相关的资产列表,即氧气设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YQ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析氧气浓度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析氧气浓度报警值 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 氧气浓度报警状态标志位 - - // 解析氧气浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".EN"); - if (null == enBlObj) { - continue; - } - - int ekszdz = enBlObj.getKszdz(); //开始字地址 - int eoffset = ekszdz - start; //与开始字的偏移量 - int ebit = enBlObj.getSzw(); //所在位 - - char enBt = dataStr.charAt(dataStr.length() - 1 - eoffset * 16 - ebit); // 氧气浓度联动报警使能标志位 - - getO2bj().add(bjBt == '1' ? true : false); - getO2ldbj().add(enBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java index db777cd..5596dfc 100644 --- a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -110,6 +110,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java deleted file mode 100644 index e136a83..0000000 --- a/src/com/szpg/plc/message/response/read/ReadSbRtCommandResponse.java +++ /dev/null @@ -1,217 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgSbDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgSbDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadSbRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 8066103988242013978L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List sb1scs; // 水泵1运行时长——秒数 - private List sb2scs; // 水泵2运行时长——秒数 - private List sb1sch; // 水泵1运行时长——小时数 - private List sb2sch; // 水泵2运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadSbRtCommandResponse() { - sb1scs = new ArrayList(); - sb2scs = new ArrayList(); - sb1sch = new ArrayList(); - sb2sch = new ArrayList(); - } - - public List getSb1scs() { - return sb1scs; - } - - public void setSb1scs(List sb1scs) { - this.sb1scs = sb1scs; - } - - public List getSb2scs() { - return sb2scs; - } - - public void setSb2scs(List sb2scs) { - this.sb2scs = sb2scs; - } - - public List getSb1sch() { - return sb1sch; - } - - public void setSb1sch(List sb1sch) { - this.sb1sch = sb1sch; - } - - public List getSb2sch() { - return sb2sch; - } - - public void setSb2sch(List sb2sch) { - this.sb2sch = sb2sch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将水泵累计运行时长数据存入数据库 - PgSbDao sbDao = new PgSbDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将水泵运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - // 根据是否有数据来判断单泵还是双泵 - if (null == sb2sch.get(i)) { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } else { - sbDao.addRtRecord(sb1scs.get(i), sb1sch.get(i), sb2scs.get(i), sb2sch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU水泵运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".SBRT.START")); - - // 获取目标ACU水泵相关的资产列表,即水泵设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".SB.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析水泵运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析水泵1运行时长的小时数 - PgHjsbbl hour1BlObj = blDao.findBlByBh(zcbh + ".RunH1"); - if (null == hour1BlObj) { - continue; - } - - int h1kszdz = hour1BlObj.getKszdz(); //开始字地址 - int h1jszdz = hour1BlObj.getJszdz(); //结束字地址 - int h1n = h1jszdz - (h1kszdz - 1); //字数 - int h1offset = h1kszdz - start; //与开始字的偏移量 - - Bytes hour1Bytes = new Bytes(); - for (int j = h1n; j > 0; j--) { - hour1Bytes.append(new byte[] {messageData[(h1offset + j - 1) * 2], messageData[(h1offset + j - 1) * 2 + 1]}); - } - - int hour1 = ByteUtil.binToInt(hour1Bytes.toBytes()); //运行时长的小时数 - - // 解析水泵2运行时长的小时数 - PgHjsbbl hour2BlObj = blDao.findBlByBh(zcbh + ".RunH2"); - if (null == hour2BlObj) { - sb2sch.add(null); - } else { - int h2kszdz = hour2BlObj.getKszdz(); //开始字地址 - int h2jszdz = hour2BlObj.getJszdz(); //结束字地址 - int h2n = h2jszdz - (h2kszdz - 1); //字数 - int h2offset = h2kszdz - start; //与开始字的偏移量 - - Bytes hour2Bytes = new Bytes(); - for (int j = h2n; j > 0; j--) { - hour2Bytes.append(new byte[] {messageData[(h2offset + j - 1) * 2], messageData[(h2offset + j - 1) * 2 + 1]}); - } - - int hour2 = ByteUtil.binToInt(hour2Bytes.toBytes()); //运行时长的小时数 - sb2sch.add(hour2); - } - - // 解析水泵1运行时长的秒数 - PgHjsbbl second1BlObj = blDao.findBlByBh(zcbh + ".RunS1"); - if (null == second1BlObj) { - continue; - } - - int s1kszdz = second1BlObj.getKszdz(); //开始字地址 - int s1jszdz= second1BlObj.getJszdz(); //结束字地址 - int s1n = s1jszdz - (s1kszdz - 1); //字数 - int s1offset = s1kszdz - start; //与开始字的偏移量 - - Bytes second1Bytes = new Bytes(); - for (int k = s1n; k > 0; k--) { - second1Bytes.append(new byte[] {messageData[(s1offset + k - 1) * 2], messageData[(s1offset + k - 1) * 2 + 1]}); - } - - int second1 = ByteUtil.binToInt(second1Bytes.toBytes()); //运行时长的秒数 - - // 解析水泵2运行时长的秒数 - PgHjsbbl second2BlObj = blDao.findBlByBh(zcbh + ".RunS2"); - if (null == second2BlObj) { - sb2scs.add(null); - } else { - int s2kszdz = second2BlObj.getKszdz(); //开始字地址 - int s2jszdz= second2BlObj.getJszdz(); //结束字地址 - int s2n = s2jszdz - (s2kszdz - 1); //字数 - int s2offset = s2kszdz - start; //与开始字的偏移量 - - Bytes second2Bytes = new Bytes(); - for (int k = s2n; k > 0; k--) { - second2Bytes.append(new byte[] {messageData[(s2offset + k - 1) * 2], messageData[(s2offset + k - 1) * 2 + 1]}); - } - - int second2 = ByteUtil.binToInt(second2Bytes.toBytes()); //运行时长的秒数 - sb2scs.add(second2); - } - - getSb1sch().add(hour1); - getSb1scs().add(second1); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java index 069ae1d..081f7d8 100644 --- a/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadSbStatCommandResponse.java @@ -103,12 +103,10 @@ // 根据是否有数据来判断单泵还是双泵 if (null == sb2Run.get(i)) { logger.info("水泵[" + zcbh + "][运行状态" + sb1Run.get(i) + "][故障报警" + sb1Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb1Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) == true ? "水泵运行" : "水泵停止"); } else { logger.info("水泵[" + zcbh + "][运行状态1" + sb1Run.get(i) + "][故障报警1" + sb1Flt.get(i) + "][运行状态2" + sb2Run.get(i) + "][故障报警2" + sb2Flt.get(i) + "]"); - sbDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i)); -// sbDao.addStatRecord(sb1Run.get(i), sb2Run.get(i), sb1Flt.get(i), sb2Flt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), deviceId); + deviceDao.updateDeviceStatus(deviceId, sb1Run.get(i) | sb2Run.get(i) == true ? "水泵运行" : "水泵停止"); } // 如果单泵或者双泵有任意一个故障则都报警 @@ -122,6 +120,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "水泵故障"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java deleted file mode 100644 index 69e97ec..0000000 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgWsDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgWsDaoImpl; -import com.szpg.db.data.PgAlarm; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.data.PgTemphum; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.NumberFormat; - -public class ReadWSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3778608871616106346L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List wdbj; // 温度报警状态 - private List sdbj; // 湿度报警状态 - private List wdldbj; // 温度是否联动报警 - private List sdldbj; // 湿度是否联动报警 - private String[] zcList; //温湿度监测的资产列表,从配置文件中获取 - - public ReadWSStatusCommandResponse() { - wdbj = new ArrayList(); - sdbj = new ArrayList(); - wdldbj = new ArrayList(); - sdldbj = new ArrayList(); - } - - public List getWdbj() { - return wdbj; - } - - public void setWdbj(List wdbj) { - this.wdbj = wdbj; - } - - public List getSdbj() { - return sdbj; - } - - public void setSdbj(List sdbj) { - this.sdbj = sdbj; - } - - public List getWdldbj() { - return wdldbj; - } - - public void setWdldbj(List wdldbj) { - this.wdldbj = wdldbj; - } - - public List getSdldbj() { - return sdldbj; - } - - public void setSdldbj(List sdldbj) { - this.sdldbj = sdldbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将温湿度报警状态存入数据库 - PgWsDao wsDao = new PgWsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将温湿度报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - if (wdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getTemp(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - - if (sdbj.get(i) == true) { - PgAlarm alarmRec = new PgAlarm(); - alarmRec.setAlarm_date(this.getTime().getTime()); - alarmRec.setAlarmdevid(id); - alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGRUN); - - PgTemphum value = wsDao.findLatestWsdzByDevice(id); - if (null != value) { - alarmRec.setAlarm_value(NumberFormat.format(value.getHum(), "0.00")); - } - - deviceDao.addGenerlAlarmRecord(alarmRec); - - // 推送到上级平台 - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU温湿度监测值内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".WSALM.START")); - - // 获取目标ACU温湿度相关的资产列表,即温湿度设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".WS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析温湿度报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 1解析温度报警值 - PgHjsbbl almBlTemObj = blDao.findBlByBh(zcbh + ".TemAH"); - if (null == almBlTemObj) { - continue; - } - - int awkszdz = almBlTemObj.getKszdz(); //开始字地址 - int awoffset = awkszdz - start; //与开始字的偏移量 - int awbit = almBlTemObj.getSzw(); //所在位 - - char bjTemBt = dataStr.charAt(dataStr.length() - 1 - awoffset * 16 - awbit); // 温度报警状态标志位 - - // 2解析温度浓度报警联动标志位 - PgHjsbbl enBlObj = blDao.findBlByBh(zcbh + ".TemEN"); - if (null == enBlObj) { - continue; - } - - int ewkszdz = enBlObj.getKszdz(); //开始字地址 - int ewoffset = ewkszdz - start; //与开始字的偏移量 - int ewbit = enBlObj.getSzw(); //所在位 - - char enTemBt = dataStr.charAt(dataStr.length() - 1 - ewoffset * 16 - ewbit); // 温度联动报警使能标志位 - - // 3解析湿度报警值 - PgHjsbbl almBlWetObj = blDao.findBlByBh(zcbh + ".WetAH"); - if (null == almBlWetObj) { - continue; - } - - int askszdz = almBlWetObj.getKszdz(); //开始字地址 - int asoffset = askszdz - start; //与开始字的偏移量 - int asbit = almBlWetObj.getSzw(); //所在位 - - char bjWetBt = dataStr.charAt(dataStr.length() - 1 - asoffset * 16 - asbit); // 湿度报警状态标志位 - - // 4解析湿度报警联动标志位 - PgHjsbbl enBlWetObj = blDao.findBlByBh(zcbh + ".WetEN"); - if (null == enBlWetObj) { - continue; - } - - int eskszdz = enBlWetObj.getKszdz(); //开始字地址 - int esoffset = eskszdz - start; //与开始字的偏移量 - int esbit = enBlWetObj.getSzw(); //所在位 - - char enWetBt = dataStr.charAt(dataStr.length() - 1 - esoffset * 16 - esbit); // 温湿度浓度联动报警使能标志位 - - getWdbj().add(bjTemBt == '1' ? true : false); - getSdbj().add(bjWetBt == '1' ? true : false); - getWdldbj().add(enTemBt == '1' ? true : false); - getSdldbj().add(enWetBt == '1' ? true : false); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index 49aabb9..3386206 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -142,6 +142,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -187,6 +188,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java index 6d7a542..a47c6da 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSYQValueCommandResponse.java @@ -143,6 +143,7 @@ wdAlarm.setUserid(null); alarmDao.insertAlarmRecord(wdAlarm); + deviceDao.updateDeviceStatus(deviceId, "温度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -188,6 +189,7 @@ sdAlarm.setUserid(null); alarmDao.insertAlarmRecord(sdAlarm); + deviceDao.updateDeviceStatus(deviceId, "湿度超高"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -206,7 +208,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断温度值是否有变化 double lastTemp = wsDao.findLastTempByDevice(deviceId); @@ -235,7 +236,6 @@ String sdResp = DataPushInterface.addHumData(zcbh, NumberFormat.format(sdValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步湿度值结果:" + sdResp); } - */ } } else if (zcbh.indexOf("YQ") >= 0) { if (null != yq.get(i)) { @@ -271,6 +271,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "氧气浓度过低"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); @@ -304,7 +305,6 @@ } } - /* // (二)如果监测值有变化则推送 // 判断氧气浓度值是否有变化 double lastValue = yqDao.findLastValueByDevice(deviceId); @@ -322,7 +322,6 @@ String o2Resp = DataPushInterface.addO2Data(zcbh, NumberFormat.format(yqValue, "0.00"), TimeFormat.format(this.getTime().getTime(), "yyyyMMddHHmmss")); logger.info("同步氧气浓度值结果:" + o2Resp); } - */ } } } else { diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index a338a23..819e740 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -76,6 +76,7 @@ alarm.setUserid(null); alarmDao.insertAlarmRecord(alarm); + deviceDao.updateDeviceStatus(deviceId, "舱段液位爆管报警"); // 将报警日志推送至市级平台 String date = TimeFormat.formatDate(getTime().getTime()); diff --git a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java deleted file mode 100644 index dcea935..0000000 --- a/src/com/szpg/plc/message/response/read/ReadZmRtCommandResponse.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.plc.util.Bytes; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmRtCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 92136364985015413L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmscs; // 照明运行时长——秒数 - private List zmsch; // 照明运行时长——小时数 - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmRtCommandResponse() { - zmscs = new ArrayList(); - zmsch = new ArrayList(); - } - - public List getZmscs() { - return zmscs; - } - - public void setZmscs(List zmscs) { - this.zmscs = zmscs; - } - - public List getZmsch() { - return zmsch; - } - - public void setZmsch(List zmsch) { - this.zmsch = zmsch; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明累计运行时长数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行时长存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addRtRecord(zmscs.get(i), zmsch.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData() { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - byte[] messageData = this.getResponseData(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行时间内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMRT.START")); - - // 获取目标ACU照明相关的资产列表,即照明设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行时长相关变量 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行时长的小时数 - PgHjsbbl hourBlObj = blDao.findBlByBh(zcbh + ".RunH"); - if (null == hourBlObj) { - continue; - } - - int hkszdz = hourBlObj.getKszdz(); //开始字地址 - int hjszdz = hourBlObj.getJszdz(); //结束字地址 - int hn = hjszdz - (hkszdz - 1); //字数 - int hoffset = hkszdz - start; //与开始字的偏移量 - - Bytes hourBytes = new Bytes(); - for (int j = hn; j > 0; j--) { - hourBytes.append(new byte[] {messageData[(hoffset + j - 1) * 2], messageData[(hoffset + j - 1) * 2 + 1]}); - } - - int hour = ByteUtil.binToInt(hourBytes.toBytes()); //运行时长的小时数 - - // 解析照明运行时长的秒数 - PgHjsbbl secondBlObj = blDao.findBlByBh(zcbh + ".RunS"); - if (null == secondBlObj) { - continue; - } - - int skszdz = secondBlObj.getKszdz(); //开始字地址 - int sjszdz= secondBlObj.getJszdz(); //结束字地址 - int sn = sjszdz - (skszdz - 1); //字数 - int soffset = skszdz - start; //与开始字的偏移量 - - Bytes secondBytes = new Bytes(); - for (int k = sn; k > 0; k--) { - secondBytes.append(new byte[] {messageData[(soffset + k - 1) * 2], messageData[(soffset + k - 1) * 2 + 1]}); - } - - int second = ByteUtil.binToInt(secondBytes.toBytes()); //运行时长的秒数 - - getZmsch().add(hour); - getZmscs().add(second); - } - } - -} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 39b2fd4..b6a027f 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,22 +1,19 @@ package com.szpg.plc.message.response.read; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - import com.szpg.db.dao.PgDeviceDao; import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgZmDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; import com.szpg.db.data.PgHjsbbl; import com.szpg.plc.message.response.ReadMemoryCommandResponse; import com.szpg.plc.util.ByteUtil; import com.szpg.util.Configure; +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { @@ -53,7 +50,6 @@ @Override public void afterAction() { // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); if (null != zcList && zcList.length > 0) { @@ -63,9 +59,8 @@ int id = deviceDao.findDeviceIdByCode(zcbh); if (id > 0) { -// zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); logger.info("照明[" + zcbh + "][运行状态" + zmRun.get(i) + "]"); - zmDao.updateDeviceStatus(id, zmRun.get(i)); + deviceDao.updateDeviceStatus(id, zmRun.get(i) == true ? "照明打开" : "照明关闭"); } } } diff --git a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java index adb5f9d..5cf232b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgLockBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 锁定 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖锁定"); } logger.info("[" + this.getAcucode() + "]锁定井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java index f10831c..c477186 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "井盖关闭"); } logger.info("[" + this.getAcucode() + "]关闭井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java index 35eb98c..5377a1b 100644 --- a/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖开启"); } logger.info("[" + this.getAcucode() + "]打开井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java index 1575f09..323e651 100644 --- a/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetJgUnlockBitCommandResponse.java @@ -1,10 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; -import com.szpg.plc.message.command.write.SetJgUnlockBitCommand; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -12,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -21,7 +17,7 @@ // 更新设备状态 解锁 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "井盖解锁"); } logger.info("[" + this.getAcucode() + "]解锁井盖成功"); diff --git a/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java index bd36ece..c52005e 100644 --- a/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetZmOffBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 关 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "0"); + deviceDao.updateDeviceStatus(deviceId, "照明关闭"); } logger.info("[" + this.getAcucode() + "]关闭照明成功"); diff --git a/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java b/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java index 61822b8..2d15232 100644 --- a/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java +++ b/src/com/szpg/plc/message/response/write/SetZmOnBitCommandResponse.java @@ -1,9 +1,7 @@ package com.szpg.plc.message.response.write; import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgJgDao; import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgJgDaoImpl; import com.szpg.plc.message.response.WriteMemoryCommandResponse; import org.apache.log4j.Logger; @@ -11,7 +9,6 @@ private final Logger logger = Logger.getLogger(this.getClass().getName()); - private PgJgDao jgDao = new PgJgDaoImpl(); private PgDeviceDao deviceDao = new PgDeviceDaoImpl(); @Override @@ -20,7 +17,7 @@ // 更新设备状态 开 int deviceId = deviceDao.findDeviceIdByCode(this.getDestinationId()); if (deviceId > 0) { - jgDao.updateDeviceStatus(deviceId, "1"); + deviceDao.updateDeviceStatus(deviceId, "照明开启"); } logger.info("[" + this.getAcucode() + "]打开照明成功"); diff --git a/src/com/szpg/rmi/RemoteJGCommandAction.java b/src/com/szpg/rmi/RemoteJGCommandAction.java index f3f71b6..4bb1148 100644 --- a/src/com/szpg/rmi/RemoteJGCommandAction.java +++ b/src/com/szpg/rmi/RemoteJGCommandAction.java @@ -203,10 +203,10 @@ } // 5秒后查询一次井盖的状态 -// Thread.sleep(5 * 1000); + Thread.sleep(5 * 1000); // 调用远程接口查询井盖状态 -// String baseURL = Configure.getProperty("sys", "PGDSC_API_URL"); -// HttpRequest.sendGet(baseURL + "remote/readJgStatus.action", "zcbh=" + zcbh); + String baseURL = Configure.getProperty("sys", "PGDSC_API_URL"); + HttpRequest.sendGet(baseURL + "remote/readJgStatus.action", "zcbh=" + zcbh); // 成功返回 jResult.put("success", true); @@ -284,10 +284,10 @@ } // 5秒后查询一次井盖的状态 -// Thread.sleep(5 * 1000); + Thread.sleep(5 * 1000); // 调用远程接口查询井盖状态 -// String baseURL = Configure.getProperty("sys", "PGDSC_API_URL"); -// HttpRequest.sendGet(baseURL + "remote/readJgStatus.action", "zcbh=" + zcbh); + String baseURL = Configure.getProperty("sys", "PGDSC_API_URL"); + HttpRequest.sendGet(baseURL + "remote/readJgStatus.action", "zcbh=" + zcbh); // 成功返回 jResult.put("success", true);