📄 dbconn.java
字号:
@Override public void run(){ while(true){ try { sleep(1); if(tbmv.size()>0){ ToDBConnMessage tbm = (ToDBConnMessage)tbmv.get(0); tbmv.remove(0); String CN = Protocol_WR_WDC07A.GetCN(tbm.getMessage().getBytes()); if(CN.equals("5061")){ /* * 按照MN号查询站点名称,格式如下: * 站点名称、站点编号、当前时间、烟道分割、是否传输到其他节点 */ String sql = "SELECT dbo.T_DIC_SUBSITE.SITE_NAME, dbo.T_DIC_SUBSITE.SITE_ID, CONVERT(CHAR(19),getdate(),120), " + "dbo.T_DIC_MNSITESET.split, dbo.T_DIC_MNSITESET.istransport, dbo.T_DIC_MNSITESET.MN_ " +"FROM dbo.T_DIC_MNSITESET INNER JOIN " +" dbo.T_DIC_SUBSITE ON " +" dbo.T_DIC_MNSITESET.SITEID = dbo.T_DIC_SUBSITE.SITE_ID " +"WHERE (dbo.T_DIC_MNSITESET.MN = '"+tbm.getGct().getID().toString()+"')"; Vector vResult = getvResult(sql); if(vResult.size()>0){ Vector vTemp = (Vector)vResult.get(0); String Name = (String)vTemp.get(0); String site_id = (String)vTemp.get(1); String NowTime = (String)vTemp.get(2); String split = (String)vTemp.get(3); String istransport =(String)vTemp.get(4); String MN_ =(String)vTemp.get(5); tbm.getGct().setMN_(MN_); if(istransport.equals("1")){ tbm.getGct().InitOutputSocket(); } tbm.getGct().setName(Name); tbm.getGct().setSite_id(site_id); tbm.getGct().setSplit(Integer.parseInt(split)); Date dTemp = Protocol_WR_WDC07A.df3.parse(NowTime); tbm.getGct().SendMessage(Protocol_WR_WDC07A.ReturnSetSystemTime(tbm.getGct().getID().toString(), dTemp,tbm.getGct().getST()).getBytes()); DBConnMessage.Enqueue("$站点:<"+site_id+">"+Name+"登录成功 时间:<"+Protocol_WR_WDC07A.df3.format(new Date())+"> IP:<" +tbm.getGct().getInetAddress()+"> 端口:<"+tbm.getGct().getPort()+">"); tbm.getGct().getLogClass().SendWriteLog(site_id+","+tbm.getGct().getID().toString()+","+tbm.getGct().getInetAddress()+":" +tbm.getGct().getPort(), "System"); dev.AddOnlineSite(tbm.getGct().getTsn()); //补取历史数据 /* * 查询本站点最后一条历史记录的时间 */ Vector vvResult = getvResult("select top 1 CONVERT(CHAR(19),sampling_datetime,120) from efixdata where site_id='"+site_id +"' order by sampling_datetime desc"); Date BDate = new Date(); BDate.setTime(BDate.getTime()-1000*60*60*24*3); if(vvResult.size()>0){ Vector vvTemp = (Vector)vvResult.get(0); Date tBDate = Protocol_WR_WDC07A.df3.parse((String)vvTemp.get(0)); if(dTemp.getTime()-tBDate.getTime()<1000*60*60*24*3){ BDate.setTime(tBDate.getTime()); } } if(dTemp.getTime()-BDate.getTime()>1000*60*10){ String BT = Protocol_WR_WDC07A.df3.format(BDate); String ET = Protocol_WR_WDC07A.df3.format(dTemp); BT = BT.substring(0,15)+"0"; ET = ET.substring(0,15)+"0"; GetFixDataThread getFixDataThread = new GetFixDataThread(tbm.getGct(), BT, ET); getFixDataThread.start(); } //处理实时表 /* * 查询本站点最后16条实时记录的时间 */ vvResult = getvResult("select top 16 CONVERT(CHAR(19),sampling_datetime,120) from enowdata where site_id='"+site_id +"' order by sampling_datetime desc"); if(vvResult.size()>0){ Vector vvTemp = (Vector)vvResult.get(vvResult.size()-1); String tStr = (String)vvTemp.get(0); //删除本站点16条以前的实时数据 update("delete from enowdata where site_id='"+site_id+"' and sampling_datetime<'"+tStr+"'"); } } }else if(CN.equals("2011")){ Vector ReiVector = Protocol_WR_WDC07A.GetItms(tbm.getMessage().getBytes()); Vector ReVector = Protocol_WR_WDC07A.GetValues(tbm.getMessage().getBytes()); //实时数据表名 String Tablename = "ENOWDATA"; String Str = new String(tbm.getMessage().getBytes()); if(Str.indexOf("Avg")>0){ //历史数据表名 Tablename = "EFIXDATA"; } String SDatetime = (String)ReVector.get(0); String SFLUE = "1"; for(int i=1;i<ReiVector.size();i++){ if(i>tbm.getGct().getSplit()){ SFLUE = "2"; } String itmeid = (String)ReiVector.get(i); String value = (String)ReVector.get(i); //查询数据库内部监测项目编号 String sql = "select ItemID_ from T_DIC_ITEMSET where ItemID='"+itmeid+"'"; Vector vResult = getvResult(sql); if(vResult.size()>0){ Vector vTemp = (Vector)vResult.get(0); itmeid = (String)vTemp.get(0); //插入数据 //站点编号、监测项目编号、采集时间、烟道号、实际值、校正值、当前值 sql = "insert into "+Tablename+"(SITE_ID,INFECTANT_ID,SAMPLING_DATETIME,FLUE,ACTUAL_VALUE,ALTERANT_VALUE,CURRENT_VALUE) " + "values('"+tbm.getGct().getSite_id()+"','"+itmeid+"','"+SDatetime+"','"+SFLUE+"','"+value+"','"+value+"','"+value+"')"; update(sql); } } }else if(CN.equals("2051")||(CN.equals("2081"))){ Vector ReiVector = Protocol_WR_WDC07A.GetItms(tbm.getMessage().getBytes()); Vector ReVector = Protocol_WR_WDC07A.GetValues(tbm.getMessage().getBytes()); String SDatetime = (String)ReVector.get(0); String SFLUE = "1"; for(int i=1;i<ReiVector.size();i++){ if(i>tbm.getGct().getSplit()){ SFLUE = "2"; } String itmeid = (String)ReiVector.get(i); String value = (String)ReVector.get(i); //查询监测项目内部号 String sql = "select ItemID_ from T_DIC_ITEMSET where ItemID='"+itmeid+"'"; Vector vResult = getvResult(sql); if(vResult.size()>0){ Vector vTemp = (Vector)vResult.get(0); itmeid = (String)vTemp.get(0); //删除原来的历史数据,插入新的历史数据 //站点编号、监测项目编号、采集时间、烟道号、实际值、校正值、当前值 sql = "delete from EFIXDATA where SITE_ID='"+tbm.getGct().getSite_id()+"' and INFECTANT_ID='" +itmeid+"' and SAMPLING_DATETIME='"+SDatetime+"' and FLUE='"+SFLUE +"' insert into EFIXDATA(SITE_ID,INFECTANT_ID,SAMPLING_DATETIME,FLUE,ACTUAL_VALUE,ALTERANT_VALUE,CURRENT_VALUE) " + "values('"+tbm.getGct().getSite_id()+"','"+itmeid+"','"+SDatetime+"','"+SFLUE+"','"+value+"','"+value+"','"+value+"')"; update(sql); } } DBConnMessage.Enqueue("得到站点:<"+tbm.getGct().getSite_id()+">"+tbm.getGct().getName()+"<"+SDatetime+">的历史数据"); } } } catch (ParseException ex) { Logger.getLogger(DBConn.class.getName()).log(Level.SEVERE, null, ex); } catch (InterruptedException ex) { Logger.getLogger(DBConn.class.getName()).log(Level.SEVERE, null, ex); } } } public void SendToDBMessage(ToDBConnMessage tdm) { tbmv.add(tdm); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -