diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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 d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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 d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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 d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/com/szpg/task/ReadCOStatusTask.java b/src/com/szpg/task/ReadCOStatusTask.java new file mode 100644 index 0000000..11eca56 --- /dev/null +++ b/src/com/szpg/task/ReadCOStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOStatusCommand coAlmCmd = (ReadCOStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/com/szpg/task/ReadCOStatusTask.java b/src/com/szpg/task/ReadCOStatusTask.java new file mode 100644 index 0000000..11eca56 --- /dev/null +++ b/src/com/szpg/task/ReadCOStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOStatusCommand coAlmCmd = (ReadCOStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadCOValueTask.java b/src/com/szpg/task/ReadCOValueTask.java new file mode 100644 index 0000000..6ff413e --- /dev/null +++ b/src/com/szpg/task/ReadCOValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOValueCommand coCmd = (ReadCOValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coCmd.getId()); + cmd.setTm(coCmd.getTime().getTime()); + cmd.setCmd_type(coCmd.getCommandType()); + cmd.setDest(coCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coCmd.getMemoryArea() })); + cmd.setStart_mem_word(coCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coCmd.getStartAddress().substring(4)); + cmd.setCount_word(coCmd.getCountWord()); + cmd.setCount_bit(coCmd.getCountBit()); + cmd.setCount_sensor(coCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/com/szpg/task/ReadCOStatusTask.java b/src/com/szpg/task/ReadCOStatusTask.java new file mode 100644 index 0000000..11eca56 --- /dev/null +++ b/src/com/szpg/task/ReadCOStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOStatusCommand coAlmCmd = (ReadCOStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadCOValueTask.java b/src/com/szpg/task/ReadCOValueTask.java new file mode 100644 index 0000000..6ff413e --- /dev/null +++ b/src/com/szpg/task/ReadCOValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOValueCommand coCmd = (ReadCOValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coCmd.getId()); + cmd.setTm(coCmd.getTime().getTime()); + cmd.setCmd_type(coCmd.getCommandType()); + cmd.setDest(coCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coCmd.getMemoryArea() })); + cmd.setStart_mem_word(coCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coCmd.getStartAddress().substring(4)); + cmd.setCount_word(coCmd.getCountWord()); + cmd.setCount_bit(coCmd.getCountBit()); + cmd.setCount_sensor(coCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSStatusTask.java b/src/com/szpg/task/ReadHSStatusTask.java new file mode 100644 index 0000000..5fc4528 --- /dev/null +++ b/src/com/szpg/task/ReadHSStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSStatusCommand hsAlmCmd = (ReadHSStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsAlmCmd.getId()); + cmd.setTm(hsAlmCmd.getTime().getTime()); + cmd.setCmd_type(hsAlmCmd.getCommandType()); + cmd.setDest(hsAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsAlmCmd.getCountWord()); + cmd.setCount_bit(hsAlmCmd.getCountBit()); + cmd.setCount_sensor(hsAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/com/szpg/task/ReadCOStatusTask.java b/src/com/szpg/task/ReadCOStatusTask.java new file mode 100644 index 0000000..11eca56 --- /dev/null +++ b/src/com/szpg/task/ReadCOStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOStatusCommand coAlmCmd = (ReadCOStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadCOValueTask.java b/src/com/szpg/task/ReadCOValueTask.java new file mode 100644 index 0000000..6ff413e --- /dev/null +++ b/src/com/szpg/task/ReadCOValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOValueCommand coCmd = (ReadCOValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coCmd.getId()); + cmd.setTm(coCmd.getTime().getTime()); + cmd.setCmd_type(coCmd.getCommandType()); + cmd.setDest(coCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coCmd.getMemoryArea() })); + cmd.setStart_mem_word(coCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coCmd.getStartAddress().substring(4)); + cmd.setCount_word(coCmd.getCountWord()); + cmd.setCount_bit(coCmd.getCountBit()); + cmd.setCount_sensor(coCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSStatusTask.java b/src/com/szpg/task/ReadHSStatusTask.java new file mode 100644 index 0000000..5fc4528 --- /dev/null +++ b/src/com/szpg/task/ReadHSStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSStatusCommand hsAlmCmd = (ReadHSStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsAlmCmd.getId()); + cmd.setTm(hsAlmCmd.getTime().getTime()); + cmd.setCmd_type(hsAlmCmd.getCommandType()); + cmd.setDest(hsAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsAlmCmd.getCountWord()); + cmd.setCount_bit(hsAlmCmd.getCountBit()); + cmd.setCount_sensor(hsAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSValueTask.java b/src/com/szpg/task/ReadHSValueTask.java new file mode 100644 index 0000000..2b7591f --- /dev/null +++ b/src/com/szpg/task/ReadHSValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSValueCommand hsCmd = (ReadHSValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsCmd.getId()); + cmd.setTm(hsCmd.getTime().getTime()); + cmd.setCmd_type(hsCmd.getCommandType()); + cmd.setDest(hsCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsCmd.getCountWord()); + cmd.setCount_bit(hsCmd.getCountBit()); + cmd.setCount_sensor(hsCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/com/szpg/task/ReadCOStatusTask.java b/src/com/szpg/task/ReadCOStatusTask.java new file mode 100644 index 0000000..11eca56 --- /dev/null +++ b/src/com/szpg/task/ReadCOStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOStatusCommand coAlmCmd = (ReadCOStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadCOValueTask.java b/src/com/szpg/task/ReadCOValueTask.java new file mode 100644 index 0000000..6ff413e --- /dev/null +++ b/src/com/szpg/task/ReadCOValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOValueCommand coCmd = (ReadCOValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coCmd.getId()); + cmd.setTm(coCmd.getTime().getTime()); + cmd.setCmd_type(coCmd.getCommandType()); + cmd.setDest(coCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coCmd.getMemoryArea() })); + cmd.setStart_mem_word(coCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coCmd.getStartAddress().substring(4)); + cmd.setCount_word(coCmd.getCountWord()); + cmd.setCount_bit(coCmd.getCountBit()); + cmd.setCount_sensor(coCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSStatusTask.java b/src/com/szpg/task/ReadHSStatusTask.java new file mode 100644 index 0000000..5fc4528 --- /dev/null +++ b/src/com/szpg/task/ReadHSStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSStatusCommand hsAlmCmd = (ReadHSStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsAlmCmd.getId()); + cmd.setTm(hsAlmCmd.getTime().getTime()); + cmd.setCmd_type(hsAlmCmd.getCommandType()); + cmd.setDest(hsAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsAlmCmd.getCountWord()); + cmd.setCount_bit(hsAlmCmd.getCountBit()); + cmd.setCount_sensor(hsAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSValueTask.java b/src/com/szpg/task/ReadHSValueTask.java new file mode 100644 index 0000000..2b7591f --- /dev/null +++ b/src/com/szpg/task/ReadHSValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSValueCommand hsCmd = (ReadHSValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsCmd.getId()); + cmd.setTm(hsCmd.getTime().getTime()); + cmd.setCmd_type(hsCmd.getCommandType()); + cmd.setDest(hsCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsCmd.getCountWord()); + cmd.setCount_bit(hsCmd.getCountBit()); + cmd.setCount_sensor(hsCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadO2StatusTask.java b/src/com/szpg/task/ReadO2StatusTask.java new file mode 100644 index 0000000..d947bda --- /dev/null +++ b/src/com/szpg/task/ReadO2StatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadO2StatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadO2StatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取氧气参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadO2StatusCommand coAlmCmd = (ReadO2StatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/ACUBL.properties b/src/ACUBL.properties index d938543..ae086d4 100644 --- a/src/ACUBL.properties +++ b/src/ACUBL.properties @@ -27,3 +27,42 @@ YXL.ACU001.WSALM.WORDCOUNT = 3 #\u6e29\u6e7f\u5ea6\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 YXL.ACU001.WSALM.BITCOUNT = 12 + +#\u4e00\u6c27\u5316\u78b3\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.CO.COUNT = 6 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.CO.START = 0550 +#\u4e00\u6c27\u5316\u78b3\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.CO.WORDCOUNT = 24 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.COALM.START = 0036 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.COALM.WORDCOUNT = 1 +#\u4e00\u6c27\u5316\u78b3\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.COALM.BITCOUNT = 12 + +#\u6c27\u6c14\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.O2.COUNT = 6 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2.START = 0500 +#\u6c27\u6c14\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2.WORDCOUNT = 24 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.O2ALM.START = 0036 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.O2ALM.WORDCOUNT = 1 +#\u6c27\u6c14\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.O2ALM.BITCOUNT = 12 + +#\u786b\u5316\u6c22\u4f20\u611f\u5668\u6570\u91cf +YXL.ACU001.HS.COUNT = 6 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HS.START = 0350 +#\u786b\u5316\u6c22\u6d53\u5ea6\u53c2\u6570\u6240\u5360\u5b57\u6570 +YXL.ACU001.HS.WORDCOUNT = 24 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u8d77\u59cb\u5730\u5740 +YXL.ACU001.HSALM.START = 0028 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u5b57\u6570 +YXL.ACU001.HSALM.WORDCOUNT = 1 +#\u786b\u5316\u6c22\u62a5\u8b66\u72b6\u6001\u6240\u5360\u4f4d\u6570 +YXL.ACU001.HSALM.BITCOUNT = 12 diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index de29fb8..5e6edbc 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -14,6 +14,12 @@ import com.szpg.plc.util.ByteUtil; import com.szpg.task.ACUSocketCheckTask; import com.szpg.task.ReadCH4ValueTask; +import com.szpg.task.ReadCOStatusTask; +import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadHSStatusTask; +import com.szpg.task.ReadHSValueTask; +import com.szpg.task.ReadO2StatusTask; +import com.szpg.task.ReadO2ValueTask; import com.szpg.task.ReadWSStatusTask; import com.szpg.task.ReadWSValueTask; import com.szpg.task.ReadCH4StatusTask; @@ -24,7 +30,7 @@ private static DSCTest dsc = new DSCTest(); public static void main(String[] args) { - ACUClient client = new ACUClient("192.168.8.105", 6800); + ACUClient client = new ACUClient("192.168.8.103", 6800); client.setNet("00"); client.setNode("6B"); @@ -38,15 +44,33 @@ // 测试发送查询甲烷参数命令 // dsc.testSendCH4Command(client); - // 测试发送查询甲烷报警状态命令 // dsc.testSendCH4StatsuCommand(client); // 测试发送查询温湿度监测值命令 // dsc.testSendWSCommand(client); - // 测试发送查询温湿度报警状态命令 - dsc.testSendWSStatusCommand(client); +// dsc.testSendWSStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询一氧化碳参数命令 +// dsc.testSendCOCommand(client); + // 测试发送查询一氧化碳报警状态命令 +// dsc.testSendCOStatusCommand(client); + + // 测试发送查询氧气参数命令 +// dsc.testSendO2Command(client); + // 测试发送查询氧气报警状态命令 +// dsc.testSendO2StatusCommand(client); + + // 测试发送查询硫化氢参数命令 + dsc.testSendHSCommand(client); + // 测试发送查询硫化氢报警状态命令 + dsc.testSendHSStatusCommand(client); } /** @@ -159,4 +183,169 @@ sche.schedule(new ReadWSStatusTask(client, wsalm), 15, TimeUnit.SECONDS); sche.shutdown(); //执行完任务之后关闭线程 } + + /** + * 发送查询一氧化碳监测值命令 + * + * @param client + */ + public void testSendCOCommand(ACUClient client) { + ReadMemoryCommand co = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + co.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + co.setDestinationId(dest); + + co.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + co.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.START")), 2)) + "00"); + co.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.WORDCOUNT"))); + co.setCountBit(0); //读取监测值时位数量无效 + co.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOValueTask(client, co), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendCOStatusCommand(ACUClient client) { + ReadMemoryCommand coalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READCOSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + coalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + coalm.setDestinationId(dest); + + coalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + coalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.START")), 2)) + "00"); + coalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.WORDCOUNT"))); + coalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".COALM.BITCOUNT"))); + coalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".CO.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadCOStatusTask(client, coalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询氧气监测值命令 + * + * @param client + */ + public void testSendO2Command(ACUClient client) { + ReadMemoryCommand o2 = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2VALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2.setDestinationId(dest); + + o2.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + o2.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.START")), 2)) + "00"); + o2.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.WORDCOUNT"))); + o2.setCountBit(0); //读取监测值时位数量无效 + o2.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2ValueTask(client, o2), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询一氧化碳报警状态命令 + * @param client + */ + public void testSendO2StatusCommand(ACUClient client) { + ReadMemoryCommand o2alm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READO2STATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + o2alm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + o2alm.setDestinationId(dest); + + o2alm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + o2alm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.START")), 2)) + "00"); + o2alm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.WORDCOUNT"))); + o2alm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2ALM.BITCOUNT"))); + o2alm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".O2.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadO2StatusTask(client, o2alm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢监测值命令 + * + * @param client + */ + public void testSendHSCommand(ACUClient client) { + ReadMemoryCommand hs = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSVALUE); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hs.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hs.setDestinationId(dest); + + hs.setMemoryArea(FINSConstants.MEMORY_DM_AREA); + + hs.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.START")), 2)) + "00"); + hs.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.WORDCOUNT"))); + hs.setCountBit(0); //读取监测值时位数量无效 + hs.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSValueTask(client, hs), 12, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } + + /** + * 发送查询硫化氢报警状态命令 + * @param client + */ + public void testSendHSStatusCommand(ACUClient client) { + ReadMemoryCommand hsalm = ReadMemoryCommand.getInstance(AppMessageConstants.CMD_TYPE_READHSSTATUS); + String sour = Configure.getProperty("sys", "LOCALHOST.NET") + + Configure.getProperty("sys", "LOCALHOST.NODE") + + Configure.getProperty("sys", "LOCALHOST.UNIT"); + hsalm.setMessageProducerId(sour); + + PgAcu acu = new PgAcuDaoImpl().findACUById(1); + String dest = acu.getAcu_net() + acu.getAcu_node() + acu.getAcu_unit(); + hsalm.setDestinationId(dest); + + hsalm.setMemoryArea(FINSConstants.MEMORY_WORK_AREA); + + hsalm.setStartAddress(ByteUtil.binToHexString(ByteUtil.intToBins(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.START")), 2)) + "00"); + hsalm.setCountWord(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.WORDCOUNT"))); + hsalm.setCountBit(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HSALM.BITCOUNT"))); + hsalm.setCountSensor(Integer.parseInt(Configure.getProperty("acubl", acu.getAcu_code() + ".HS.COUNT"))); + + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.schedule(new ReadHSStatusTask(client, hsalm), 15, TimeUnit.SECONDS); + sche.shutdown(); //执行完任务之后关闭线程 + } } diff --git a/src/com/szpg/db/dao/PgCODao.java b/src/com/szpg/db/dao/PgCODao.java new file mode 100644 index 0000000..a3736bf --- /dev/null +++ b/src/com/szpg/db/dao/PgCODao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; + +/** + * 一氧化碳相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgCODao { + + /******** 一氧化碳浓度变量值 ********/ + public List findAllPblz(); + public PgCO findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgCO ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 一氧化碳浓度报警状态 ********/ + public List findAllSbjz(); + public PgCOAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgCOAlm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgDeviceDao.java b/src/com/szpg/db/dao/PgDeviceDao.java index 5eb42b5..a93c3bd 100644 --- a/src/com/szpg/db/dao/PgDeviceDao.java +++ b/src/com/szpg/db/dao/PgDeviceDao.java @@ -4,6 +4,10 @@ public interface PgDeviceDao { + public List findDeviceIdByDestAndType(String dest, String type); + public List findCH4DeviceIdByDest(String dest); public List findWSDeviceIdByDest(String dest); + public List findCODeviceIdByDest(String dest); + public List findO2DeviceIdByDest(String dest); } diff --git a/src/com/szpg/db/dao/PgHSDao.java b/src/com/szpg/db/dao/PgHSDao.java new file mode 100644 index 0000000..779a6a7 --- /dev/null +++ b/src/com/szpg/db/dao/PgHSDao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; + +/** + * 硫化氢相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgHSDao { + + /******** 硫化氢浓度变量值 ********/ + public List findAllPblz(); + public PgSH findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgSH hs); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 硫化氢浓度报警状态 ********/ + public List findAllSbjz(); + public PgSHAlm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgSHAlm hsalm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/PgO2Dao.java b/src/com/szpg/db/dao/PgO2Dao.java new file mode 100644 index 0000000..2010c96 --- /dev/null +++ b/src/com/szpg/db/dao/PgO2Dao.java @@ -0,0 +1,35 @@ +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; + +/** + * 氧气相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgO2Dao { + + /******** 氧气浓度变量值 ********/ + public List findAllPblz(); + public PgO2 findPblzById(Integer id); + + public List findPblzByDevice(Integer deviceid); + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addPblzRecord(PgO2 ch4); + public int addPblzRecord(float value, String tm, int deviceid); + + + /******** 氧气浓度报警状态 ********/ + public List findAllSbjz(); + public PgO2Alm findSbjzById(Integer id); + + public List findSbjzByDevice(Integer deviceid); + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end); + + public int addSbjzRecord(PgO2Alm ch4alm); + public int addSbjzRecord(boolean status, String tm, int deviceid); +} diff --git a/src/com/szpg/db/dao/impl/PgCODaoImpl.java b/src/com/szpg/db/dao/impl/PgCODaoImpl.java new file mode 100644 index 0000000..169ad92 --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgCODaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.data.PgCO; +import com.szpg.db.data.PgCOAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgCODaoImpl implements PgCODao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCO findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCO co = new PgCO(); + Object[] item = tempList.get(0); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳监测值成功" + co + "]"); + + return co; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, CO, LOGTIME, PGDEVICEID FROM PG_CO WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCO co = new PgCO(); + Object[] item = tempList.get(i); + + co.setId(((Number) item[0]).intValue()); + co.setCo(Float.parseFloat((String) item[1])); + co.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + co.setLogtime(cal.getTime()); + co.setUptime(cal.getTime()); + + list.add(co); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgCO ch4) { + return addPblzRecord(ch4.getCo(), ch4.getTmStr(), ch4.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO " + + "(CO, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgCOAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(0); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询一氧化碳报警状态成功" + coalm + "]"); + + return coalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, COALM, LOGTIME, PGDEVICEID FROM PG_CO_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询一氧化碳报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgCOAlm coalm = new PgCOAlm(); + Object[] item = tempList.get(i); + + coalm.setId(((Number) item[0]).intValue()); + coalm.setCoalm(Boolean.parseBoolean((String) item[1])); + coalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + coalm.setLogtime(cal.getTime()); + coalm.setUptime(cal.getTime()); + + list.add(coalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询一氧化碳报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgCOAlm ch4alm) { + return addSbjzRecord(ch4alm.getCoalm(), ch4alm.getTmStr(), ch4alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_CO_ALM " + + "(COALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入一氧化碳报警状态成功[tm=" + tm + ", 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/PgDeviceDaoImpl.java b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java index 5bffb41..657281c 100644 --- a/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgDeviceDaoImpl.java @@ -16,6 +16,64 @@ public class PgDeviceDaoImpl implements PgDeviceDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findDeviceIdByDestAndType(String dest, String type) { + Connection conn = null; + + String key = ""; + + switch (type.toUpperCase()) { + case "CH": + key = "%甲烷%"; + break; + case "WS": + key = "%温湿度%"; + break; + case "CO": + key = "%一氧化碳%"; + break; + case "O2": + key = "%氧气%"; + break; + case "HS": + key = "%硫化氢%"; + break; + } + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '" + key + "' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址和类型查询设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址和类型查询设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } @Override public List findCH4DeviceIdByDest(String dest) { @@ -70,7 +128,7 @@ List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); if (null != tempList && tempList.isEmpty() == false) { - logger.debug("根据ACU的目的地址查询甲烷设备ID成功[" + tempList.size() + "]"); + logger.debug("根据ACU的目的地址查询温湿度设备ID成功[" + tempList.size() + "]"); List list = new ArrayList(); for (int i = 0; i < tempList.size(); i++) { @@ -82,7 +140,83 @@ else return null; } catch (Exception ex) { - logger.error("根据ACU的目的地址查询甲烷设备ID异常", ex); + logger.error("根据ACU的目的地址查询温湿度设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findCODeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%一氧化碳%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询一氧化碳设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询一氧化碳设备ID异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findO2DeviceIdByDest(String dest) { + Connection conn = null; + + String queryStr = "SELECT D.ID FROM PG_DEVICE D, PG_ACU A WHERE D.PARTITION = A.ACU_CODE AND A.ACU_DEST = ? AND D.DEVCODE LIKE '%氧气%' ORDER BY D.ID"; + Object[] param = new Object[1]; + param[0] = dest; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ColumnListHandler(), param); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据ACU的目的地址查询氧气设备ID成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + list.add(((Number) tempList.get(i)).intValue()); + } + + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ACU的目的地址查询氧气设备ID异常", ex); } finally { try { DbUtils.commitAndClose(conn); diff --git a/src/com/szpg/db/dao/impl/PgHSDaoImpl.java b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java new file mode 100644 index 0000000..c1cd49b --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgHSDaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.data.PgSH; +import com.szpg.db.data.PgSHAlm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgHSDaoImpl implements PgHSDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSH findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(0); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢监测值成功" + sh + "]"); + + return sh; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SH, LOGTIME, PGDEVICEID FROM PG_SH WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSH sh = new PgSH(); + Object[] item = tempList.get(i); + + sh.setId(((Number) item[0]).intValue()); + sh.setSh(Float.parseFloat((String) item[1])); + sh.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + sh.setLogtime(cal.getTime()); + sh.setUptime(cal.getTime()); + + list.add(sh); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgSH sh) { + return addPblzRecord(sh.getSh(), sh.getTmStr(), sh.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH " + + "(SH, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSHAlm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(0); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + logger.debug("根据ID查询硫化氢报警状态成功" + shalm + "]"); + + return shalm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, SHALM, LOGTIME, PGDEVICEID FROM PG_SH_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询硫化氢报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgSHAlm shalm = new PgSHAlm(); + Object[] item = tempList.get(i); + + shalm.setId(((Number) item[0]).intValue()); + shalm.setShalm(Boolean.parseBoolean((String) item[1])); + shalm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + shalm.setLogtime(cal.getTime()); + shalm.setUptime(cal.getTime()); + + list.add(shalm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询硫化氢报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgSHAlm shalm) { + return addSbjzRecord(shalm.getShalm(), shalm.getTmStr(), shalm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SH_ALM " + + "(SHALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入硫化氢报警状态成功[tm=" + tm + ", 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/PgO2DaoImpl.java b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java new file mode 100644 index 0000000..62eb0fd --- /dev/null +++ b/src/com/szpg/db/dao/impl/PgO2DaoImpl.java @@ -0,0 +1,502 @@ +package com.szpg.db.dao.impl; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.apache.commons.dbutils.DbUtils; +import org.apache.commons.dbutils.QueryRunner; +import org.apache.commons.dbutils.handlers.ArrayListHandler; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.data.PgO2; +import com.szpg.db.data.PgO2Alm; +import com.szpg.db.util.ConnectionManager; +import com.szpg.util.NumberFormat; + +public class PgO2DaoImpl implements PgO2Dao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public List findAllPblz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2 findPblzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(0); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气监测值成功" + o2 + "]"); + + return o2; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findPblzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2, LOGTIME, PGDEVICEID FROM PG_O2 WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气监测值成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2 o2 = new PgO2(); + Object[] item = tempList.get(i); + + o2.setId(((Number) item[0]).intValue()); + o2.setO2(Float.parseFloat((String) item[1])); + o2.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2.setLogtime(cal.getTime()); + o2.setUptime(cal.getTime()); + + list.add(o2); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气监测值异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addPblzRecord(PgO2 o2) { + return addPblzRecord(o2.getO2(), o2.getTmStr(), o2.getPgdeviceid()); + } + + @Override + public int addPblzRecord(float value, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2 " + + "(O2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = NumberFormat.format(value, "0.00"); + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气监测值成功[tm=" + tm + ", value=" + value + ", 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; + } + + @Override + public List findAllSbjz() { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("查询所有氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("查询所有氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgO2Alm findSbjzById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE ID = ?"; + Object[] param = new Object[1]; + param[0] = id; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler(), param); + + if (null != tempList && tempList.size() == 1) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(0); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + logger.debug("根据ID查询氧气报警状态成功" + o2alm + "]"); + + return o2alm; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ?"; + Object[] param = new Object[1]; + param[0] = deviceid; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findSbjzByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, O2ALM, LOGTIME, PGDEVICEID FROM PG_O2_ALM WHERE PGDEVICEID = ? AND LOGTIME >= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS') AND LOGTIME <= TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS')"; + Object[] params = new Object[3]; + params[0] = deviceid; + params[1] = start; + params[2] = end; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + List tempList = (List) runner.query(conn, queryStr, new ArrayListHandler()); + + if (null != tempList && tempList.isEmpty() == false) { + logger.debug("根据设备ID和时间查询氧气报警状态成功[" + tempList.size() + "]"); + + List list = new ArrayList(); + for (int i = 0; i < tempList.size(); i++) { + PgO2Alm o2alm = new PgO2Alm(); + Object[] item = tempList.get(i); + + o2alm.setId(((Number) item[0]).intValue()); + o2alm.setO2alm(Boolean.parseBoolean((String) item[1])); + o2alm.setPgdeviceid(((Number) item[3]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[2]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + o2alm.setLogtime(cal.getTime()); + o2alm.setUptime(cal.getTime()); + + list.add(o2alm); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询氧气报警状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public int addSbjzRecord(PgO2Alm o2alm) { + return addSbjzRecord(o2alm.getO2alm(), o2alm.getTmStr(), o2alm.getPgdeviceid()); + } + + @Override + public int addSbjzRecord(boolean status, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_O2_ALM " + + "(O2ALM, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[4]; + params[0] = status; + params[1] = tm; + params[2] = tm; + params[3] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入氧气报警状态成功[tm=" + tm + ", 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/data/PgCO.java b/src/com/szpg/db/data/PgCO.java new file mode 100644 index 0000000..6ba96f5 --- /dev/null +++ b/src/com/szpg/db/data/PgCO.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度值监测数据表 + * + * @author admin + * + */ +public class PgCO implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3227305968602654566L; + + private Integer id; + private Float co; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getCo() { + return co; + } + + public void setCo(Float co) { + this.co = co; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCO[co=" + co + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgCOAlm.java b/src/com/szpg/db/data/PgCOAlm.java new file mode 100644 index 0000000..3b09364 --- /dev/null +++ b/src/com/szpg/db/data/PgCOAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 一氧化碳浓度报警状态数据表 + * + * @author admin + * + */ +public class PgCOAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -109172405679187040L; + + private Integer id; + private Boolean coalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getCoalm() { + return coalm; + } + + public void setCoalm(Boolean ch4alm) { + this.coalm = ch4alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgCOAlm[coalm=" + coalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2.java b/src/com/szpg/db/data/PgO2.java new file mode 100644 index 0000000..3fd4182 --- /dev/null +++ b/src/com/szpg/db/data/PgO2.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度值监测数据表 + * + * @author admin + * + */ +public class PgO2 implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -975909697697886705L; + + private Integer id; + private Float o2; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getO2() { + return o2; + } + + public void setO2(Float o2) { + this.o2 = o2; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2[o2=" + o2 + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgO2Alm.java b/src/com/szpg/db/data/PgO2Alm.java new file mode 100644 index 0000000..0c067bb --- /dev/null +++ b/src/com/szpg/db/data/PgO2Alm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 氧气浓度报警状态数据表 + * + * @author admin + * + */ +public class PgO2Alm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -2069351218525911493L; + + private Integer id; + private Boolean o2alm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getO2alm() { + return o2alm; + } + + public void setO2alm(Boolean o2alm) { + this.o2alm = o2alm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgO2Alm[o2alm=" + o2alm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSH.java b/src/com/szpg/db/data/PgSH.java new file mode 100644 index 0000000..06d5262 --- /dev/null +++ b/src/com/szpg/db/data/PgSH.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度值监测数据表 + * + * @author admin + * + */ +public class PgSH implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -979686423241349719L; + + private Integer id; + private Float sh; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Float getSh() { + return sh; + } + + public void setSh(Float sh) { + this.sh = sh; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSH[sh=" + sh + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/db/data/PgSHAlm.java b/src/com/szpg/db/data/PgSHAlm.java new file mode 100644 index 0000000..afeb05a --- /dev/null +++ b/src/com/szpg/db/data/PgSHAlm.java @@ -0,0 +1,91 @@ +package com.szpg.db.data; + +import java.util.Date; + +import com.szpg.util.TimeFormat; + +/** + * 硫化氢浓度报警状态数据表 + * + * @author admin + * + */ +public class PgSHAlm implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 3882791834818808488L; + + private Integer id; + private Boolean shalm; + private Date logtime; + private Date uptime; + private Integer pgdeviceid; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Boolean getShalm() { + return shalm; + } + + public void setShalm(Boolean shalm) { + this.shalm = shalm; + } + + public Date getLogtime() { + return logtime; + } + + public void setLogtime(Date logtime) { + this.logtime = logtime; + } + + public Date getUptime() { + return uptime; + } + + public void setUptime(Date uptime) { + this.uptime = uptime; + } + + public Integer getPgdeviceid() { + return pgdeviceid; + } + + public void setPgdeviceid(Integer pgdeviceid) { + this.pgdeviceid = pgdeviceid; + } + + public void setTm(Date tm) { + this.logtime = tm; + this.uptime = tm; + } + + public String getTmStr() { + if (null != this.logtime) { + return TimeFormat.formatTimestamp(logtime); + } else { + return ""; + } + } + + public String getTmStrGB() { + if (null != this.logtime) { + return TimeFormat.format(logtime, "yyyyMMddHHmmss"); + } else { + return ""; + } + } + + @Override + public String toString() { + return "PgSHAlm[shalm=" + shalm + ", logtime=" + TimeFormat.formatTimestamp(logtime) + "]"; + } +} diff --git a/src/com/szpg/plc/message/AppMessageConstants.java b/src/com/szpg/plc/message/AppMessageConstants.java index 21c33d7..25db6ab 100644 --- a/src/com/szpg/plc/message/AppMessageConstants.java +++ b/src/com/szpg/plc/message/AppMessageConstants.java @@ -3,8 +3,14 @@ public class AppMessageConstants { /******** 命令类型 ********/ - public final static String CMD_TYPE_READCH4VALUE = "11"; - public final static String CMD_TYPE_READCH4STATUS = "12"; - public final static String CMD_TYPE_READWSVALUE = "13"; - public final static String CMD_TYPE_READWSSTATUS = "14"; + public final static String CMD_TYPE_READCH4VALUE = "10"; //读取甲烷监测值命令 + public final static String CMD_TYPE_READCH4STATUS = "11"; //读取甲烷报警状态命令 + public final static String CMD_TYPE_READWSVALUE = "12"; //读取温湿度监测值命令 + public final static String CMD_TYPE_READWSSTATUS = "13"; //读取温湿度报警状态命令 + public final static String CMD_TYPE_READCOVALUE = "14"; //读取一氧化碳监测值命令 + public final static String CMD_TYPE_READCOSTATUS = "15"; //读取一氧化碳报警状态命令 + public final static String CMD_TYPE_READO2VALUE = "16"; //读取氧气监测值命令 + public final static String CMD_TYPE_READO2STATUS = "17"; //读取氧气报警状态命令 + public final static String CMD_TYPE_READHSVALUE = "18"; //读取硫化氢监测值命令 + public final static String CMD_TYPE_READHSSTATUS = "19"; //读取硫化氢报警状态命令 } diff --git a/src/com/szpg/plc/message/command/ReadMemoryCommand.java b/src/com/szpg/plc/message/command/ReadMemoryCommand.java index 36e94c9..acf2859 100644 --- a/src/com/szpg/plc/message/command/ReadMemoryCommand.java +++ b/src/com/szpg/plc/message/command/ReadMemoryCommand.java @@ -3,6 +3,12 @@ import com.szpg.plc.message.AppCommand; import com.szpg.plc.message.AppMessageConstants; import com.szpg.plc.message.command.read.ReadCH4ValueCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; import com.szpg.plc.message.command.read.ReadWSStatusCommand; import com.szpg.plc.message.command.read.ReadWSValueCommand; import com.szpg.plc.message.command.read.ReadCH4StatusCommand; @@ -80,6 +86,21 @@ return new ReadWSValueCommand(); case AppMessageConstants.CMD_TYPE_READWSSTATUS: return new ReadWSStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + return new ReadCOValueCommand(); + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + return new ReadCOStatusCommand(); + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + return new ReadO2ValueCommand(); + case AppMessageConstants.CMD_TYPE_READO2STATUS: + return new ReadO2StatusCommand(); + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + return new ReadHSValueCommand(); + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + return new ReadHSStatusCommand(); default: return null; diff --git a/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java new file mode 100644 index 0000000..757074e --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; + +public class ReadCOStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1832337387328363476L; + + @Override + public Class getResponseClass() { + return ReadCOStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java new file mode 100644 index 0000000..499c723 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadCOValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; + +public class ReadCOValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -5055992591944064485L; + + @Override + public Class getResponseClass() { + return ReadCOValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询一氧化碳监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READCOVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java new file mode 100644 index 0000000..e1b7536 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSStatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; + +public class ReadHSStatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8621697814661716115L; + + @Override + public Class getResponseClass() { + return ReadHSStatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSSTATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java new file mode 100644 index 0000000..b0f26a4 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadHSValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; + +public class ReadHSValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 4751118509338498554L; + + @Override + public Class getResponseClass() { + return ReadHSValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询硫化氢监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READHSVALUE; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java new file mode 100644 index 0000000..d015f28 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2StatusCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; + +public class ReadO2StatusCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = -8234355798275813455L; + + @Override + public Class getResponseClass() { + return ReadO2StatusCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气报警状态命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2STATUS; + } + +} diff --git a/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java new file mode 100644 index 0000000..e3c2277 --- /dev/null +++ b/src/com/szpg/plc/message/command/read/ReadO2ValueCommand.java @@ -0,0 +1,29 @@ +package com.szpg.plc.message.command.read; + +import com.szpg.plc.message.AppMessageConstants; +import com.szpg.plc.message.command.ReadMemoryCommand; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; + +public class ReadO2ValueCommand extends ReadMemoryCommand { + + /** + * + */ + private static final long serialVersionUID = 1510785086742879166L; + + @Override + public Class getResponseClass() { + return ReadO2ValueCommandResponse.class; + } + + @Override + public String toString() { + return "向终端[" + getDestinationId() + "]发送查询氧气监测值命令"; + } + + @Override + public String getCommandType() { + return AppMessageConstants.CMD_TYPE_READO2VALUE; + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java index 0d35015..282e4b5 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4StatusCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java index b92912b..4c4cd83 100644 --- a/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadCH4ValueCommandResponse.java @@ -47,7 +47,7 @@ PgCh4Dao ch4Dao = new PgCh4DaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findCH4DeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CH"); for (int i = 0; i < jwnd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java new file mode 100644 index 0000000..e51fd6e --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -6730342916591454611L; + + private List cobj; // 一氧化碳浓度报警状态 + private List coldbj; // 一氧化碳是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将一氧化碳报警状态数据存入数据库 + PgCODao coalm = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cobj.size(); i++) { + if (i < ids.size()) { + coalm.addSbjzRecord(cobj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (cobj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java new file mode 100644 index 0000000..96b9e7d --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadCOValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgCODao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgCODaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadCOValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 1701662136000200479L; + + private List cond; //一氧化碳浓度值 + private List coldbjz; //一氧化碳联动报警值 + + public ReadCOValueCommandResponse() { + cond = new ArrayList(); + coldbjz = new ArrayList(); + } + + public List getCond() { + return cond; + } + + public void setCond(List cond) { + this.cond = cond; + } + + public List getColdbjz() { + return coldbjz; + } + + public void setColdbjz(List coldbjz) { + this.coldbjz = coldbjz; + } + + @Override + public void afterAction() { + // 1将一氧化碳浓度数据存入数据库 + PgCODao coDao = new PgCODaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "CO"); + + for (int i = 0; i < cond.size(); i++) { + if (i < ids.size()) { + coDao.addPblzRecord(cond.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java new file mode 100644 index 0000000..be44083 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSStatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 6630884988346141548L; + + private List hsbj; // 硫化氢浓度报警状态 + private List hsldbj; // 硫化氢是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将硫化氢报警状态数据存入数据库 + PgHSDao hsalmDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsbj.size(); i++) { + if (i < ids.size()) { + hsalmDao.addSbjzRecord(hsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (hsbj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java new file mode 100644 index 0000000..838d4ac --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadHSValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHSDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHSDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadHSValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3546717876436310153L; + + private List hsnd; //硫化氢浓度值 + private List hsldbjz; //硫化氢联动报警值 + + public ReadHSValueCommandResponse() { + hsnd = new ArrayList(); + hsldbjz = new ArrayList(); + } + + public List getHsnd() { + return hsnd; + } + + public void setHsnd(List hsnd) { + this.hsnd = hsnd; + } + + public List getHsldbjz() { + return hsldbjz; + } + + public void setHsldbjz(List hsldbjz) { + this.hsldbjz = hsldbjz; + } + + @Override + public void afterAction() { + // 1将硫化氢浓度数据存入数据库 + PgHSDao hsDao = new PgHSDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "HS"); + + for (int i = 0; i < hsnd.size(); i++) { + if (i < ids.size()) { + hsDao.addPblzRecord(hsnd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java new file mode 100644 index 0000000..fa8e36c --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2StatusCommandResponse.java @@ -0,0 +1,68 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2StatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -7689160555457222001L; + + private List o2bj; // 氧气浓度报警状态 + private List o2ldbj; // 氧气是否联动报警 + + 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; + } + + @Override + public void afterAction() { + // 1将氧气报警状态数据存入数据库 + PgO2Dao o2alm = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2bj.size(); i++) { + if (i < ids.size()) { + o2alm.addSbjzRecord(o2bj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + + // 有报警状态 + if (o2bj.get(i) == true) { + // TODO + // 1存入报警管理表 + + // 2发送查询报警值的命令 + + } + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java new file mode 100644 index 0000000..4c52856 --- /dev/null +++ b/src/com/szpg/plc/message/response/read/ReadO2ValueCommandResponse.java @@ -0,0 +1,59 @@ +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import com.szpg.db.dao.PgO2Dao; +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.impl.PgO2DaoImpl; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.util.TimeFormat; + +public class ReadO2ValueCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 3740028978076262508L; + + private List o2nd; // 氧气浓度值 + private List o2ldbjz; // 氧气联动报警值 + + public ReadO2ValueCommandResponse() { + o2nd = new ArrayList(); + o2ldbjz = new ArrayList(); + } + + public List getO2nd() { + return o2nd; + } + + public void setO2nd(List o2nd) { + this.o2nd = o2nd; + } + + public List getO2ldbjz() { + return o2ldbjz; + } + + public void setO2ldbjz(List o2ldbjz) { + this.o2ldbjz = o2ldbjz; + } + + @Override + public void afterAction() { + // 1将氧气浓度数据存入数据库 + PgO2Dao o2Dao = new PgO2DaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "O2"); + + for (int i = 0; i < o2nd.size(); i++) { + if (i < ids.size()) { + o2Dao.addPblzRecord(o2nd.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), ids.get(i)); + } + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java index 99c4f57..41a3719 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSStatusCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wdbj.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java index ffdb6d1..ca9f027 100644 --- a/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadWSValueCommandResponse.java @@ -67,7 +67,7 @@ PgWsDao wsDao = new PgWsDaoImpl(); PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - List ids = deviceDao.findWSDeviceIdByDest(this.getMessageProducerId()); + List ids = deviceDao.findDeviceIdByDestAndType(this.getMessageProducerId(), "WS"); for (int i = 0; i < wd.size(); i++) { if (i < ids.size()) { diff --git a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java index 736bc18..a11ae12 100644 --- a/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java +++ b/src/com/szpg/plc/protocol/fins/FINSDTProtocolImp.java @@ -17,6 +17,12 @@ import com.szpg.plc.message.response.LinkCommandResponse; import com.szpg.plc.message.response.read.ReadCH4StatusCommandResponse; import com.szpg.plc.message.response.read.ReadCH4ValueCommandResponse; +import com.szpg.plc.message.response.read.ReadCOStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadCOValueCommandResponse; +import com.szpg.plc.message.response.read.ReadHSStatusCommandResponse; +import com.szpg.plc.message.response.read.ReadHSValueCommandResponse; +import com.szpg.plc.message.response.read.ReadO2StatusCommandResponse; +import com.szpg.plc.message.response.read.ReadO2ValueCommandResponse; import com.szpg.plc.message.response.read.ReadWSStatusCommandResponse; import com.szpg.plc.message.response.read.ReadWSValueCommandResponse; import com.szpg.plc.protocol.DTProtocolInterface; @@ -127,7 +133,6 @@ case AppMessageConstants.CMD_TYPE_READCH4VALUE: received = bytesToReadCH4ValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READCH4STATUS: received = bytesToReadCH4StatusCommandResponse(finsFrame, readCmd); break; @@ -135,10 +140,30 @@ case AppMessageConstants.CMD_TYPE_READWSVALUE: received = bytesToReadWSValueCommandResponse(finsFrame, readCmd); break; - case AppMessageConstants.CMD_TYPE_READWSSTATUS: received = bytesToReadWSStatusCommandResponse(finsFrame, readCmd); break; + + case AppMessageConstants.CMD_TYPE_READCOVALUE: + received = bytesToReadCOValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READCOSTATUS: + received = bytesToReadCOStatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READO2VALUE: + received = bytesToReadO2ValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READO2STATUS: + received = bytesToReadO2StatusCommandResponse(finsFrame, readCmd); + break; + + case AppMessageConstants.CMD_TYPE_READHSVALUE: + received = bytesToReadHSValueCommandResponse(finsFrame, readCmd); + break; + case AppMessageConstants.CMD_TYPE_READHSSTATUS: + received = bytesToReadHSStatusCommandResponse(finsFrame, readCmd); + break; } // 4将已响应的命令删除 @@ -152,173 +177,6 @@ // // -// byte typeb = finsFrame.FRAME_DATA_AFN; -// int type = ByteUtil.binToInt(typeb); -// switch (type) { -// case FINSConstants.DATA_AFN_LOGIN: // 链路监测消息 -// received = bytesToLinkCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_TIMINGDATA: // 定时自报实时值 -// received = bytesToTimingDataMessage(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYREALTIMEVALUE: // 查询实时值响应 -// received = bytesToQueryRealTimeValueCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYREALTIMESTATUS: // 查询实时状态响应 -// received = bytesToQueryRealTimeStatusCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETADDRESS: // 设置终端地址响应消息 -// received = bytesToSetAddressCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYADDRESS: // 查询终端地址响应消息 -// received = bytesToQueryAddressResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCLOCK: // 设置终端时钟响应消息 -// received = bytesToSetClockCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCLOCK: // 查询终端时钟响应消息 -// received = bytesToQueryClockCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWORKPATTERN: // 设置终端工作模式响应消息 -// received = bytesToSetPatternCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWORKPATTERN: // 查询终端工作模式响应消息 -// received = bytesToQueryPatternCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETINTERVAL: // 设置终端自报种类及时间间隔 -// received = bytesToSetIntervalCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYINTERVAL: // 查询终端自报种类及时间间隔 -// received = bytesToQueryIntervalCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWARNING: // 设置终端剩余水量报警值 -// received = bytesToSetWarningCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWARNING: // 查询终端剩余水量报警值 -// received = bytesToQueryWarningCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERLEVELPARAM: // 设置终端水位参数 -// received = bytesToSetWlParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERLEVELPARAM: // 查询终端水位参数 -// received = bytesToQueryWlParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERPRESSUREPARAM: // 设置终端水压参数 -// received = bytesToSetWpParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERPRESSUREPARAM: // 查询终端水压参数 -// received = bytesToQueryWpParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERFLOWUPPERPARAM: // 设置终端流量参数 -// received = bytesToSetWfParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERFLOWUPPERPARAM: // 查询终端流量参数 -// received = bytesToQueryWfParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETWATERQUALITYUPPERPARAM: // 设置终端水质参数 -// received = bytesToSetWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETWATERQUALITYLOWERPARAM: -// received = bytesToSetWqLowerParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYUPPERPARAM: // 查询终端水质参数 -// received = bytesToQueryWqUpperParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYWATERQUALITYLOWERPARAM: -// received = bytesToQueryWqLowerParamCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETRTTYPES: // 设置终端需查询的实时数据种类 -// received = bytesToSetRttypesCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYRTTYPES: // 查询终端需查询的实时数据种类 -// received = bytesToQueryRttypesCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETCHARGING: // 设置终端充值量 -// received = bytesToSetChargingCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_QUERYCHARGING: // 查询终端充值量和剩余水量 -// received = bytesToQueryChargingCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETTHRESHOLD: // 设置终端启报阈值及存储时间段间隔 -// received = bytesToSetThresholdCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_SETFIXEDVALUE: // 设置终端定值量 -// received = bytesToSetFixedValueCommandResponse(finsFrame); -// break; -// -// -// case GBConstants.DATA_AFN_SETFLOWINIT: // 设置终端水量表底值 -// received = bytesToSetFlowInitCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEICCARD: // 设置终端IC卡功能 -// received = bytesToEnableICCardCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEICCARD: -// received = bytesToDisableICCardCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_ENABLEFIXEDVAL: // 设置终端定值控制功能 -// received = bytesToEnableFixedValCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_DISABLEFIXEDVAL: -// received = bytesToDisableFixedValCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_REMOTEOPENPUMP: // 遥控开关水泵/闸门 -// received = bytesToRemoteOpenPumpCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_REMOTECLOSEPUMP: -// received = bytesToRemoteClosePumpCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_RESETPARAM: // 复位终端参数 -// received = bytesToResetParamCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_CLEARHISTORY: // 清空终端历史数据单元 -// received = bytesToClearHistoryCommandResponse(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETPASSWORD: // 修改终端密码 -// received = bytesToSetPasswordCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEMOTOSS:// 查询水泵电机实时工作数据 -// received = bytesToQueryRealTimeMotoValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYEVENTREC: // 查询遥测终端事件记录 -// received = bytesToQueryEventRecordsCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYMEMERYVALUE: // 查询终端内存自报数据 -// received = bytesToQueryMemeryValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_QUERYHARDDISCVALUE: // 查询终端固态存储数据 -// received = bytesToQueryHDValueCommandResponse(finsFrame); -// break; -// -// case GBConstants.DATA_AFN_WARNING: // 随机自报报警数据 -// received = bytesToWarningMessage(finsFrame); -// break; -// case GBConstants.DATA_AFN_SETTINGDATA: // 人工置数 -// received = bytesToSettingDataMessage(finsFrame); -// break; // // default: // received = new UnKnownMessage(byteMessage); @@ -496,7 +354,186 @@ return rwsscr; } + + + /** + * 将查询一氧化碳参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOValueCommandResponse rcovc = new ReadCOValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcovc.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + for (int i = 0; i < chct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //一氧化碳浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //一氧化碳报警阈值 + + rcovc.getCond().add(value); + rcovc.getColdbjz().add(threshold); + } + } + return rcovc; + } + + + /** + * 将查询一氧化碳报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadCOStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadCOStatusCommandResponse rcscr = new ReadCOStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rcscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int chct = cmd.getCount_sensor(); //一氧化碳监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < chct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rcscr.getCobj().add(bjBit == '1' ? true : false); + rcscr.getColdbj().add(ldBit == '1' ? true : false); + } + } + + return rcscr; + } + + + /** + * 将查询氧气参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2ValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2ValueCommandResponse rovcr = new ReadO2ValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rovcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + for (int i = 0; i < o2ct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rovcr.getO2nd().add(value); + rovcr.getO2ldbjz().add(threshold); + } + } + + return rovcr; + } + + + /** + * 将查询氧气报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadO2StatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadO2StatusCommandResponse roscr = new ReadO2StatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + roscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int o2ct = cmd.getCount_sensor(); //氧气监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < o2ct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + roscr.getO2bj().add(bjBit == '1' ? true : false); + roscr.getO2ldbj().add(ldBit == '1' ? true : false); + } + } + + return roscr; + } + + + /** + * 将查询硫化氢参数响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSValueCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSValueCommandResponse rhvcr = new ReadHSValueCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhvcr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + for (int i = 0; i < hsct; i++) { + byte[] valueByte = new byte[] { data[i*8 + 2], data[i*8 + 3], data[i*8], data[i*8 + 1] }; + byte[] thresholdByte = new byte[] { data[i*8 + 6], data[i*8 + 7], data[i*8 + 4], data[i*8 + 5] }; + + float value = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(valueByte), 16)); //氧气浓度值 + float threshold = Float.intBitsToFloat(Integer.parseInt(ByteUtil.binToHexString(thresholdByte), 16)); //氧气报警阈值 + + rhvcr.getHsnd().add(value); + rhvcr.getHsldbjz().add(threshold); + } + } + + return rhvcr; + } + + + /** + * 将查询硫化氢报警状态响应消息字节数组转换为消息对象 + * + * @param byteMessage + * @return + */ + private AppMessage bytesToReadHSStatusCommandResponse(FINSByteFrame finsFrame, PgAcuRdcmd cmd) { + ReadHSStatusCommandResponse rhscr = new ReadHSStatusCommandResponse(); + + byte[] body = finsFrame.TEXT_DATA_BODY; + rhscr.setMessageProducerId(FINSByteFrameTool.getControlDest(finsFrame)); + if (body[2] == 0x00 && body[3] == 0x00) { + // 正常返回 + byte[] data = FINSByteFrameTool.getDataWithoutEndCode(finsFrame); //获取返回的内存 + int hsct = cmd.getCount_sensor(); //硫化氢监测点的数量 + String dataStr = ByteUtil.binToBinString(new byte[] { data[0], data[1] }); //D15-D0顺序 + for (int i = 0; i < hsct; i++) { + char ldBit = dataStr.charAt(dataStr.length() - 2 * i - 1); + char bjBit = dataStr.charAt(dataStr.length() - 2 * i - 2); + + rhscr.getHsbj().add(bjBit == '1' ? true : false); + rhscr.getHsldbj().add(ldBit == '1' ? true : false); + } + } + + return rhscr; + } /** * 将消息对象解析为字节数组 diff --git a/src/com/szpg/task/ReadCOStatusTask.java b/src/com/szpg/task/ReadCOStatusTask.java new file mode 100644 index 0000000..11eca56 --- /dev/null +++ b/src/com/szpg/task/ReadCOStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOStatusCommand coAlmCmd = (ReadCOStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadCOValueTask.java b/src/com/szpg/task/ReadCOValueTask.java new file mode 100644 index 0000000..6ff413e --- /dev/null +++ b/src/com/szpg/task/ReadCOValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadCOValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadCOValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadCOValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取一氧化碳参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadCOValueCommand coCmd = (ReadCOValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coCmd.getId()); + cmd.setTm(coCmd.getTime().getTime()); + cmd.setCmd_type(coCmd.getCommandType()); + cmd.setDest(coCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coCmd.getMemoryArea() })); + cmd.setStart_mem_word(coCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coCmd.getStartAddress().substring(4)); + cmd.setCount_word(coCmd.getCountWord()); + cmd.setCount_bit(coCmd.getCountBit()); + cmd.setCount_sensor(coCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSStatusTask.java b/src/com/szpg/task/ReadHSStatusTask.java new file mode 100644 index 0000000..5fc4528 --- /dev/null +++ b/src/com/szpg/task/ReadHSStatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSStatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSStatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSStatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSStatusCommand hsAlmCmd = (ReadHSStatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsAlmCmd.getId()); + cmd.setTm(hsAlmCmd.getTime().getTime()); + cmd.setCmd_type(hsAlmCmd.getCommandType()); + cmd.setDest(hsAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsAlmCmd.getCountWord()); + cmd.setCount_bit(hsAlmCmd.getCountBit()); + cmd.setCount_sensor(hsAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadHSValueTask.java b/src/com/szpg/task/ReadHSValueTask.java new file mode 100644 index 0000000..2b7591f --- /dev/null +++ b/src/com/szpg/task/ReadHSValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadHSValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadHSValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadHSValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取硫化氢参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadHSValueCommand hsCmd = (ReadHSValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(hsCmd.getId()); + cmd.setTm(hsCmd.getTime().getTime()); + cmd.setCmd_type(hsCmd.getCommandType()); + cmd.setDest(hsCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { hsCmd.getMemoryArea() })); + cmd.setStart_mem_word(hsCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(hsCmd.getStartAddress().substring(4)); + cmd.setCount_word(hsCmd.getCountWord()); + cmd.setCount_bit(hsCmd.getCountBit()); + cmd.setCount_sensor(hsCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadO2StatusTask.java b/src/com/szpg/task/ReadO2StatusTask.java new file mode 100644 index 0000000..d947bda --- /dev/null +++ b/src/com/szpg/task/ReadO2StatusTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadO2StatusCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadO2StatusTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadO2StatusTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取氧气参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadO2StatusCommand coAlmCmd = (ReadO2StatusCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coAlmCmd.getId()); + cmd.setTm(coAlmCmd.getTime().getTime()); + cmd.setCmd_type(coAlmCmd.getCommandType()); + cmd.setDest(coAlmCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coAlmCmd.getMemoryArea() })); + cmd.setStart_mem_word(coAlmCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coAlmCmd.getStartAddress().substring(4)); + cmd.setCount_word(coAlmCmd.getCountWord()); + cmd.setCount_bit(coAlmCmd.getCountBit()); + cmd.setCount_sensor(coAlmCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +} diff --git a/src/com/szpg/task/ReadO2ValueTask.java b/src/com/szpg/task/ReadO2ValueTask.java new file mode 100644 index 0000000..8591dbe --- /dev/null +++ b/src/com/szpg/task/ReadO2ValueTask.java @@ -0,0 +1,49 @@ +package com.szpg.task; + +import com.szpg.db.dao.impl.PgAcuRdcmdDaoImpl; +import com.szpg.db.data.PgAcuRdcmd; +import com.szpg.plc.message.AppCommand; +import com.szpg.plc.message.command.read.ReadO2ValueCommand; +import com.szpg.plc.protocol.DTProtocolInterface; +import com.szpg.plc.protocol.ProtocolFactory; +import com.szpg.plc.server.ACUClient; +import com.szpg.plc.server.ACUClientUtil; +import com.szpg.plc.util.ByteUtil; + +public class ReadO2ValueTask implements Runnable { + + private ACUClient client; + private AppCommand appCommand; + + public ReadO2ValueTask(ACUClient client, AppCommand command) { + this.client = client; + this.appCommand = command; + } + + @Override + public void run() { + DTProtocolInterface finspi = ProtocolFactory.getDefaultDTProtocol(); + byte[] content = finspi.messageToBytes(appCommand); + + // 发送读取氧气参数内存命令 + ACUClientUtil.getInstance().sendACUCommand(client, content); + + ReadO2ValueCommand coCmd = (ReadO2ValueCommand) appCommand; + + // 发送完成之后将命令保存在数据库中 + PgAcuRdcmd cmd = new PgAcuRdcmd(); + cmd.setId(coCmd.getId()); + cmd.setTm(coCmd.getTime().getTime()); + cmd.setCmd_type(coCmd.getCommandType()); + cmd.setDest(coCmd.getDestinationId()); + cmd.setMem_area_cd(ByteUtil.binToHexString(new byte[] { coCmd.getMemoryArea() })); + cmd.setStart_mem_word(coCmd.getStartAddress().substring(0, 4)); + cmd.setStart_mem_bit(coCmd.getStartAddress().substring(4)); + cmd.setCount_word(coCmd.getCountWord()); + cmd.setCount_bit(coCmd.getCountBit()); + cmd.setCount_sensor(coCmd.getCountSensor()); + + new PgAcuRdcmdDaoImpl().addCmdRecord(cmd); + } + +}