package com.szpg.db.dao.impl; import java.sql.Connection; import java.sql.SQLException; import org.apache.commons.dbutils.DbUtils; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.apache.log4j.Logger; import com.szpg.db.dao.PgAlarmDao; import com.szpg.db.data.PgAlarm; import com.szpg.db.util.ConnectionManager; import com.szpg.util.TimeFormat; public class PgAlarmDaoImpl implements PgAlarmDao { private final Logger logger = Logger.getLogger(this.getClass().getName()); @Override public int findAlarmCountByDate(String date) { Connection conn = null; String sql = "SELECT COUNT(ID) FROM PG_ALARM WHERE TO_CHAR(ALARM_DATE, 'YYYY-MM-DD') = ?"; Object[] param = new Object[1]; try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); param[0] = date; int count = ((Number) runner.query(conn, sql, new ScalarHandler<Number>(1), param)).intValue(); return count; } catch (Exception ex) { logger.error("根据日期查询报警记录数异常", ex); return 0; } finally { try { DbUtils.commitAndClose(conn); } catch (SQLException e) { e.printStackTrace(); } } } @Override public long insertAlarmRecord(PgAlarm alarmRecord) { Connection conn = null; String sql = "INSERT INTO PG_ALARM " + "(ID, ACTIVE, ALARM_DATE, ALARM_VALUE, DESCRIPTION, ALARMDEVID, ALARMTYPEID, USERID) " + "VALUES (?, ?, TO_DATE(?, 'YYYY-MM-DD HH24:MI:SS'), ?, ?, ?, ?, ?)"; try { conn = ConnectionManager.getConnectionFromC3P0(); conn.setAutoCommit(false); QueryRunner runner = new QueryRunner(); String sqlId = "SELECT SEQ_PG_ALARM_ID.NEXTVAL FROM DUAL"; long id = ((Number) runner.query(conn, sqlId, new ScalarHandler<Number>(1))).longValue(); Object[] params = new Object[8]; params[0] = id; params[1] = alarmRecord.getActive(); params[2] = TimeFormat.formatTimestamp(alarmRecord.getAlarm_date()); params[3] = alarmRecord.getAlarm_value(); params[4] = alarmRecord.getDescription(); params[5] = alarmRecord.getAlarmdevid(); params[6] = alarmRecord.getAlarmtypeid(); params[7] = alarmRecord.getUserid(); int count = runner.update(conn, sql, params); // 新增主表 if (count > 0) logger.debug("插入报警数据成功"); else { logger.error("插入报警数据失败!"); } return id; } catch (Exception ex) { logger.error("插入报警数据异常", ex); return 0; } finally { try { DbUtils.commitAndClose(conn); } catch (SQLException e) { e.printStackTrace(); } } } }