diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/plc/PGDSCServlet.java b/src/com/szpg/plc/PGDSCServlet.java index 30362a5..f4d1659 100644 --- a/src/com/szpg/plc/PGDSCServlet.java +++ b/src/com/szpg/plc/PGDSCServlet.java @@ -18,12 +18,14 @@ import com.szpg.task.ReadCH4ValueTask; import com.szpg.task.ReadCOStatusTask; import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadDSStatusTask; 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.ReadYWStatusTask; public class PGDSCServlet extends HttpServlet { @@ -55,24 +57,30 @@ } // 3启动查询温湿度的定时任务 - testSendWSCommand(); - testSendWSStatusCommand(); + sendWSCommand(); + sendWSStatusCommand(); // 4启动查询甲烷的定时任务 - testSendCH4Command(); - testSendCH4StatusCommand(); + sendCH4Command(); + sendCH4StatusCommand(); // 5启动查询一氧化碳的定时任务 - testSendCOCommand(); - testSendCOStatusCommand(); + sendCOCommand(); + sendCOStatusCommand(); // 6氧气 - testSendO2Command(); - testSendO2StatusCommand(); + sendO2Command(); + sendO2StatusCommand(); // 7硫化氢 - testSendHSCommand(); - testSendHSStatusCommand(); + sendHSCommand(); + sendHSStatusCommand(); + + // 8对射报警 + sendDSStatusCommand(); + + // 9液位报警 + sendYWStatusCommand(); } /** @@ -80,7 +88,7 @@ * * @param client */ - private void testSendWSCommand() { + private void sendWSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSValueTask(), 20, 600, TimeUnit.SECONDS); } @@ -89,7 +97,7 @@ * 发送查询温湿度报警状态命令 * @param client */ - private void testSendWSStatusCommand() { + private void sendWSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSStatusTask(), 25, 600, TimeUnit.SECONDS); } @@ -99,7 +107,7 @@ * * @param client */ - private void testSendCH4Command() { + private void sendCH4Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4ValueTask(), 10, 600, TimeUnit.SECONDS); } @@ -108,7 +116,7 @@ * 发送查询甲烷报警状态命令 * @param client */ - private void testSendCH4StatusCommand() { + private void sendCH4StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4StatusTask(), 15, 600, TimeUnit.SECONDS); } @@ -118,7 +126,7 @@ * * @param client */ - private void testSendCOCommand() { + private void sendCOCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOValueTask(), 30, 600, TimeUnit.SECONDS); } @@ -127,7 +135,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendCOStatusCommand() { + private void sendCOStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOStatusTask(), 35, 600, TimeUnit.SECONDS); } @@ -137,7 +145,7 @@ * * @param client */ - private void testSendO2Command() { + private void sendO2Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2ValueTask(), 40, 600, TimeUnit.SECONDS); } @@ -146,7 +154,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendO2StatusCommand() { + private void sendO2StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2StatusTask(), 45, 600, TimeUnit.SECONDS); } @@ -156,7 +164,7 @@ * * @param client */ - private void testSendHSCommand() { + private void sendHSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSValueTask(), 50, 600, TimeUnit.SECONDS); } @@ -165,8 +173,26 @@ * 发送查询硫化氢报警状态命令 * @param client */ - private void testSendHSStatusCommand() { + private void sendHSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSStatusTask(), 55, 600, TimeUnit.SECONDS); } + + /** + * 发送查询对射报警状态命令 + * @param client + */ + private void sendDSStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadDSStatusTask(), 60, 600, TimeUnit.SECONDS); + } + + /** + * 发送查询爆管液位报警状态命令 + * @param client + */ + private void sendYWStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadYWStatusTask(), 70, 600, TimeUnit.SECONDS); + } } diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/plc/PGDSCServlet.java b/src/com/szpg/plc/PGDSCServlet.java index 30362a5..f4d1659 100644 --- a/src/com/szpg/plc/PGDSCServlet.java +++ b/src/com/szpg/plc/PGDSCServlet.java @@ -18,12 +18,14 @@ import com.szpg.task.ReadCH4ValueTask; import com.szpg.task.ReadCOStatusTask; import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadDSStatusTask; 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.ReadYWStatusTask; public class PGDSCServlet extends HttpServlet { @@ -55,24 +57,30 @@ } // 3启动查询温湿度的定时任务 - testSendWSCommand(); - testSendWSStatusCommand(); + sendWSCommand(); + sendWSStatusCommand(); // 4启动查询甲烷的定时任务 - testSendCH4Command(); - testSendCH4StatusCommand(); + sendCH4Command(); + sendCH4StatusCommand(); // 5启动查询一氧化碳的定时任务 - testSendCOCommand(); - testSendCOStatusCommand(); + sendCOCommand(); + sendCOStatusCommand(); // 6氧气 - testSendO2Command(); - testSendO2StatusCommand(); + sendO2Command(); + sendO2StatusCommand(); // 7硫化氢 - testSendHSCommand(); - testSendHSStatusCommand(); + sendHSCommand(); + sendHSStatusCommand(); + + // 8对射报警 + sendDSStatusCommand(); + + // 9液位报警 + sendYWStatusCommand(); } /** @@ -80,7 +88,7 @@ * * @param client */ - private void testSendWSCommand() { + private void sendWSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSValueTask(), 20, 600, TimeUnit.SECONDS); } @@ -89,7 +97,7 @@ * 发送查询温湿度报警状态命令 * @param client */ - private void testSendWSStatusCommand() { + private void sendWSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSStatusTask(), 25, 600, TimeUnit.SECONDS); } @@ -99,7 +107,7 @@ * * @param client */ - private void testSendCH4Command() { + private void sendCH4Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4ValueTask(), 10, 600, TimeUnit.SECONDS); } @@ -108,7 +116,7 @@ * 发送查询甲烷报警状态命令 * @param client */ - private void testSendCH4StatusCommand() { + private void sendCH4StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4StatusTask(), 15, 600, TimeUnit.SECONDS); } @@ -118,7 +126,7 @@ * * @param client */ - private void testSendCOCommand() { + private void sendCOCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOValueTask(), 30, 600, TimeUnit.SECONDS); } @@ -127,7 +135,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendCOStatusCommand() { + private void sendCOStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOStatusTask(), 35, 600, TimeUnit.SECONDS); } @@ -137,7 +145,7 @@ * * @param client */ - private void testSendO2Command() { + private void sendO2Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2ValueTask(), 40, 600, TimeUnit.SECONDS); } @@ -146,7 +154,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendO2StatusCommand() { + private void sendO2StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2StatusTask(), 45, 600, TimeUnit.SECONDS); } @@ -156,7 +164,7 @@ * * @param client */ - private void testSendHSCommand() { + private void sendHSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSValueTask(), 50, 600, TimeUnit.SECONDS); } @@ -165,8 +173,26 @@ * 发送查询硫化氢报警状态命令 * @param client */ - private void testSendHSStatusCommand() { + private void sendHSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSStatusTask(), 55, 600, TimeUnit.SECONDS); } + + /** + * 发送查询对射报警状态命令 + * @param client + */ + private void sendDSStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadDSStatusTask(), 60, 600, TimeUnit.SECONDS); + } + + /** + * 发送查询爆管液位报警状态命令 + * @param client + */ + private void sendYWStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadYWStatusTask(), 70, 600, TimeUnit.SECONDS); + } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 2b19500..47ecb5b 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDsDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgDsDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -2692039091478584257L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List dsbj; // 对射报警状态 - private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 - - public ReadDSStatusCommandResponse() { - dsbj = new ArrayList(); - } - - public List getDsbj() { - return dsbj; - } - - public void setDsbj(List dsbj) { - this.dsbj = dsbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将对射报警数据存入数据库 - PgDsDao dsDao = new PgDsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将红外对射报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - dsDao.addSbjzRecord(dsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU红外对射报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); - - // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析红外对射报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析红外对射报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 - - getDsbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -2692039091478584257L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List dsbj; // 对射报警状态 + private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 + + public ReadDSStatusCommandResponse() { + dsbj = new ArrayList(); + } + + public List getDsbj() { + return dsbj; + } + + public void setDsbj(List dsbj) { + this.dsbj = dsbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将对射报警数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将红外对射报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (dsbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU红外对射报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); + + // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析红外对射报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析红外对射报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 + + getDsbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/plc/PGDSCServlet.java b/src/com/szpg/plc/PGDSCServlet.java index 30362a5..f4d1659 100644 --- a/src/com/szpg/plc/PGDSCServlet.java +++ b/src/com/szpg/plc/PGDSCServlet.java @@ -18,12 +18,14 @@ import com.szpg.task.ReadCH4ValueTask; import com.szpg.task.ReadCOStatusTask; import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadDSStatusTask; 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.ReadYWStatusTask; public class PGDSCServlet extends HttpServlet { @@ -55,24 +57,30 @@ } // 3启动查询温湿度的定时任务 - testSendWSCommand(); - testSendWSStatusCommand(); + sendWSCommand(); + sendWSStatusCommand(); // 4启动查询甲烷的定时任务 - testSendCH4Command(); - testSendCH4StatusCommand(); + sendCH4Command(); + sendCH4StatusCommand(); // 5启动查询一氧化碳的定时任务 - testSendCOCommand(); - testSendCOStatusCommand(); + sendCOCommand(); + sendCOStatusCommand(); // 6氧气 - testSendO2Command(); - testSendO2StatusCommand(); + sendO2Command(); + sendO2StatusCommand(); // 7硫化氢 - testSendHSCommand(); - testSendHSStatusCommand(); + sendHSCommand(); + sendHSStatusCommand(); + + // 8对射报警 + sendDSStatusCommand(); + + // 9液位报警 + sendYWStatusCommand(); } /** @@ -80,7 +88,7 @@ * * @param client */ - private void testSendWSCommand() { + private void sendWSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSValueTask(), 20, 600, TimeUnit.SECONDS); } @@ -89,7 +97,7 @@ * 发送查询温湿度报警状态命令 * @param client */ - private void testSendWSStatusCommand() { + private void sendWSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSStatusTask(), 25, 600, TimeUnit.SECONDS); } @@ -99,7 +107,7 @@ * * @param client */ - private void testSendCH4Command() { + private void sendCH4Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4ValueTask(), 10, 600, TimeUnit.SECONDS); } @@ -108,7 +116,7 @@ * 发送查询甲烷报警状态命令 * @param client */ - private void testSendCH4StatusCommand() { + private void sendCH4StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4StatusTask(), 15, 600, TimeUnit.SECONDS); } @@ -118,7 +126,7 @@ * * @param client */ - private void testSendCOCommand() { + private void sendCOCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOValueTask(), 30, 600, TimeUnit.SECONDS); } @@ -127,7 +135,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendCOStatusCommand() { + private void sendCOStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOStatusTask(), 35, 600, TimeUnit.SECONDS); } @@ -137,7 +145,7 @@ * * @param client */ - private void testSendO2Command() { + private void sendO2Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2ValueTask(), 40, 600, TimeUnit.SECONDS); } @@ -146,7 +154,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendO2StatusCommand() { + private void sendO2StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2StatusTask(), 45, 600, TimeUnit.SECONDS); } @@ -156,7 +164,7 @@ * * @param client */ - private void testSendHSCommand() { + private void sendHSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSValueTask(), 50, 600, TimeUnit.SECONDS); } @@ -165,8 +173,26 @@ * 发送查询硫化氢报警状态命令 * @param client */ - private void testSendHSStatusCommand() { + private void sendHSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSStatusTask(), 55, 600, TimeUnit.SECONDS); } + + /** + * 发送查询对射报警状态命令 + * @param client + */ + private void sendDSStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadDSStatusTask(), 60, 600, TimeUnit.SECONDS); + } + + /** + * 发送查询爆管液位报警状态命令 + * @param client + */ + private void sendYWStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadYWStatusTask(), 70, 600, TimeUnit.SECONDS); + } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 2b19500..47ecb5b 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDsDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgDsDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -2692039091478584257L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List dsbj; // 对射报警状态 - private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 - - public ReadDSStatusCommandResponse() { - dsbj = new ArrayList(); - } - - public List getDsbj() { - return dsbj; - } - - public void setDsbj(List dsbj) { - this.dsbj = dsbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将对射报警数据存入数据库 - PgDsDao dsDao = new PgDsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将红外对射报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - dsDao.addSbjzRecord(dsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU红外对射报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); - - // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析红外对射报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析红外对射报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 - - getDsbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -2692039091478584257L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List dsbj; // 对射报警状态 + private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 + + public ReadDSStatusCommandResponse() { + dsbj = new ArrayList(); + } + + public List getDsbj() { + return dsbj; + } + + public void setDsbj(List dsbj) { + this.dsbj = dsbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将对射报警数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将红外对射报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (dsbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU红外对射报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); + + // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析红外对射报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析红外对射报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 + + getDsbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index 4f2abfb..0b65587 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -1,147 +1,149 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -5849842153973146848L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjFlt; - private List fjRun; - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjStatCommandResponse() { - fjFlt = new ArrayList(); - fjRun = new ArrayList(); - } - - public List getFjFlt() { - return fjFlt; - } - - public void setFjFlt(List fjFlt) { - this.fjFlt = fjFlt; - } - - public List getFjRun() { - return fjRun; - } - - public void setFjRun(List fjRun) { - this.fjRun = fjRun; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机运行状态数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); - - // 获取目标ACU风机相关的资产列表,即风机列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行状态 - PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); - if (null == runBlObj) { - continue; - } - - int rkszdz = runBlObj.getKszdz(); //开始字地址 - int roffset = rkszdz - start; //与开始字的偏移量 - int rbit = runBlObj.getSzw(); //所在位 - - char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 - - // 解析风机故障报警状态 - PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); - if (null == fltBlObj) { - continue; - } - - int fkszdz = fltBlObj.getKszdz(); //开始字地址 - int foffset = fkszdz - start; //与开始字的偏移量 - int fbit = fltBlObj.getSzw(); //所在位 - - char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 - - getFjFlt().add(fltBt == '1' ? true : false); - getFjRun().add(runBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgFjDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgFjDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; +import com.szpg.util.TimeFormat; + +public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -5849842153973146848L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List fjFlt; + private List fjRun; + private String[] zcList; //资产列表,从配置文件中获取 + + public ReadFjStatCommandResponse() { + fjFlt = new ArrayList(); + fjRun = new ArrayList(); + } + + public List getFjFlt() { + return fjFlt; + } + + public void setFjFlt(List fjFlt) { + this.fjFlt = fjFlt; + } + + public List getFjRun() { + return fjRun; + } + + public void setFjRun(List fjRun) { + this.fjRun = fjRun; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将风机运行状态数据存入数据库 + PgFjDao fjDao = new PgFjDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + if (null != zcList && zcList.length > 0) { + // 遍历设备列表,将风机运行状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); + + fjDao.updateDeviceStatus(id, fjRun.get(i)); + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU风机运行状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); + + // 获取目标ACU风机相关的资产列表,即风机列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析风机运行状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析风机运行状态 + PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); + if (null == runBlObj) { + continue; + } + + int rkszdz = runBlObj.getKszdz(); //开始字地址 + int roffset = rkszdz - start; //与开始字的偏移量 + int rbit = runBlObj.getSzw(); //所在位 + + char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 + + // 解析风机故障报警状态 + PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); + if (null == fltBlObj) { + continue; + } + + int fkszdz = fltBlObj.getKszdz(); //开始字地址 + int foffset = fkszdz - start; //与开始字的偏移量 + int fbit = fltBlObj.getSzw(); //所在位 + + char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 + + getFjFlt().add(fltBt == '1' ? true : false); + getFjRun().add(runBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/plc/PGDSCServlet.java b/src/com/szpg/plc/PGDSCServlet.java index 30362a5..f4d1659 100644 --- a/src/com/szpg/plc/PGDSCServlet.java +++ b/src/com/szpg/plc/PGDSCServlet.java @@ -18,12 +18,14 @@ import com.szpg.task.ReadCH4ValueTask; import com.szpg.task.ReadCOStatusTask; import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadDSStatusTask; 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.ReadYWStatusTask; public class PGDSCServlet extends HttpServlet { @@ -55,24 +57,30 @@ } // 3启动查询温湿度的定时任务 - testSendWSCommand(); - testSendWSStatusCommand(); + sendWSCommand(); + sendWSStatusCommand(); // 4启动查询甲烷的定时任务 - testSendCH4Command(); - testSendCH4StatusCommand(); + sendCH4Command(); + sendCH4StatusCommand(); // 5启动查询一氧化碳的定时任务 - testSendCOCommand(); - testSendCOStatusCommand(); + sendCOCommand(); + sendCOStatusCommand(); // 6氧气 - testSendO2Command(); - testSendO2StatusCommand(); + sendO2Command(); + sendO2StatusCommand(); // 7硫化氢 - testSendHSCommand(); - testSendHSStatusCommand(); + sendHSCommand(); + sendHSStatusCommand(); + + // 8对射报警 + sendDSStatusCommand(); + + // 9液位报警 + sendYWStatusCommand(); } /** @@ -80,7 +88,7 @@ * * @param client */ - private void testSendWSCommand() { + private void sendWSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSValueTask(), 20, 600, TimeUnit.SECONDS); } @@ -89,7 +97,7 @@ * 发送查询温湿度报警状态命令 * @param client */ - private void testSendWSStatusCommand() { + private void sendWSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSStatusTask(), 25, 600, TimeUnit.SECONDS); } @@ -99,7 +107,7 @@ * * @param client */ - private void testSendCH4Command() { + private void sendCH4Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4ValueTask(), 10, 600, TimeUnit.SECONDS); } @@ -108,7 +116,7 @@ * 发送查询甲烷报警状态命令 * @param client */ - private void testSendCH4StatusCommand() { + private void sendCH4StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4StatusTask(), 15, 600, TimeUnit.SECONDS); } @@ -118,7 +126,7 @@ * * @param client */ - private void testSendCOCommand() { + private void sendCOCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOValueTask(), 30, 600, TimeUnit.SECONDS); } @@ -127,7 +135,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendCOStatusCommand() { + private void sendCOStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOStatusTask(), 35, 600, TimeUnit.SECONDS); } @@ -137,7 +145,7 @@ * * @param client */ - private void testSendO2Command() { + private void sendO2Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2ValueTask(), 40, 600, TimeUnit.SECONDS); } @@ -146,7 +154,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendO2StatusCommand() { + private void sendO2StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2StatusTask(), 45, 600, TimeUnit.SECONDS); } @@ -156,7 +164,7 @@ * * @param client */ - private void testSendHSCommand() { + private void sendHSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSValueTask(), 50, 600, TimeUnit.SECONDS); } @@ -165,8 +173,26 @@ * 发送查询硫化氢报警状态命令 * @param client */ - private void testSendHSStatusCommand() { + private void sendHSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSStatusTask(), 55, 600, TimeUnit.SECONDS); } + + /** + * 发送查询对射报警状态命令 + * @param client + */ + private void sendDSStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadDSStatusTask(), 60, 600, TimeUnit.SECONDS); + } + + /** + * 发送查询爆管液位报警状态命令 + * @param client + */ + private void sendYWStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadYWStatusTask(), 70, 600, TimeUnit.SECONDS); + } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 2b19500..47ecb5b 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDsDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgDsDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -2692039091478584257L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List dsbj; // 对射报警状态 - private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 - - public ReadDSStatusCommandResponse() { - dsbj = new ArrayList(); - } - - public List getDsbj() { - return dsbj; - } - - public void setDsbj(List dsbj) { - this.dsbj = dsbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将对射报警数据存入数据库 - PgDsDao dsDao = new PgDsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将红外对射报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - dsDao.addSbjzRecord(dsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU红外对射报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); - - // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析红外对射报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析红外对射报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 - - getDsbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -2692039091478584257L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List dsbj; // 对射报警状态 + private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 + + public ReadDSStatusCommandResponse() { + dsbj = new ArrayList(); + } + + public List getDsbj() { + return dsbj; + } + + public void setDsbj(List dsbj) { + this.dsbj = dsbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将对射报警数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将红外对射报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (dsbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU红外对射报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); + + // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析红外对射报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析红外对射报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 + + getDsbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index 4f2abfb..0b65587 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -1,147 +1,149 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -5849842153973146848L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjFlt; - private List fjRun; - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjStatCommandResponse() { - fjFlt = new ArrayList(); - fjRun = new ArrayList(); - } - - public List getFjFlt() { - return fjFlt; - } - - public void setFjFlt(List fjFlt) { - this.fjFlt = fjFlt; - } - - public List getFjRun() { - return fjRun; - } - - public void setFjRun(List fjRun) { - this.fjRun = fjRun; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机运行状态数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); - - // 获取目标ACU风机相关的资产列表,即风机列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行状态 - PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); - if (null == runBlObj) { - continue; - } - - int rkszdz = runBlObj.getKszdz(); //开始字地址 - int roffset = rkszdz - start; //与开始字的偏移量 - int rbit = runBlObj.getSzw(); //所在位 - - char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 - - // 解析风机故障报警状态 - PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); - if (null == fltBlObj) { - continue; - } - - int fkszdz = fltBlObj.getKszdz(); //开始字地址 - int foffset = fkszdz - start; //与开始字的偏移量 - int fbit = fltBlObj.getSzw(); //所在位 - - char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 - - getFjFlt().add(fltBt == '1' ? true : false); - getFjRun().add(runBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgFjDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgFjDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; +import com.szpg.util.TimeFormat; + +public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -5849842153973146848L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List fjFlt; + private List fjRun; + private String[] zcList; //资产列表,从配置文件中获取 + + public ReadFjStatCommandResponse() { + fjFlt = new ArrayList(); + fjRun = new ArrayList(); + } + + public List getFjFlt() { + return fjFlt; + } + + public void setFjFlt(List fjFlt) { + this.fjFlt = fjFlt; + } + + public List getFjRun() { + return fjRun; + } + + public void setFjRun(List fjRun) { + this.fjRun = fjRun; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将风机运行状态数据存入数据库 + PgFjDao fjDao = new PgFjDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + if (null != zcList && zcList.length > 0) { + // 遍历设备列表,将风机运行状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); + + fjDao.updateDeviceStatus(id, fjRun.get(i)); + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU风机运行状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); + + // 获取目标ACU风机相关的资产列表,即风机列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析风机运行状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析风机运行状态 + PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); + if (null == runBlObj) { + continue; + } + + int rkszdz = runBlObj.getKszdz(); //开始字地址 + int roffset = rkszdz - start; //与开始字的偏移量 + int rbit = runBlObj.getSzw(); //所在位 + + char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 + + // 解析风机故障报警状态 + PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); + if (null == fltBlObj) { + continue; + } + + int fkszdz = fltBlObj.getKszdz(); //开始字地址 + int foffset = fkszdz - start; //与开始字的偏移量 + int fbit = fltBlObj.getSzw(); //所在位 + + char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 + + getFjFlt().add(fltBt == '1' ? true : false); + getFjRun().add(runBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index 4a489f6..f742038 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgYwDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgYwDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadYWStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2363774800273830916L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List ywbj; // 爆管液位报警状态 - private String[] zcList; //爆管液位监测的资产列表,从配置文件中获取 - - public ReadYWStatusCommandResponse() { - ywbj = new ArrayList(); - } - - public List getYwbj() { - return ywbj; - } - - public void setYwbj(List ywbj) { - this.ywbj = ywbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将爆管液位浓度数据存入数据库 - PgYwDao ywDao = new PgYwDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将爆管液位报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - ywDao.addSbjzRecord(ywbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU爆管液位报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.START")); - - // 获取目标ACU爆管液位相关的资产列表,即爆管液位设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YW.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析爆管液位报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析爆管液位报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 爆管液位报警状态标志位 - - getYwbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadYWStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 2363774800273830916L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List ywbj; // 爆管液位报警状态 + private String[] zcList; //爆管液位监测的资产列表,从配置文件中获取 + + public ReadYWStatusCommandResponse() { + ywbj = new ArrayList(); + } + + public List getYwbj() { + return ywbj; + } + + public void setYwbj(List ywbj) { + this.ywbj = ywbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将爆管液位浓度数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将爆管液位报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (ywbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU爆管液位报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.START")); + + // 获取目标ACU爆管液位相关的资产列表,即爆管液位设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".YW.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析爆管液位报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析爆管液位报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 爆管液位报警状态标志位 + + getYwbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/plc/PGDSCServlet.java b/src/com/szpg/plc/PGDSCServlet.java index 30362a5..f4d1659 100644 --- a/src/com/szpg/plc/PGDSCServlet.java +++ b/src/com/szpg/plc/PGDSCServlet.java @@ -18,12 +18,14 @@ import com.szpg.task.ReadCH4ValueTask; import com.szpg.task.ReadCOStatusTask; import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadDSStatusTask; 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.ReadYWStatusTask; public class PGDSCServlet extends HttpServlet { @@ -55,24 +57,30 @@ } // 3启动查询温湿度的定时任务 - testSendWSCommand(); - testSendWSStatusCommand(); + sendWSCommand(); + sendWSStatusCommand(); // 4启动查询甲烷的定时任务 - testSendCH4Command(); - testSendCH4StatusCommand(); + sendCH4Command(); + sendCH4StatusCommand(); // 5启动查询一氧化碳的定时任务 - testSendCOCommand(); - testSendCOStatusCommand(); + sendCOCommand(); + sendCOStatusCommand(); // 6氧气 - testSendO2Command(); - testSendO2StatusCommand(); + sendO2Command(); + sendO2StatusCommand(); // 7硫化氢 - testSendHSCommand(); - testSendHSStatusCommand(); + sendHSCommand(); + sendHSStatusCommand(); + + // 8对射报警 + sendDSStatusCommand(); + + // 9液位报警 + sendYWStatusCommand(); } /** @@ -80,7 +88,7 @@ * * @param client */ - private void testSendWSCommand() { + private void sendWSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSValueTask(), 20, 600, TimeUnit.SECONDS); } @@ -89,7 +97,7 @@ * 发送查询温湿度报警状态命令 * @param client */ - private void testSendWSStatusCommand() { + private void sendWSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSStatusTask(), 25, 600, TimeUnit.SECONDS); } @@ -99,7 +107,7 @@ * * @param client */ - private void testSendCH4Command() { + private void sendCH4Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4ValueTask(), 10, 600, TimeUnit.SECONDS); } @@ -108,7 +116,7 @@ * 发送查询甲烷报警状态命令 * @param client */ - private void testSendCH4StatusCommand() { + private void sendCH4StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4StatusTask(), 15, 600, TimeUnit.SECONDS); } @@ -118,7 +126,7 @@ * * @param client */ - private void testSendCOCommand() { + private void sendCOCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOValueTask(), 30, 600, TimeUnit.SECONDS); } @@ -127,7 +135,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendCOStatusCommand() { + private void sendCOStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOStatusTask(), 35, 600, TimeUnit.SECONDS); } @@ -137,7 +145,7 @@ * * @param client */ - private void testSendO2Command() { + private void sendO2Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2ValueTask(), 40, 600, TimeUnit.SECONDS); } @@ -146,7 +154,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendO2StatusCommand() { + private void sendO2StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2StatusTask(), 45, 600, TimeUnit.SECONDS); } @@ -156,7 +164,7 @@ * * @param client */ - private void testSendHSCommand() { + private void sendHSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSValueTask(), 50, 600, TimeUnit.SECONDS); } @@ -165,8 +173,26 @@ * 发送查询硫化氢报警状态命令 * @param client */ - private void testSendHSStatusCommand() { + private void sendHSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSStatusTask(), 55, 600, TimeUnit.SECONDS); } + + /** + * 发送查询对射报警状态命令 + * @param client + */ + private void sendDSStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadDSStatusTask(), 60, 600, TimeUnit.SECONDS); + } + + /** + * 发送查询爆管液位报警状态命令 + * @param client + */ + private void sendYWStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadYWStatusTask(), 70, 600, TimeUnit.SECONDS); + } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 2b19500..47ecb5b 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDsDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgDsDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -2692039091478584257L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List dsbj; // 对射报警状态 - private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 - - public ReadDSStatusCommandResponse() { - dsbj = new ArrayList(); - } - - public List getDsbj() { - return dsbj; - } - - public void setDsbj(List dsbj) { - this.dsbj = dsbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将对射报警数据存入数据库 - PgDsDao dsDao = new PgDsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将红外对射报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - dsDao.addSbjzRecord(dsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU红外对射报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); - - // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析红外对射报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析红外对射报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 - - getDsbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -2692039091478584257L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List dsbj; // 对射报警状态 + private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 + + public ReadDSStatusCommandResponse() { + dsbj = new ArrayList(); + } + + public List getDsbj() { + return dsbj; + } + + public void setDsbj(List dsbj) { + this.dsbj = dsbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将对射报警数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将红外对射报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (dsbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU红外对射报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); + + // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析红外对射报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析红外对射报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 + + getDsbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index 4f2abfb..0b65587 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -1,147 +1,149 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -5849842153973146848L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjFlt; - private List fjRun; - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjStatCommandResponse() { - fjFlt = new ArrayList(); - fjRun = new ArrayList(); - } - - public List getFjFlt() { - return fjFlt; - } - - public void setFjFlt(List fjFlt) { - this.fjFlt = fjFlt; - } - - public List getFjRun() { - return fjRun; - } - - public void setFjRun(List fjRun) { - this.fjRun = fjRun; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机运行状态数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); - - // 获取目标ACU风机相关的资产列表,即风机列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行状态 - PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); - if (null == runBlObj) { - continue; - } - - int rkszdz = runBlObj.getKszdz(); //开始字地址 - int roffset = rkszdz - start; //与开始字的偏移量 - int rbit = runBlObj.getSzw(); //所在位 - - char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 - - // 解析风机故障报警状态 - PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); - if (null == fltBlObj) { - continue; - } - - int fkszdz = fltBlObj.getKszdz(); //开始字地址 - int foffset = fkszdz - start; //与开始字的偏移量 - int fbit = fltBlObj.getSzw(); //所在位 - - char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 - - getFjFlt().add(fltBt == '1' ? true : false); - getFjRun().add(runBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgFjDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgFjDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; +import com.szpg.util.TimeFormat; + +public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -5849842153973146848L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List fjFlt; + private List fjRun; + private String[] zcList; //资产列表,从配置文件中获取 + + public ReadFjStatCommandResponse() { + fjFlt = new ArrayList(); + fjRun = new ArrayList(); + } + + public List getFjFlt() { + return fjFlt; + } + + public void setFjFlt(List fjFlt) { + this.fjFlt = fjFlt; + } + + public List getFjRun() { + return fjRun; + } + + public void setFjRun(List fjRun) { + this.fjRun = fjRun; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将风机运行状态数据存入数据库 + PgFjDao fjDao = new PgFjDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + if (null != zcList && zcList.length > 0) { + // 遍历设备列表,将风机运行状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); + + fjDao.updateDeviceStatus(id, fjRun.get(i)); + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU风机运行状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); + + // 获取目标ACU风机相关的资产列表,即风机列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析风机运行状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析风机运行状态 + PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); + if (null == runBlObj) { + continue; + } + + int rkszdz = runBlObj.getKszdz(); //开始字地址 + int roffset = rkszdz - start; //与开始字的偏移量 + int rbit = runBlObj.getSzw(); //所在位 + + char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 + + // 解析风机故障报警状态 + PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); + if (null == fltBlObj) { + continue; + } + + int fkszdz = fltBlObj.getKszdz(); //开始字地址 + int foffset = fkszdz - start; //与开始字的偏移量 + int fbit = fltBlObj.getSzw(); //所在位 + + char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 + + getFjFlt().add(fltBt == '1' ? true : false); + getFjRun().add(runBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index 4a489f6..f742038 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgYwDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgYwDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadYWStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2363774800273830916L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List ywbj; // 爆管液位报警状态 - private String[] zcList; //爆管液位监测的资产列表,从配置文件中获取 - - public ReadYWStatusCommandResponse() { - ywbj = new ArrayList(); - } - - public List getYwbj() { - return ywbj; - } - - public void setYwbj(List ywbj) { - this.ywbj = ywbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将爆管液位浓度数据存入数据库 - PgYwDao ywDao = new PgYwDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将爆管液位报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - ywDao.addSbjzRecord(ywbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU爆管液位报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.START")); - - // 获取目标ACU爆管液位相关的资产列表,即爆管液位设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YW.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析爆管液位报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析爆管液位报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 爆管液位报警状态标志位 - - getYwbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadYWStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 2363774800273830916L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List ywbj; // 爆管液位报警状态 + private String[] zcList; //爆管液位监测的资产列表,从配置文件中获取 + + public ReadYWStatusCommandResponse() { + ywbj = new ArrayList(); + } + + public List getYwbj() { + return ywbj; + } + + public void setYwbj(List ywbj) { + this.ywbj = ywbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将爆管液位浓度数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将爆管液位报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (ywbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU爆管液位报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.START")); + + // 获取目标ACU爆管液位相关的资产列表,即爆管液位设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".YW.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析爆管液位报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析爆管液位报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 爆管液位报警状态标志位 + + getYwbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 951a3dc..a6b7583 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,124 +1,126 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3887112876994787055L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmRun; - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmStatCommandResponse() { - zmRun = new ArrayList(); - } - - public List getZmRun() { - return zmRun; - } - - public void setZmRun(List zmRun) { - this.zmRun = zmRun; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.START")); - - // 获取目标ACU照明相关的资产列表,即风机列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行状态 - PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); - if (null == runBlObj) { - continue; - } - - int rkszdz = runBlObj.getKszdz(); //开始字地址 - int roffset = rkszdz - start; //与开始字的偏移量 - int rbit = runBlObj.getSzw(); //所在位 - - char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 - - getZmRun().add(runBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgZmDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgZmDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; +import com.szpg.util.TimeFormat; + +public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -3887112876994787055L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List zmRun; + private String[] zcList; //资产列表,从配置文件中获取 + + public ReadZmStatCommandResponse() { + zmRun = new ArrayList(); + } + + public List getZmRun() { + return zmRun; + } + + public void setZmRun(List zmRun) { + this.zmRun = zmRun; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将照明运行状态数据存入数据库 + PgZmDao zmDao = new PgZmDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + if (null != zcList && zcList.length > 0) { + // 遍历设备列表,将照明运行状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); + + zmDao.updateDeviceStatus(id, zmRun.get(i)); + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU照明运行状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.START")); + + // 获取目标ACU照明相关的资产列表,即风机列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析照明运行状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析照明运行状态 + PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); + if (null == runBlObj) { + continue; + } + + int rkszdz = runBlObj.getKszdz(); //开始字地址 + int roffset = rkszdz - start; //与开始字的偏移量 + int rbit = runBlObj.getSzw(); //所在位 + + char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 + + getZmRun().add(runBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/DSCTest.java b/src/com/szpg/DSCTest.java index dbfcd02..7c92b69 100644 --- a/src/com/szpg/DSCTest.java +++ b/src/com/szpg/DSCTest.java @@ -47,7 +47,7 @@ public static void main(String[] args) { // PLC设备地址和端口 - ACUClient client = new ACUClient("172.16.0.35", 9600); + ACUClient client = new ACUClient("192.168.0.244", 9600); PgAcu acu = new PgAcuDaoImpl().findACUById(1); client.setAcucode(acu.getAcu_code()); @@ -66,8 +66,8 @@ // dsc.testSendCH4StatusCommand(); // 温湿度 - dsc.testSendWSCommand(); - dsc.testSendWSStatusCommand(); +// dsc.testSendWSCommand(); +// dsc.testSendWSStatusCommand(); // 一氧化碳 // dsc.testSendCOCommand(); @@ -91,7 +91,7 @@ // dsc.testSendJgStatusCommand(); // 风机 -// dsc.testSendFjStatCommand(); + dsc.testSendFjStatCommand(); // dsc.testSendFjRtCommand(); // 水泵 @@ -126,10 +126,10 @@ // dsc.testSendWSThresholdCommand("YXL.ACU001.SWS01"); // 氧气报警阈值设定 - dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); +// dsc.testSendO2ThresholdCommand("YXL.ACU001.SYQ01"); // 一氧化碳阈值设定 - dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); +// dsc.testSendCOThresholdCommand("YXL.ACU001.RCO01"); } /** diff --git a/src/com/szpg/db/dao/PgFjDao.java b/src/com/szpg/db/dao/PgFjDao.java index 8547b1c..7fc3b48 100644 --- a/src/com/szpg/db/dao/PgFjDao.java +++ b/src/com/szpg/db/dao/PgFjDao.java @@ -1,32 +1,34 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; - -/** - * 风机运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgFjDao { - - /******** 风机累计运行时长 ********/ - public PgFjRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgFjRt fjrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 风机运行状态 ********/ - public List findAllStat(); - public PgFjStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgFjStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgFjStat fjstat); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; + +/** + * 风机运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgFjDao { + + /******** 风机累计运行时长 ********/ + public PgFjRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgFjRt fjrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 风机运行状态 ********/ + public List findAllStat(); + public PgFjStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgFjStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgFjStat fjstat); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgSbDao.java b/src/com/szpg/db/dao/PgSbDao.java index 7ad78d4..76518d5 100644 --- a/src/com/szpg/db/dao/PgSbDao.java +++ b/src/com/szpg/db/dao/PgSbDao.java @@ -1,34 +1,36 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; - -/** - * 水泵运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgSbDao { - - /******** 水泵累计运行时长 ********/ - public PgSbRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgSbRt sbrt); - public int addRtRecord(int second1, int hour1, String tm, int deviceid); - public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); - - - /******** 水泵运行状态 ********/ - public List findAllStat(); - public PgSbStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgSbStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgSbStat sbstat); - public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); - public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; + +/** + * 水泵运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgSbDao { + + /******** 水泵累计运行时长 ********/ + public PgSbRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgSbRt sbrt); + public int addRtRecord(int second1, int hour1, String tm, int deviceid); + public int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid); + + + /******** 水泵运行状态 ********/ + public List findAllStat(); + public PgSbStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgSbStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgSbStat sbstat); + public int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid); + public int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/PgZmDao.java b/src/com/szpg/db/dao/PgZmDao.java index debc86c..f4ea60a 100644 --- a/src/com/szpg/db/dao/PgZmDao.java +++ b/src/com/szpg/db/dao/PgZmDao.java @@ -1,33 +1,35 @@ -package com.szpg.db.dao; - -import java.util.List; - -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; - -/** - * 照明运行相关参数读写的数据库接口 - * @author admin - * - */ -public interface PgZmDao { - - /******** 照明累计运行时长 ********/ - public PgZmRt findLatestRtByDevice(Integer deviceid); - - public int addRtRecord(PgZmRt zmrt); - public int addRtRecord(int second, int hour, String tm, int deviceid); - - - /******** 照明运行状态 ********/ - public List findAllStat(); - public PgZmStat findStatById(Integer id); - - public List findStatByDevice(Integer deviceid); - public List findStatByDeviceAndTm(Integer deviceid, String start, String end); - public PgZmStat findLatestStatByDevice(Integer deviceid); - - public int addStatRecord(PgZmStat zmstat); - public int addStatRecord(boolean run, String tm, int deviceid); - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); -} +package com.szpg.db.dao; + +import java.util.List; + +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; + +/** + * 照明运行相关参数读写的数据库接口 + * @author admin + * + */ +public interface PgZmDao { + + /******** 照明累计运行时长 ********/ + public PgZmRt findLatestRtByDevice(Integer deviceid); + + public int addRtRecord(PgZmRt zmrt); + public int addRtRecord(int second, int hour, String tm, int deviceid); + + + /******** 照明运行状态 ********/ + public List findAllStat(); + public PgZmStat findStatById(Integer id); + + public List findStatByDevice(Integer deviceid); + public List findStatByDeviceAndTm(Integer deviceid, String start, String end); + public PgZmStat findLatestStatByDevice(Integer deviceid); + + public int addStatRecord(PgZmStat zmstat); + public int addStatRecord(boolean run, String tm, int deviceid); + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid); + + public int updateDeviceStatus(int deviceid, boolean run); +} diff --git a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java index cbab4c5..176c774 100644 --- a/src/com/szpg/db/dao/impl/PgFjDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgFjDaoImpl.java @@ -1,469 +1,504 @@ -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.PgFjDao; -import com.szpg.db.data.PgFjRt; -import com.szpg.db.data.PgFjStat; -import com.szpg.db.util.ConnectionManager; - -public class PgFjDaoImpl implements PgFjDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgFjRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjRt rt = new PgFjRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgFjRt fjrt) { - return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - 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 PgFjStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgFjStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgFjStat stat = new PgFjStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setAm(Boolean.parseBoolean((String) item[3])); - stat.setRun(Boolean.parseBoolean((String) item[4])); - stat.setFlt(Boolean.parseBoolean((String) item[5])); - stat.setEn(Boolean.parseBoolean((String) item[6])); - stat.setNo(Boolean.parseBoolean((String) item[7])); - stat.setRout(Boolean.parseBoolean((String) item[8])); - - logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgFjStat fjstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[9]; - params[0] = fjstat.getAm(); - params[1] = fjstat.getRun(); - params[2] = fjstat.getFlt(); - params[3] = fjstat.getEn(); - params[4] = fjstat.getNo(); - params[5] = fjstat.getRout(); - params[6] = fjstat.getTmStr(); - params[7] = fjstat.getTmStr(); - params[8] = fjstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入风机运行状态成功" + fjstat); - 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_FJ_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入风机运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入风机运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgFjDao; +import com.szpg.db.data.PgFjRt; +import com.szpg.db.data.PgFjStat; +import com.szpg.db.util.ConnectionManager; + +public class PgFjDaoImpl implements PgFjDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgFjRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_FJ_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjRt rt = new PgFjRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询风机最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgFjRt fjrt) { + return addRtRecord(fjrt.getRunsecond(), fjrt.getRunhour(), fjrt.getTmStr(), fjrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + 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 PgFjStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT 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++) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgFjStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, AM, RUN, FLT, EN, NO, ROUT FROM PG_FJ_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgFjStat stat = new PgFjStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setAm(Boolean.parseBoolean((String) item[3])); + stat.setRun(Boolean.parseBoolean((String) item[4])); + stat.setFlt(Boolean.parseBoolean((String) item[5])); + stat.setEn(Boolean.parseBoolean((String) item[6])); + stat.setNo(Boolean.parseBoolean((String) item[7])); + stat.setRout(Boolean.parseBoolean((String) item[8])); + + logger.debug("根据ID查询风机最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgFjStat fjstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(AM, RUN, FLT, EN, NO, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[9]; + params[0] = fjstat.getAm(); + params[1] = fjstat.getRun(); + params[2] = fjstat.getFlt(); + params[3] = fjstat.getEn(); + params[4] = fjstat.getNo(); + params[5] = fjstat.getRout(); + params[6] = fjstat.getTmStr(); + params[7] = fjstat.getTmStr(); + params[8] = fjstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入风机运行状态成功" + fjstat); + 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 int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_FJ_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新风机运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新风机运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新风机运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java index 743c2ea..55e32a5 100644 --- a/src/com/szpg/db/dao/impl/PgSbDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgSbDaoImpl.java @@ -1,541 +1,576 @@ -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.PgSbDao; -import com.szpg.db.data.PgSbRt; -import com.szpg.db.data.PgSbStat; -import com.szpg.db.util.ConnectionManager; - -public class PgSbDaoImpl implements PgSbDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgSbRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbRt rt = new PgSbRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond1(Integer.parseInt((String) item[3])); - rt.setRunsecond2(Integer.parseInt((String) item[4])); - rt.setRunhour1(Integer.parseInt((String) item[5])); - rt.setRunhour2(Integer.parseInt((String) item[6])); - - logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgSbRt sbrt) { - return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second1, int hour1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second1; - params[1] = hour1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_RT " + - "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = second1; - params[1] = second2; - params[2] = hour1; - params[3] = hour2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgSbStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgSbStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgSbStat stat = new PgSbStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun1(Boolean.parseBoolean((String) item[3])); - stat.setRun2(Boolean.parseBoolean((String) item[4])); - stat.setFlt1(Boolean.parseBoolean((String) item[5])); - stat.setFlt2(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgSbStat sbstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = sbstat.getRun1(); - params[1] = sbstat.getRun2(); - params[2] = sbstat.getFlt1(); - params[3] = sbstat.getFlt2(); - params[4] = sbstat.getTmStr(); - params[5] = sbstat.getTmStr(); - params[6] = sbstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入水泵运行状态成功" + sbstat); - 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run1; - params[1] = flt1; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_SB_STAT " + - "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = run1; - params[1] = run2; - params[2] = flt1; - params[3] = flt2; - params[4] = tm; - params[5] = tm; - params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + deviceid + "]"); - else - logger.error("插入水泵运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入水泵运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgSbDao; +import com.szpg.db.data.PgSbRt; +import com.szpg.db.data.PgSbStat; +import com.szpg.db.util.ConnectionManager; + +public class PgSbDaoImpl implements PgSbDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgSbRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2 FROM PG_SB_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbRt rt = new PgSbRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond1(Integer.parseInt((String) item[3])); + rt.setRunsecond2(Integer.parseInt((String) item[4])); + rt.setRunhour1(Integer.parseInt((String) item[5])); + rt.setRunhour2(Integer.parseInt((String) item[6])); + + logger.debug("根据ID查询水泵最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgSbRt sbrt) { + return addRtRecord(sbrt.getRunsecond1(), sbrt.getRunsecond2(), sbrt.getRunhour1(), sbrt.getRunhour2(), sbrt.getTmStr(), sbrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second1, int hour1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNHOUR1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second1; + params[1] = hour1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second1=" + second1 + ", hour1=" + hour1 + ", deviceid=" + 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 int addRtRecord(int second1, int hour1, int second2, int hour2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_RT " + + "(RUNSECOND1, RUNSECOND2, RUNHOUR1, RUNHOUR2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = second1; + params[1] = second2; + params[2] = hour1; + params[3] = hour2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", second=" + second1 + "/" + second2 + ", hour=" + hour1 + "/" + hour2 + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgSbStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT 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++) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgSbStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN1, RUN2, FLT1, FLT2 FROM PG_SB_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgSbStat stat = new PgSbStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun1(Boolean.parseBoolean((String) item[3])); + stat.setRun2(Boolean.parseBoolean((String) item[4])); + stat.setFlt1(Boolean.parseBoolean((String) item[5])); + stat.setFlt2(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询水泵最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgSbStat sbstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = sbstat.getRun1(); + params[1] = sbstat.getRun2(); + params[2] = sbstat.getFlt1(); + params[3] = sbstat.getFlt2(); + params[4] = sbstat.getTmStr(); + params[5] = sbstat.getTmStr(); + params[6] = sbstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入水泵运行状态成功" + sbstat); + 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 int addStatRecord(boolean run1, boolean flt1, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, FLT1, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run1; + params[1] = flt1; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run1=" + run1 + ", flt1=" + flt1 + ", deviceid=" + 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 int addStatRecord(boolean run1, boolean run2, boolean flt1, boolean flt2, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_SB_STAT " + + "(RUN1, RUN2, FLT1, FLT2, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = run1; + params[1] = run2; + params[2] = flt1; + params[3] = flt2; + params[4] = tm; + params[5] = tm; + params[6] = 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 + ", run=" + run1 + "/" + run2 + ", flt=" + flt1 + "/" + flt2 + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新水泵运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新水泵运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新水泵运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java index aa4a560..c4bcbd7 100644 --- a/src/com/szpg/db/dao/impl/PgZmDaoImpl.java +++ b/src/com/szpg/db/dao/impl/PgZmDaoImpl.java @@ -1,495 +1,529 @@ -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.PgZmDao; -import com.szpg.db.data.PgZmRt; -import com.szpg.db.data.PgZmStat; -import com.szpg.db.util.ConnectionManager; - -public class PgZmDaoImpl implements PgZmDao { - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - @Override - public PgZmRt findLatestRtByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmRt rt = new PgZmRt(); - Object[] item = tempList.get(0); - - rt.setId(((Number) item[0]).intValue()); - rt.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - rt.setLogtime(cal.getTime()); - rt.setUptime(cal.getTime()); - - rt.setRunsecond(Integer.parseInt((String) item[3])); - rt.setRunhour(Integer.parseInt((String) item[4])); - - logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); - - return rt; - } - 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 addRtRecord(PgZmRt zmrt) { - return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); - } - - @Override - public int addRtRecord(int second, int hour, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_RT " + - "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = second; - params[1] = hour; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; - try { - conn = ConnectionManager.getConnectionFromC3P0(); - 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - 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 PgZmStat findStatById(Integer id) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明运行状态成功" + stat + "]"); - - return stat; - } - else - return null; - } catch (Exception ex) { - logger.error("根据ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(i); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - list.add(stat); - } - return list; - } - else - return null; - } catch (Exception ex) { - logger.error("根据设备ID和时间查询照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return null; - } - - @Override - public PgZmStat findLatestStatByDevice(Integer deviceid) { - Connection conn = null; - - String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; - 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) { - PgZmStat stat = new PgZmStat(); - Object[] item = tempList.get(0); - - stat.setId(((Number) item[0]).intValue()); - stat.setPgdeviceid(((Number) item[2]).intValue()); - - long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(tmValue); - stat.setLogtime(cal.getTime()); - stat.setUptime(cal.getTime()); - - stat.setRun(Boolean.parseBoolean((String) item[3])); - stat.setFlt(Boolean.parseBoolean((String) item[4])); - stat.setEn(Boolean.parseBoolean((String) item[5])); - stat.setRout(Boolean.parseBoolean((String) item[6])); - - logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); - - return stat; - } - 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 addStatRecord(PgZmStat zmstat) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[7]; - params[0] = zmstat.getRun(); - params[1] = zmstat.getFlt(); - params[2] = zmstat.getEn(); - params[3] = zmstat.getRout(); - params[4] = zmstat.getTmStr(); - params[5] = zmstat.getTmStr(); - params[6] = zmstat.getPgdeviceid(); - - try { - conn = ConnectionManager.getConnectionFromC3P0(); - conn.setAutoCommit(false); - - QueryRunner runner = new QueryRunner(); - int count = runner.update(conn, insertStr, params); - - if (count > 0) - logger.debug("插入照明运行状态成功" + zmstat); - 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 int addStatRecord(boolean run, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, 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] = run; - 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - - @Override - public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { - Connection conn = null; - - String insertStr = "INSERT INTO PG_ZM_STAT " + - "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + - "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; - Object[] params = new Object[5]; - params[0] = run; - params[1] = flt; - params[2] = tm; - params[3] = tm; - params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + deviceid + "]"); - else - logger.error("插入照明运行状态失败!"); - - return count; - } catch (Exception ex) { - logger.error("插入照明运行状态异常", ex); - } finally { - try { - DbUtils.commitAndClose(conn); - } catch (SQLException e) { - e.printStackTrace(); - } - } - return 0; - } - -} +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.PgZmDao; +import com.szpg.db.data.PgZmRt; +import com.szpg.db.data.PgZmStat; +import com.szpg.db.util.ConnectionManager; + +public class PgZmDaoImpl implements PgZmDao { + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + @Override + public PgZmRt findLatestRtByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUNSECOND, RUNHOUR FROM PG_ZM_RT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmRt rt = new PgZmRt(); + Object[] item = tempList.get(0); + + rt.setId(((Number) item[0]).intValue()); + rt.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + rt.setLogtime(cal.getTime()); + rt.setUptime(cal.getTime()); + + rt.setRunsecond(Integer.parseInt((String) item[3])); + rt.setRunhour(Integer.parseInt((String) item[4])); + + logger.debug("根据ID查询照明最新运行时长成功" + rt + "]"); + + return rt; + } + 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 addRtRecord(PgZmRt zmrt) { + return addRtRecord(zmrt.getRunsecond(), zmrt.getRunhour(), zmrt.getTmStr(), zmrt.getPgdeviceid()); + } + + @Override + public int addRtRecord(int second, int hour, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_RT " + + "(RUNSECOND, RUNHOUR, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = second; + params[1] = hour; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", second=" + second + ", hour=" + hour + ", deviceid=" + 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 findAllStat() { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT"; + try { + conn = ConnectionManager.getConnectionFromC3P0(); + 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + 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 PgZmStat findStatById(Integer id) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明运行状态成功" + stat + "]"); + + return stat; + } + else + return null; + } catch (Exception ex) { + logger.error("根据ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public List findStatByDeviceAndTm(Integer deviceid, String start, String end) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT 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++) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(i); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + list.add(stat); + } + return list; + } + else + return null; + } catch (Exception ex) { + logger.error("根据设备ID和时间查询照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + @Override + public PgZmStat findLatestStatByDevice(Integer deviceid) { + Connection conn = null; + + String queryStr = "SELECT ID, LOGTIME, PGDEVICEID, RUN, FLT, EN, ROUT FROM PG_ZM_STAT WHERE PGDEVICEID = ? ORDER BY LOGTIME DESC"; + 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) { + PgZmStat stat = new PgZmStat(); + Object[] item = tempList.get(0); + + stat.setId(((Number) item[0]).intValue()); + stat.setPgdeviceid(((Number) item[2]).intValue()); + + long tmValue = ((java.sql.Timestamp) ((oracle.sql.TIMESTAMP) item[1]).toJdbc()).getTime(); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(tmValue); + stat.setLogtime(cal.getTime()); + stat.setUptime(cal.getTime()); + + stat.setRun(Boolean.parseBoolean((String) item[3])); + stat.setFlt(Boolean.parseBoolean((String) item[4])); + stat.setEn(Boolean.parseBoolean((String) item[5])); + stat.setRout(Boolean.parseBoolean((String) item[6])); + + logger.debug("根据ID查询照明最新运行状态成功" + stat + "]"); + + return stat; + } + 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 addStatRecord(PgZmStat zmstat) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, EN, ROUT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, ?, ?, ?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[7]; + params[0] = zmstat.getRun(); + params[1] = zmstat.getFlt(); + params[2] = zmstat.getEn(); + params[3] = zmstat.getRout(); + params[4] = zmstat.getTmStr(); + params[5] = zmstat.getTmStr(); + params[6] = zmstat.getPgdeviceid(); + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("插入照明运行状态成功" + zmstat); + 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 int addStatRecord(boolean run, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, 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] = run; + 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 + ", run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("插入照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("插入照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + + @Override + public int addStatRecord(boolean run, boolean flt, String tm, int deviceid) { + Connection conn = null; + + String insertStr = "INSERT INTO PG_ZM_STAT " + + "(RUN, FLT, LOGTIME, UPTIME, PGDEVICEID) " + + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?)"; + Object[] params = new Object[5]; + params[0] = run; + params[1] = flt; + params[2] = tm; + params[3] = tm; + params[4] = 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 + ", run=" + run + ", flt=" + flt + ", deviceid=" + 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 int updateDeviceStatus(int deviceid, boolean run) { + Connection conn = null; + + String insertStr = "UPDATE PG_DEVICE SET ISOPEN = ? WHERE ID = ?"; + Object[] params = new Object[2]; + params[0] = run; + params[1] = deviceid; + + try { + conn = ConnectionManager.getConnectionFromC3P0(); + conn.setAutoCommit(false); + + QueryRunner runner = new QueryRunner(); + int count = runner.update(conn, insertStr, params); + + if (count > 0) + logger.debug("更新照明运行状态成功[run=" + run + ", deviceid=" + deviceid + "]"); + else + logger.error("更新照明运行状态失败!"); + + return count; + } catch (Exception ex) { + logger.error("更新照明运行状态异常", ex); + } finally { + try { + DbUtils.commitAndClose(conn); + } catch (SQLException e) { + e.printStackTrace(); + } + } + return 0; + } + +} diff --git a/src/com/szpg/plc/PGDSCServlet.java b/src/com/szpg/plc/PGDSCServlet.java index 30362a5..f4d1659 100644 --- a/src/com/szpg/plc/PGDSCServlet.java +++ b/src/com/szpg/plc/PGDSCServlet.java @@ -18,12 +18,14 @@ import com.szpg.task.ReadCH4ValueTask; import com.szpg.task.ReadCOStatusTask; import com.szpg.task.ReadCOValueTask; +import com.szpg.task.ReadDSStatusTask; 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.ReadYWStatusTask; public class PGDSCServlet extends HttpServlet { @@ -55,24 +57,30 @@ } // 3启动查询温湿度的定时任务 - testSendWSCommand(); - testSendWSStatusCommand(); + sendWSCommand(); + sendWSStatusCommand(); // 4启动查询甲烷的定时任务 - testSendCH4Command(); - testSendCH4StatusCommand(); + sendCH4Command(); + sendCH4StatusCommand(); // 5启动查询一氧化碳的定时任务 - testSendCOCommand(); - testSendCOStatusCommand(); + sendCOCommand(); + sendCOStatusCommand(); // 6氧气 - testSendO2Command(); - testSendO2StatusCommand(); + sendO2Command(); + sendO2StatusCommand(); // 7硫化氢 - testSendHSCommand(); - testSendHSStatusCommand(); + sendHSCommand(); + sendHSStatusCommand(); + + // 8对射报警 + sendDSStatusCommand(); + + // 9液位报警 + sendYWStatusCommand(); } /** @@ -80,7 +88,7 @@ * * @param client */ - private void testSendWSCommand() { + private void sendWSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSValueTask(), 20, 600, TimeUnit.SECONDS); } @@ -89,7 +97,7 @@ * 发送查询温湿度报警状态命令 * @param client */ - private void testSendWSStatusCommand() { + private void sendWSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadWSStatusTask(), 25, 600, TimeUnit.SECONDS); } @@ -99,7 +107,7 @@ * * @param client */ - private void testSendCH4Command() { + private void sendCH4Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4ValueTask(), 10, 600, TimeUnit.SECONDS); } @@ -108,7 +116,7 @@ * 发送查询甲烷报警状态命令 * @param client */ - private void testSendCH4StatusCommand() { + private void sendCH4StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCH4StatusTask(), 15, 600, TimeUnit.SECONDS); } @@ -118,7 +126,7 @@ * * @param client */ - private void testSendCOCommand() { + private void sendCOCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOValueTask(), 30, 600, TimeUnit.SECONDS); } @@ -127,7 +135,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendCOStatusCommand() { + private void sendCOStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadCOStatusTask(), 35, 600, TimeUnit.SECONDS); } @@ -137,7 +145,7 @@ * * @param client */ - private void testSendO2Command() { + private void sendO2Command() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2ValueTask(), 40, 600, TimeUnit.SECONDS); } @@ -146,7 +154,7 @@ * 发送查询一氧化碳报警状态命令 * @param client */ - private void testSendO2StatusCommand() { + private void sendO2StatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadO2StatusTask(), 45, 600, TimeUnit.SECONDS); } @@ -156,7 +164,7 @@ * * @param client */ - private void testSendHSCommand() { + private void sendHSCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSValueTask(), 50, 600, TimeUnit.SECONDS); } @@ -165,8 +173,26 @@ * 发送查询硫化氢报警状态命令 * @param client */ - private void testSendHSStatusCommand() { + private void sendHSStatusCommand() { ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); sche.scheduleWithFixedDelay(new ReadHSStatusTask(), 55, 600, TimeUnit.SECONDS); } + + /** + * 发送查询对射报警状态命令 + * @param client + */ + private void sendDSStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadDSStatusTask(), 60, 600, TimeUnit.SECONDS); + } + + /** + * 发送查询爆管液位报警状态命令 + * @param client + */ + private void sendYWStatusCommand() { + ScheduledExecutorService sche = new ScheduledThreadPoolExecutor(1); + sche.scheduleWithFixedDelay(new ReadYWStatusTask(), 70, 600, TimeUnit.SECONDS); + } } diff --git a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java index 2b19500..47ecb5b 100644 --- a/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadDSStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDsDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.impl.PgDsDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -2692039091478584257L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List dsbj; // 对射报警状态 - private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 - - public ReadDSStatusCommandResponse() { - dsbj = new ArrayList(); - } - - public List getDsbj() { - return dsbj; - } - - public void setDsbj(List dsbj) { - this.dsbj = dsbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将对射报警数据存入数据库 - PgDsDao dsDao = new PgDsDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将红外对射报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - dsDao.addSbjzRecord(dsbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU红外对射报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); - - // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析红外对射报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析红外对射报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 - - getDsbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadDSStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -2692039091478584257L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List dsbj; // 对射报警状态 + private String[] zcList; //红外对射监测的资产列表,从配置文件中获取 + + public ReadDSStatusCommandResponse() { + dsbj = new ArrayList(); + } + + public List getDsbj() { + return dsbj; + } + + public void setDsbj(List dsbj) { + this.dsbj = dsbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将对射报警数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将红外对射报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (dsbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU红外对射报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".DSALM.START")); + + // 获取目标ACU红外对射相关的资产列表,即红外对射设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".DS.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析红外对射报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析红外对射报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".Alm"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 红外对射报警状态标志位 + + getDsbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java index 4f2abfb..0b65587 100644 --- a/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadFjStatCommandResponse.java @@ -1,147 +1,149 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgFjDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgFjDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -5849842153973146848L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List fjFlt; - private List fjRun; - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadFjStatCommandResponse() { - fjFlt = new ArrayList(); - fjRun = new ArrayList(); - } - - public List getFjFlt() { - return fjFlt; - } - - public void setFjFlt(List fjFlt) { - this.fjFlt = fjFlt; - } - - public List getFjRun() { - return fjRun; - } - - public void setFjRun(List fjRun) { - this.fjRun = fjRun; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将风机运行状态数据存入数据库 - PgFjDao fjDao = new PgFjDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将风机运行状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU风机运行状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); - - // 获取目标ACU风机相关的资产列表,即风机列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析风机运行状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析风机运行状态 - PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); - if (null == runBlObj) { - continue; - } - - int rkszdz = runBlObj.getKszdz(); //开始字地址 - int roffset = rkszdz - start; //与开始字的偏移量 - int rbit = runBlObj.getSzw(); //所在位 - - char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 - - // 解析风机故障报警状态 - PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); - if (null == fltBlObj) { - continue; - } - - int fkszdz = fltBlObj.getKszdz(); //开始字地址 - int foffset = fkszdz - start; //与开始字的偏移量 - int fbit = fltBlObj.getSzw(); //所在位 - - char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 - - getFjFlt().add(fltBt == '1' ? true : false); - getFjRun().add(runBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgFjDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgFjDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; +import com.szpg.util.TimeFormat; + +public class ReadFjStatCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -5849842153973146848L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List fjFlt; + private List fjRun; + private String[] zcList; //资产列表,从配置文件中获取 + + public ReadFjStatCommandResponse() { + fjFlt = new ArrayList(); + fjRun = new ArrayList(); + } + + public List getFjFlt() { + return fjFlt; + } + + public void setFjFlt(List fjFlt) { + this.fjFlt = fjFlt; + } + + public List getFjRun() { + return fjRun; + } + + public void setFjRun(List fjRun) { + this.fjRun = fjRun; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将风机运行状态数据存入数据库 + PgFjDao fjDao = new PgFjDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + if (null != zcList && zcList.length > 0) { + // 遍历设备列表,将风机运行状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + fjDao.addStatRecord(fjRun.get(i), fjFlt.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); + + fjDao.updateDeviceStatus(id, fjRun.get(i)); + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU风机运行状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".FJSTAT.START")); + + // 获取目标ACU风机相关的资产列表,即风机列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".FJ.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析风机运行状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析风机运行状态 + PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); + if (null == runBlObj) { + continue; + } + + int rkszdz = runBlObj.getKszdz(); //开始字地址 + int roffset = rkszdz - start; //与开始字的偏移量 + int rbit = runBlObj.getSzw(); //所在位 + + char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 + + // 解析风机故障报警状态 + PgHjsbbl fltBlObj = blDao.findBlByBh(zcbh + ".Flt"); + if (null == fltBlObj) { + continue; + } + + int fkszdz = fltBlObj.getKszdz(); //开始字地址 + int foffset = fkszdz - start; //与开始字的偏移量 + int fbit = fltBlObj.getSzw(); //所在位 + + char fltBt = dataStr.charAt(dataStr.length() - 1 - foffset * 16 - fbit); // 风机故障报警标志位 + + getFjFlt().add(fltBt == '1' ? true : false); + getFjRun().add(runBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java index 4a489f6..f742038 100644 --- a/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadYWStatusCommandResponse.java @@ -1,122 +1,128 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgYwDao; -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgYwDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadYWStatusCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = 2363774800273830916L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List ywbj; // 爆管液位报警状态 - private String[] zcList; //爆管液位监测的资产列表,从配置文件中获取 - - public ReadYWStatusCommandResponse() { - ywbj = new ArrayList(); - } - - public List getYwbj() { - return ywbj; - } - - public void setYwbj(List ywbj) { - this.ywbj = ywbj; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将爆管液位浓度数据存入数据库 - PgYwDao ywDao = new PgYwDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - // 遍历资产列表,将爆管液位报警状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - ywDao.addSbjzRecord(ywbj.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU爆管液位报警状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.START")); - - // 获取目标ACU爆管液位相关的资产列表,即爆管液位设备列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".YW.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析爆管液位报警状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析爆管液位报警状态 - PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); - if (null == almBlObj) { - continue; - } - - int akszdz = almBlObj.getKszdz(); //开始字地址 - int aoffset = akszdz - start; //与开始字的偏移量 - int abit = almBlObj.getSzw(); //所在位 - - char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 爆管液位报警状态标志位 - - getYwbj().add(bjBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgAlarm; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; + +public class ReadYWStatusCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = 2363774800273830916L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List ywbj; // 爆管液位报警状态 + private String[] zcList; //爆管液位监测的资产列表,从配置文件中获取 + + public ReadYWStatusCommandResponse() { + ywbj = new ArrayList(); + } + + public List getYwbj() { + return ywbj; + } + + public void setYwbj(List ywbj) { + this.ywbj = ywbj; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将爆管液位浓度数据存入数据库 + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + // 遍历资产列表,将爆管液位报警状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + if (ywbj.get(i) == true) { + PgAlarm alarmRec = new PgAlarm(); + alarmRec.setAlarm_date(this.getTime().getTime()); + alarmRec.setAlarmdevid(id); + alarmRec.setAlarmtypeid(PgAlarm.ALARM_TYPE_PGSAF); + + deviceDao.addGenerlAlarmRecord(alarmRec); + + // 推送到上级平台 + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU爆管液位报警状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".YWALM.START")); + + // 获取目标ACU爆管液位相关的资产列表,即爆管液位设备列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".YW.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析爆管液位报警状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析爆管液位报警状态 + PgHjsbbl almBlObj = blDao.findBlByBh(zcbh + ".AH"); + if (null == almBlObj) { + continue; + } + + int akszdz = almBlObj.getKszdz(); //开始字地址 + int aoffset = akszdz - start; //与开始字的偏移量 + int abit = almBlObj.getSzw(); //所在位 + + char bjBt = dataStr.charAt(dataStr.length() - 1 - aoffset * 16 - abit); // 爆管液位报警状态标志位 + + getYwbj().add(bjBt == '1' ? true : false); + } + } + +} diff --git a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java index 951a3dc..a6b7583 100644 --- a/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java +++ b/src/com/szpg/plc/message/response/read/ReadZmStatCommandResponse.java @@ -1,124 +1,126 @@ -package com.szpg.plc.message.response.read; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; - -import com.szpg.db.dao.PgDeviceDao; -import com.szpg.db.dao.PgZmDao; -import com.szpg.db.dao.PgHjsbblDao; -import com.szpg.db.dao.impl.PgDeviceDaoImpl; -import com.szpg.db.dao.impl.PgZmDaoImpl; -import com.szpg.db.dao.impl.PgHjsbblDaoImpl; -import com.szpg.db.data.PgHjsbbl; -import com.szpg.plc.message.response.ReadMemoryCommandResponse; -import com.szpg.plc.util.ByteUtil; -import com.szpg.util.Configure; -import com.szpg.util.TimeFormat; - -public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { - - /** - * - */ - private static final long serialVersionUID = -3887112876994787055L; - - private final Logger logger = Logger.getLogger(this.getClass().getName()); - - private List zmRun; - private String[] zcList; //资产列表,从配置文件中获取 - - public ReadZmStatCommandResponse() { - zmRun = new ArrayList(); - } - - public List getZmRun() { - return zmRun; - } - - public void setZmRun(List zmRun) { - this.zmRun = zmRun; - } - - public String[] getZcList() { - return zcList; - } - - public void setZcList(String[] zcList) { - this.zcList = zcList; - } - - @Override - public void afterAction() { - // 1将照明运行状态数据存入数据库 - PgZmDao zmDao = new PgZmDaoImpl(); - PgDeviceDao deviceDao = new PgDeviceDaoImpl(); - - if (null != zcList && zcList.length > 0) { - // 遍历设备列表,将照明运行状态存入数据库 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - int id = deviceDao.findDeviceIdByCode(zcbh); - if (id > 0) { - zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); - } - } - } - } - - @Override - public void parseData(byte[] messageData) { - // 获取目标ACU的代码 - String acucode = this.getAcucode(); - - // 判断数据的长度是否满足要求 - if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.WORDCOUNT")) * 2) { - logger.error("返回的数据长度与读取的不一致!"); - this.setValid(false); - return; - } - - // 将数据转换为字符串 - // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 - String dataStr = ""; - for (int c = 0; c < messageData.length; c = c + 2) { - dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; - } - - PgHjsbblDao blDao = new PgHjsbblDaoImpl(); - - // 获取目标ACU照明运行状态内存区域的起始字地址 - int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.START")); - - // 获取目标ACU照明相关的资产列表,即风机列表 - String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); - if (StringUtils.isEmpty(zcListStr) == true) { - this.setValid(false); - return; - } - zcList = zcListStr.split(";"); - - // 解析照明运行状态 - for (int i = 0; i < zcList.length; i++) { - String zcbh = zcList[i]; - - // 解析照明运行状态 - PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); - if (null == runBlObj) { - continue; - } - - int rkszdz = runBlObj.getKszdz(); //开始字地址 - int roffset = rkszdz - start; //与开始字的偏移量 - int rbit = runBlObj.getSzw(); //所在位 - - char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 - - getZmRun().add(runBt == '1' ? true : false); - } - } - -} +package com.szpg.plc.message.response.read; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; + +import com.szpg.db.dao.PgDeviceDao; +import com.szpg.db.dao.PgZmDao; +import com.szpg.db.dao.PgHjsbblDao; +import com.szpg.db.dao.impl.PgDeviceDaoImpl; +import com.szpg.db.dao.impl.PgZmDaoImpl; +import com.szpg.db.dao.impl.PgHjsbblDaoImpl; +import com.szpg.db.data.PgHjsbbl; +import com.szpg.plc.message.response.ReadMemoryCommandResponse; +import com.szpg.plc.util.ByteUtil; +import com.szpg.util.Configure; +import com.szpg.util.TimeFormat; + +public class ReadZmStatCommandResponse extends ReadMemoryCommandResponse { + + /** + * + */ + private static final long serialVersionUID = -3887112876994787055L; + + private final Logger logger = Logger.getLogger(this.getClass().getName()); + + private List zmRun; + private String[] zcList; //资产列表,从配置文件中获取 + + public ReadZmStatCommandResponse() { + zmRun = new ArrayList(); + } + + public List getZmRun() { + return zmRun; + } + + public void setZmRun(List zmRun) { + this.zmRun = zmRun; + } + + public String[] getZcList() { + return zcList; + } + + public void setZcList(String[] zcList) { + this.zcList = zcList; + } + + @Override + public void afterAction() { + // 1将照明运行状态数据存入数据库 + PgZmDao zmDao = new PgZmDaoImpl(); + PgDeviceDao deviceDao = new PgDeviceDaoImpl(); + + if (null != zcList && zcList.length > 0) { + // 遍历设备列表,将照明运行状态存入数据库 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + int id = deviceDao.findDeviceIdByCode(zcbh); + if (id > 0) { + zmDao.addStatRecord(zmRun.get(i), TimeFormat.formatTimestamp(this.getTime().getTime()), id); + + zmDao.updateDeviceStatus(id, zmRun.get(i)); + } + } + } + } + + @Override + public void parseData(byte[] messageData) { + // 获取目标ACU的代码 + String acucode = this.getAcucode(); + + // 判断数据的长度是否满足要求 + if (messageData.length != Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.WORDCOUNT")) * 2) { + logger.error("返回的数据长度与读取的不一致!"); + this.setValid(false); + return; + } + + // 将数据转换为字符串 + // 按照高字在前,低字在后;高字节在前,低字节在后的顺序 + String dataStr = ""; + for (int c = 0; c < messageData.length; c = c + 2) { + dataStr = ByteUtil.binToBinString(new byte[] {messageData[c], messageData[c + 1]}) + dataStr; + } + + PgHjsbblDao blDao = new PgHjsbblDaoImpl(); + + // 获取目标ACU照明运行状态内存区域的起始字地址 + int start = Integer.parseInt(Configure.getProperty("acubl", acucode + ".ZMSTAT.START")); + + // 获取目标ACU照明相关的资产列表,即风机列表 + String zcListStr = Configure.getProperty("acubl", acucode + ".ZM.ZC.LIST"); + if (StringUtils.isEmpty(zcListStr) == true) { + this.setValid(false); + return; + } + zcList = zcListStr.split(";"); + + // 解析照明运行状态 + for (int i = 0; i < zcList.length; i++) { + String zcbh = zcList[i]; + + // 解析照明运行状态 + PgHjsbbl runBlObj = blDao.findBlByBh(zcbh + ".Run"); + if (null == runBlObj) { + continue; + } + + int rkszdz = runBlObj.getKszdz(); //开始字地址 + int roffset = rkszdz - start; //与开始字的偏移量 + int rbit = runBlObj.getSzw(); //所在位 + + char runBt = dataStr.charAt(dataStr.length() - 1 - roffset * 16 - rbit); // 风机运行状态标志位 + + getZmRun().add(runBt == '1' ? true : false); + } + } + +} diff --git a/src/sys.properties b/src/sys.properties index a1d38c6..c1febe8 100644 --- a/src/sys.properties +++ b/src/sys.properties @@ -1,13 +1,13 @@ #\u6570\u636e\u5e93\u8fde\u63a5\u53c2\u6570 -DB.USERNAME = szpg -DB.PASSWORD = szpg -DB.HOST = localhost +DB.USERNAME = PG +DB.PASSWORD = PG +DB.HOST = 119.254.103.80 DB.PORT = 1521 -DB.SERVICE = orcl +DB.SERVICE = chengdu #\u672c\u673aIP\u5730\u5740 LOCALHOST.NET = 00 -LOCALHOST.NODE = 67 +LOCALHOST.NODE = 52 LOCALHOST.UNIT = 00 #\u5b9a\u671f\u6e05\u7406\u6570\u636e\u5e93\u4e2d\u8d85\u65f6\u7684\u547d\u4ee4