Newer
Older
pgdsc / src / com / szpg / db / dao / impl / PgAlarmDaoImpl.java
ty-pc\admin on 22 May 2019 2 KB 20190522 环境监测功能梳理
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();
			}
		}
	}

}