package com.fgkj.dao.impl.ram;
|
|
import java.sql.Connection;
|
import java.sql.PreparedStatement;
|
import java.sql.ResultSet;
|
import java.sql.SQLException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import com.fgkj.dao.BaseDAO;
|
import com.fgkj.dao.CallBack;
|
import com.fgkj.dao.DAOHelper;
|
import com.fgkj.dao.FBS9100_ComBase;
|
import com.fgkj.dao.LimitNumberFactory;
|
import com.fgkj.dao.UinfDaoFactory;
|
import com.fgkj.db.DBUtil;
|
import com.fgkj.db.IDatabaseName;
|
import com.fgkj.dto.BattInf;
|
import com.fgkj.dto.Page;
|
import com.fgkj.dto.User;
|
import com.fgkj.dto.User_inf;
|
import com.fgkj.dto.User_log;
|
import com.fgkj.dto.ram.FBS9100;
|
import com.fgkj.dto.ram.Fbs9100_setparam;
|
import com.fgkj.dto.ram.Fbs9100_state;
|
import com.fgkj.dto.ram.Fbs9600_state;
|
import com.fgkj.services.User_logService;
|
|
public class Fbs9600_stateImpl implements BaseDAO,CallBack{
|
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Fbs9600_state fstate=new Fbs9600_state();
|
fstate.setNum(rs.getInt("num"));
|
fstate.setDev_ip(rs.getString("dev_ip"));
|
fstate.setDev_id(rs.getInt("dev_id"));
|
fstate.setOp_cmd(rs.getInt("op_cmd"));
|
fstate.setDev_workstate(rs.getInt("dev_workstate"));
|
fstate.setDev_alarmstate(rs.getInt("dev_alarmstate"));
|
fstate.setDev_commcount(rs.getInt("dev_commcount"));
|
fstate.setDev_errcommcount(rs.getInt("dev_errcommcount"));
|
list.add(fstate);
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
|
public boolean add(Object obj) {
|
Fbs9600_state fs=(Fbs9600_state) obj;
|
String sql="insert into db_ram_db.tb_Fbs9600_state(dev_ip,dev_id,op_cmd,dev_workstate,dev_alarmstate,dev_commcount," +
|
"dev_errcommcount) values(?,?,?,?,?,?,?)";
|
Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{fs.getDev_ip(),fs.getDev_id(),
|
fs.getOp_cmd(),fs.getDev_workstate(),fs.getDev_alarmstate(),fs.getDev_commcount(),fs.getDev_errcommcount()});
|
return bl;
|
}
|
//fbs显示屏启动放电
|
public boolean update(Object obj) {
|
Fbs9600_state fs=(Fbs9600_state) obj;
|
String sql="update db_ram_db.tb_Fbs9600_state set op_cmd=? " +
|
" where dev_id=?";
|
Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{
|
fs.getOp_cmd(),fs.getDev_id()});
|
return bl;
|
}
|
//fbs9600设备内阻测试
|
public boolean updatePro(Object obj) {
|
List<Fbs9600_state> list=(List<Fbs9600_state>) obj;
|
ArrayList sql_str=new ArrayList();
|
List<User_log> listU=new ArrayList<User_log>();//存放user_log
|
for (Fbs9600_state fstate : list) {
|
if(fstate.getOp_cmd()==FBS9100_ComBase.CMD_9600_Start){
|
String sql="update db_ram_db.tb_Fbs9600_state set op_cmd="+fstate.getOp_cmd()+" " +
|
" where dev_id="+fstate.getDev_id();
|
sql_str.add(sql);
|
}
|
{
|
String msg="启动"+fstate.getDev_id()+"的设备内阻测试";
|
User_log ulog=UinfDaoFactory.CreateULog(UinfDaoFactory.Increase, msg);
|
listU.add(ulog);
|
}
|
|
}
|
boolean bl=DAOHelper.makeManualCommit(DBUtil.getConn(), sql_str);
|
(new User_logService()).addPro(listU);//将用户的操作记录下来
|
return bl;
|
}
|
|
public boolean del(Object obj) {
|
Fbs9600_state fs=(Fbs9600_state) obj;
|
String sql="delete from db_ram_db.tb_Fbs9600_state where num=?";
|
Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{fs.getNum()});
|
return bl;
|
}
|
//FBS9600设备内阻测试显示全部9600设备的信息
|
public List searchByUid(Object obj) {
|
User_inf uinf=(User_inf) obj;
|
String sql="";
|
String baseSql="select distinct tb_Fbs9600_state.num,dev_ip,dev_id,op_cmd,dev_workstate,dev_alarmstate,dev_commcount,dev_errcommcount, " +
|
" db_battinf.tb_battinf.StationName,db_battinf.tb_battinf.FbsDeviceName " +
|
" from db_ram_db.tb_Fbs9600_state " +
|
" left outer join db_battinf.tb_battinf ON tb_fbs9600_state.dev_id=db_battinf.tb_battinf.FBSDeviceId " +
|
" where tb_fbs9600_state.dev_id in(select distinct db_battinf.tb_battinf.FBSDeviceId " +
|
" from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf " +
|
" where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId " +
|
" and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id " +
|
" and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid " +
|
" and db_user.tb_user_inf.uid=? ) ";
|
String F9600sql=" and tb_fbs9600_state.dev_id like '%9600%'";//支持9600设备
|
String F9616sql=" or tb_fbs9600_state.dev_id like '%9616%'";//支持9600设备
|
sql=baseSql+F9600sql+F9616sql;
|
//System.out.println(sql);
|
List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{uinf.getUId()}, new CallBack() {
|
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Fbs9600_state fstate=new Fbs9600_state();
|
fstate.setNum(rs.getInt("num"));
|
fstate.setDev_ip(rs.getString("dev_ip"));
|
fstate.setDev_id(rs.getInt("dev_id"));
|
fstate.setOp_cmd(rs.getInt("op_cmd"));
|
fstate.setDev_workstate(rs.getInt("dev_workstate"));
|
fstate.setDev_alarmstate(rs.getInt("dev_alarmstate"));
|
fstate.setDev_commcount(rs.getInt("dev_commcount"));
|
fstate.setDev_errcommcount(rs.getInt("dev_errcommcount"));
|
|
fstate.setStationName(rs.getString("stationName"));
|
fstate.setDeviceName("FBS9600");
|
list.add(fstate);
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
return list;
|
}
|
//11.1FBS9100设备通信状态查询
|
/*
|
* fbs9100:op_cmd:0:全部;1:fbs9100,2:fbs9600
|
* dev_errcommcount;0:通讯正常,1:通讯中断,100:全部*/
|
public List serchByCondition(Object obj) {
|
Fbs9600_state fs=(Fbs9600_state) obj;
|
Page page=fs.getPage();
|
Connection conn=DBUtil.getConn();
|
String numberSql=" SELECT FOUND_ROWS() number";
|
String sql="";
|
String baseSql="select SQL_CALC_FOUND_ROWS distinct tb_Fbs9600_state.num,dev_ip,dev_id,op_cmd,dev_workstate,dev_alarmstate,dev_commcount,dev_errcommcount, " +
|
"db_battinf.tb_battinf.StationName,db_battinf.tb_battinf.FbsDeviceName," +
|
"COUNT(DISTINCT BattGroupId) as cnt " +
|
"from db_ram_db.tb_Fbs9600_state " +
|
"left outer join db_battinf.tb_battinf ON tb_fbs9600_state.dev_id=db_battinf.tb_battinf.FBSDeviceId " +
|
"where ";
|
//通讯中断
|
String comSqlT=" dev_errcommcount=0 ";
|
String comSqlF=" dev_errcommcount>0 ";
|
String comSqlA=" dev_errcommcount>=0 ";
|
if(fs.getDev_errcommcount()==0){
|
baseSql+=comSqlT;
|
}else if(fs.getDev_errcommcount()==1){
|
baseSql+=comSqlF;
|
}else if(fs.getDev_errcommcount()==100){
|
baseSql+=comSqlA;
|
}
|
//判断是否为管理的机房
|
String stationSql=" and dev_id in(select distinct db_battinf.tb_battinf.FBSDeviceId " +
|
" from db_battinf.tb_battinf,db_user.tb_user_battgroup_baojigroup_battgroup,db_user.tb_user_battgroup_baojigroup_usr,db_user.tb_user_inf " +
|
" where db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId=db_battinf.tb_battinf.BattGroupId " +
|
" and db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id=db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id " +
|
" and db_user.tb_user_inf.uid=db_user.tb_user_battgroup_baojigroup_usr.uid " +
|
" and db_user.tb_user_inf.uid=? ) ";
|
baseSql+=stationSql;
|
//分组
|
String groupSql=" GROUP BY tb_fbs9600_state.dev_id ";
|
//分页
|
String limitSql=" limit ?,? ";
|
//最后结果
|
sql=baseSql+groupSql+limitSql;
|
//System.out.println(sql);
|
List<Fbs9600_state> list=DAOHelper.executeQueryLimit(sql, conn, new Object[]{fs.getNum(),(page.getPageCurr()-1)*page.getPageSize(),page.getPageSize()}, new CallBack() {
|
List list=new ArrayList();
|
public List getResults(ResultSet rs) {
|
try {
|
while(rs.next()){
|
Fbs9600_state fstate=new Fbs9600_state();
|
|
fstate.setNum(rs.getInt("cnt")); //关联电池组
|
fstate.setDev_ip(rs.getString("dev_ip"));
|
fstate.setDev_id(rs.getInt("dev_id"));
|
fstate.setOp_cmd(rs.getInt("op_cmd"));
|
fstate.setDev_workstate(rs.getInt("dev_workstate"));
|
fstate.setDev_alarmstate(rs.getInt("dev_alarmstate"));
|
fstate.setDev_commcount(rs.getInt("dev_commcount"));
|
fstate.setDev_errcommcount(rs.getInt("dev_errcommcount"));
|
|
fstate.setStationName(rs.getString("stationName"));
|
fstate.setDeviceName("FBS9600");
|
list.add(fstate);
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
//去掉limit条件后的总数
|
int number=LimitNumberFactory.GetLimtitNumber(conn, numberSql);
|
if(list!=null&&list.size()>0){
|
page.setPageAll(number);
|
list.get(list.size()-1).setPage(page);
|
}
|
return list;
|
}
|
|
//机房命令操作设备时的cmd和ack校验
|
public boolean sendCmdToFBS9600Dev(int cmd,int dev_id)
|
{
|
int m_cmd = cmd;
|
int m_cmd_ack = cmd;
|
switch(m_cmd) {
|
case FBS9100_ComBase.CMD_Start: m_cmd_ack = FBS9100_ComBase.CMD_StartAck; break;
|
case FBS9100_ComBase.CMD_Stop: m_cmd_ack = FBS9100_ComBase.CMD_StopAck; break;
|
default: return false;
|
}
|
boolean res_exe = false;
|
String sql = "UPDATE db_ram_db.tb_fbs9600_state SET "
|
+ " op_cmd=? "
|
+ " WHERE dev_id=? ";
|
Boolean bl=DAOHelper.executeUpdate(DBUtil.getConn(), sql, new Object[]{m_cmd,dev_id});
|
if(true == bl)
|
{
|
sql = "SELECT op_cmd FROM db_ram_db.tb_fbs9600_state "+
|
" WHERE dev_id="+dev_id;
|
Connection conn=DBUtil.getConn();
|
PreparedStatement ps = null;
|
ResultSet rs = null;
|
for(int n=0; n<20; n++)
|
{
|
try {
|
ps = conn.prepareStatement(sql);
|
rs=ps.executeQuery();
|
if(rs.next())
|
{
|
if(rs.getInt("op_cmd") == m_cmd_ack)
|
{
|
res_exe = true;
|
break;
|
}
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
|
try {
|
Thread.sleep(250);
|
} catch (InterruptedException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
}
|
DBUtil.close(rs, ps, conn);
|
}
|
return res_exe;
|
}
|
|
//放电测试添加fbs9600设备的添加电池组的操作
|
public List serchByInfo(Object obj) {
|
BattInf binf=(BattInf) obj;
|
String sql="select db_battinf.tb_battinf.battgroupid,db_battinf.tb_battinf.StationName,db_battinf.tb_battinf.StationName5,db_battinf.tb_battinf.FBSDeviceId,db_battinf.tb_battinf.FBSDeviceIp,FbsDeviceName,db_battinf.tb_battinf.BattGroupName" +
|
",db_battinf.tb_battinf.GroupIndexInFBSDevice,db_battinf.tb_battinf.MonCount,db_battinf.tb_battinf.MonVolStd,db_battinf.tb_battinf.MonCapStd" +
|
",db_ram_db.tb_fbs9600_state.dev_ip,db_ram_db.tb_fbs9600_state.dev_id,db_ram_db.tb_fbs9600_state.op_cmd" +
|
",db_ram_db.tb_fbs9600_state.dev_commcount,db_ram_db.tb_fbs9600_state.dev_errcommcount " +
|
" FROM db_battinf.tb_battinf " +
|
" LEFT OUTER JOIN db_ram_db.tb_fbs9600_state on db_ram_db.tb_fbs9600_state.dev_id=db_battinf.tb_battinf.FBSDeviceId " +
|
" where db_battinf.tb_battinf.StationName1 like ? and db_battinf.tb_battinf.StationName LIKE ? " +
|
" and db_battinf.tb_battinf.battgroupid=? ";
|
List list=DAOHelper.executeQuery(sql, DBUtil.getConn(), new Object[]{"%"+binf.getStationName1()+"%","%"+binf.getStationName()+"%",binf.getBattGroupId()}, new CallBack() {
|
|
public List getResults(ResultSet rs) {
|
List list=new ArrayList();
|
try {
|
while(rs.next()){
|
Fbs9600_state fstate=new Fbs9600_state();
|
fstate.setBattgroupid(rs.getInt("battgroupid"));
|
fstate.setDev_ip(rs.getString("dev_ip"));
|
fstate.setDev_id(rs.getInt("dev_id"));
|
fstate.setOp_cmd(rs.getInt("op_cmd"));
|
fstate.setDev_commcount(rs.getInt("dev_commcount"));
|
fstate.setDev_errcommcount(rs.getInt("dev_errcommcount"));
|
fstate.setStationName(rs.getString("stationName"));
|
fstate.setStationName5(rs.getString("stationName5"));
|
fstate.setDeviceName(rs.getString("FbsDeviceName"));
|
fstate.setBattgroupName(rs.getString("battgroupName"));
|
fstate.setGroupIndexInFBSDevice(rs.getInt("groupIndexInFBSDevice"));
|
list.add(fstate);
|
}
|
} catch (SQLException e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
return list;
|
}
|
});
|
return list;
|
}
|
|
public static void main(String[] args) {
|
Fbs9600_stateImpl fi=new Fbs9600_stateImpl();
|
/*Fbs9600_state fs=new Fbs9600_state();
|
fs.setNum(5)*/;
|
|
Fbs9100_state fs=new Fbs9100_state();
|
fs.setNum(5);
|
fs.setDev_errcommcount(0);
|
|
/*List<Fbs9600_state> list=fi.serchByCondition(fs);
|
System.out.println(list.size());
|
for(Fbs9600_state f:list){
|
System.out.println(f);
|
}*/
|
User_inf uinf=new User_inf();
|
uinf.setUId(1002);
|
List<Fbs9600_state> list=fi.searchByUid(uinf);
|
System.out.println(list.size());
|
for(Fbs9600_state f:list){
|
System.out.println(f);
|
}
|
}
|
|
public List searchAll() {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
|
}
|