⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbconn.java

📁 GPRS数据通讯软件源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        @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 + -