2025-02-15

Java代碼 
package sai; 
 
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.math.BigDecimal; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.List; 
 
public class Data { 
     
    private static final String path = Thread.currentThread() 
            .getContextClassLoader().getResource("").getPath(); 
     boolean flag=false; 
     Process proc; 
    public synchronized void GenerateFile(String infile, String outfile) { 
      
        String inpath = path.substring(1, path.indexOf("bin")) 
                + "AdvancedARMA/Release/"; 
        String outpath = path.substring(1, path.indexOf("bin")) + "T/"; 
        String outpath2 = path.substring(1, path.indexOf("bin")) + "Txt2/"; 
        File file = new File(outpath2+outfile); 
 
        if (file.exists()) { 
            try { 
                wait(); 
            } catch (InterruptedException e) { 
            } 
        } 
        notify();// 喚醒阻塞隊列的某線程到就緒隊列 
        String exeFileName = inpath + "AdvancedARMA.exe"; 
        String para = outpath + infile + "   " + outpath2 + outfile + "  10"; 
 
        String cmd = exeFileName + " " + para; 
 
        try { 
            proc = Runtime.getRuntime().exec(cmd); 
 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            System.out.println("Error exec!"); 
        } 
 
        finally{ 
            if(proc==null){ 
             proc.destroy(); 
              
            } 
             
         
        } 
 
         
    } 
 
    private synchronized String getData(String filepath) { 
 
        String inpath = path.substring(1, path.indexOf("bin")) + "Txt2/"; 
        String lastline = ""; 
 
        String fname = inpath + filepath; 
        File file = new File(fname); 
        if (!file.exists()) { 
            try { 
                wait(); 
            } catch (InterruptedException e) { 
            } 
        } 
         
        notify();// 喚醒阻塞隊列的某線程到就緒隊列 
 
        try { 
            BufferedReader br = new BufferedReader(new InputStreamReader( 
                    new FileInputStream(fname))); 
            String line; 
 
            while ((line = br.readLine()) != null) { 
                lastline = line; 
 
            } 
            br.close(); 
            //file.delete();//刪除臨時文件 
        } catch (FileNotFoundException e) { 
             
            System.out.println("文件正在創建中…"); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } 
        return lastline; 
    } 
     
     
    static class GenerateData extends Thread { 
 
        private List<String> id, time, zhan; 
        private boolean flag; 
        private Data data; 
        int xx = 0; 
 
        public GenerateData(List<String> id, List<String> time, 
                List<String> zhan, Data data) { 
            this.id = id; 
            this.time = time; 
            this.zhan = zhan; 
            this.data = data; 
        } 
 
        public void run() { 
             
            for (int s = 0; s < id.size(); s++) { 
                for (int z = 0; z < time.size(); z++) { 
                    for (int y = 0; y < zhan.size(); y++) { 
                        for (int i = 0; i < zhan.size(); i++) { 
                             
                            if (y == i) {continue;} 
                                String in =id.get(s)+ "–" +time.get(z) 
                                + "–" + zhan.get(y) + "–" + "–" + zhan.get(i) 
                                + ".txt"; 
                                String out = "temp–" + in; 
 
                                data.GenerateFile(in, out); 
                                xx++; 
                                System.out.println(xx + "\t" + out); 
                                System.gc();     
                        } 
                    } 
                } 
            } 
        } 
    } 
 
    static class GetData extends Thread { 
        private List<String> id, time, zhan, data1, data2; 
        private boolean flag; 
        private Data data; 
        private int xx = 0; // 上行 
        private int yy = 0;// 下行 
 
        public GetData(List<String> id, List<String> time, List<String> zhan, 
                Data data) { 
            this.id = id; 
            this.time = time; 
            this.zhan = zhan; 
            this.data = data; 
        } 
         
        //上行 
        public void  getsql(List<String> data1){ 
             
            List<String> nullList = new ArrayList<String>(); 
            List<String> datalist = new ArrayList<String>(); 
            int xx = 1; 
            for (int y = 0; y < zhan.size(); y++) { 
                String sql = "INSERT INTO T_ODKLTJSCB (BOARD_STATION,   ARRIVAL_STATION1,ARRIVAL_STATION2,ARRIVAL_STATION3, ARRIVAL_STATION4, ARRIVAL_STATION5,"+ 
       " ARRIVAL_STATION6,ARRIVAL_STATION7,ARRIVAL_STATION8,ARRIVAL_STATION9,ARRIVAL_STATION10, ARRIVAL_STATION11,"+ 
       " ARRIVAL_STATION12,ARRIVAL_STATION13,ARRIVAL_STATION14,ARRIVAL_STATION15,ARRIVAL_STATION16,ARRIVAL_STATION17,"+ 
        "ARRIVAL_STATION18,ARRIVAL_STATION19, ARRIVAL_STATION20,ARRIVAL_STATION21)VALUES( "; 
                for (int i = 0; i < zhan.size(); i++) { 
                 
                    if (y < i) { 
                        // 上行 
                        datalist.add("a"); 
                    } else { 
                        nullList.add(null); 
                    } 
                    if (y == i) { 
                            for(int g=0;g<nullList.size();g++){ 
                                sql=sql+nullList.get(g)+","; 
                            } 
                    } 
                } 
                for(int v=0;v<datalist.size();v++){ 
                    sql=sql+datalist.get(v)+","; 
                } 
                sql= sql.substring(0,sql.length()-1); 
                sql=sql+" );"; 
//              System.out.println("插入 sql:" +sql +"\t" + xx); 
//              xx++; 
                datalist.clear(); 
                nullList.clear(); 
            } 
        } 
         
        //下行 
        public void  getsql2(List<String> data2){ 
             
            List<String> nullList = new ArrayList<String>(); 
            List<String> datalist = new ArrayList<String>(); 
            int xx = 1; 
            for (int y = 0; y < zhan.size(); y++) { 
                String sql = "INSERT INTO T_ODKLTJSCB (BOARD_STATION,   ARRIVAL_STATION1,ARRIVAL_STATION2,ARRIVAL_STATION3, ARRIVAL_STATION4, ARRIVAL_STATION5,"+ 
       " ARRIVAL_STATION6,ARRIVAL_STATION7,ARRIVAL_STATION8,ARRIVAL_STATION9,ARRIVAL_STATION10, ARRIVAL_STATION11,"+ 
       " ARRIVAL_STATION12,ARRIVAL_STATION13,ARRIVAL_STATION14,ARRIVAL_STATION15,ARRIVAL_STATION16,ARRIVAL_STATION17,"+ 
        "ARRIVAL_STATION18,ARRIVAL_STATION19, ARRIVAL_STATION20,ARRIVAL_STATION21)VALUES( "; 
                for (int i = 0; i < zhan.size(); i++) { 
                     
                    if (y > i) { 
                        // 下行 
                        datalist.add("a"); 
                    } else{ 
                    for(int c=0;c< zhan.size()-i;c++){ 
                        nullList.add(null); 
                    }} 
                    if (y == i) { 
                        for(int v=0;v<datalist.size();v++){ 
                            sql=sql+datalist.get(v)+","; 
                        } 
                            for(int g=0;g<nullList.size();g++){ 
                                sql=sql+nullList.get(g)+","; 
                            }    
                    } 
                } 
                sql= sql.substring(0,sql.length()-1); 
                sql=sql+" );"; 
//              System.out.println("插入 sql:" +sql +"\t" + xx); 
//              xx++; 
                datalist.clear(); 
                nullList.clear(); 
            } 
        } 
    public void run() { 
            for (int s = 0; s < id.size(); s++) { 
                for (int z = 0; z < time.size(); z++) { 
                    for (int y = 0; y < zhan.size(); y++) { 
                        for (int i = 0; i < zhan.size(); i++) { 
 
                            String out = "temp–"+ 
                                id.get(s)+ "–" +time.get(z) 
                                + "–" + zhan.get(y) + "–" + "–" + zhan.get(i) 
                                + ".txt"; 
                            if (y < i) { 
                                // 上行 
                                String lastline = data.getData(out); 
                                //xx++; 
                                System.out.println("(上行)old:" + lastline 
                                        + "\t" + out); 
                                 lastline=lastline.substring(lastline.indexOf(",")+1,lastline.lastIndexOf(",")); 
                                // 四舍五入 
                                    lastline = String.valueOf(new BigDecimal(lastline).setScale(0, 
                                            BigDecimal.ROUND_HALF_UP)); 
                                System.out.println(lastline); 
                                  data1.add(lastline); 
                                  
                            } 
                            if (y > i) { 
                                // 下行 
                                String lastline = data.getData(out); 
                                //yy++; 
                                System.out.println("(下行)old:" + lastline 
                                        + "\t" + out); 
                                 lastline=lastline.substring(lastline.indexOf(",")+1,lastline.lastIndexOf(",")); 
                                // 四舍五入 
                                    lastline = String.valueOf(new BigDecimal(lastline).setScale(0, 
                                            BigDecimal.ROUND_HALF_UP)); 
                                    System.out.println(lastline); 
                                  data2.add(lastline); 
                            } 
                        } 
                    } 
                } 
            } 
        } 
    } 
     
    static class GenerateTxt extends Thread { 
         
        private List<String>  id,time,zhan; 
        private String type,beginTime,endTime; 
        public GenerateTxt(List<String> id,List<String> time,List<String> zhan,String type, String beginTime,  String endTime){ 
            this.beginTime=beginTime; 
            this.endTime=endTime; 
            this.id=id; 
            this.time=time; 
            this.zhan=zhan; 
            this.type=type; 
        } 
         
        public void run() { 
            String outpath = path.substring(1, path.indexOf("bin")) + "T/";  
            for(int a=0;a<id.size();a++){ 
            for(int t=0;t<time.size();t++){ 
                for (int y = 0; y < zhan.size(); y++) { 
                for(int i=0;i<zhan.size();i++){ 
                      if(y==i){ 
                          //上行y<i //下行y>i                                  
                          continue; 
                      } 
                      String sql="select rownum id,  tjsj,bz from( select  substrb(tjrq,0,8),tjrq,tjsj,c.bz from t_odkltj a ,holiday_date1 c where a.KLTJ_ID="+id.get(a)+" and  c.dayy=substrb(tjrq,0,8) and a.sjlx="+type+" and a.board_station='"+zhan.get(y)+"' and " + 
                            "a.arrival_station='"+zhan.get(i)+"' AND a.tjrq like'%"+time.get(t)+"'and c.dayy between'"+beginTime+"'and '"+endTime+"' order by a.tjrq) "; 
                     
                      String out = outpath+id.get(a)+ "–" +time.get(t) 
                        + "–" + zhan.get(y) + "–" + "–" + zhan.get(i) 
                        + ".txt"; 
                      System.out.println(sql); 
                    // DBTest.query(sql,out); 
                     
                } 
                } 
                } 
            } 
             
        } 
    } 
 
 
     
public static void main(String args[]) { 
         
         
        List<String> time=new ArrayList<String>(); 
        time.add("0500-0530"); 
        time.add("0530-0600"); 
        time.add("0600-0630"); 
        time.add("0630-0700"); 
        time.add("0700-0730"); 
        time.add("0730-0800"); 
        time.add("0800-0830"); 
        time.add("0830-0900"); 
        time.add("0900-0930"); 
        time.add("0930-1000"); 
        time.add("1000-1030"); 
        time.add("1030-1100"); 
        time.add("1100-1130"); 
        time.add("1130-1200"); 
        time.add("1200-1230"); 
        time.add("1230-1300"); 
        time.add("1300-1330"); 
        time.add("1330-1400"); 
        time.add("1400-1430"); 
        time.add("1430-1500"); 
        time.add("1500-1530"); 
        time.add("1530-1600"); 
        time.add("1600-1630"); 
        time.add("1630-1700"); 
        time.add("1700-1730"); 
        time.add("1730-1800"); 
        time.add("1800-1830"); 
        time.add("1830-1900"); 
        time.add("1900-1930"); 
        time.add("1930-2000"); 
        time.add("2000-2030"); 
        time.add("2030-2100"); 
        time.add("2100-2130"); 
        time.add("2130-2200"); 
         
        List<String> zhan=new ArrayList<String>(); 
        zhan.add("AOH"); 
        zhan.add("SHH"); 
        zhan.add("SXH"); 
        zhan.add("NEH"); 
        zhan.add("ASH"); 
        zhan.add("VQH"); 
        zhan.add("KNH"); 
        zhan.add("AIH"); 
        zhan.add("KAH"); 
        zhan.add("SZH"); 
        zhan.add("ITH"); 
        zhan.add("IFH"); 
        zhan.add("WXH"); 
        zhan.add("VCH"); 
        zhan.add("QYH"); 
        zhan.add("CZH"); 
        zhan.add("DYH"); 
        zhan.add("RUH"); 
        zhan.add("ZJH"); 
        zhan.add("BWH"); 
        zhan.add("XPH"); 
        zhan.add("NJH"); 
         
        List<String> kltjlx= new ArrayList<String>();   
        kltjlx.add("OD_半小時"); 
     
         
        List<String> TJZDZ= new ArrayList<String>(); 
        TJZDZ.add("南京-上海,"); 
        DBTest db= new DBTest(); 
        List<String> id = db.getid(kltjlx, TJZDZ);// kltjlx 客流統計類型   TJZDZ 統計字段值  
        String type="2";  // 半小時 
        String beginTime="20110331"; //開始時間 
        String endTime="20110406"; //結束時間 
         
    //  long start = System.currentTimeMillis(); 
                 
        Data data= new Data(); 
         
        Thread t1=new Thread(new GenerateData(id,time,zhan,data)); 
        Thread t2=new Thread(new GetData(id,time,zhan,data)); 
        Thread t3=new Thread(new GenerateTxt(id,time,zhan,type,beginTime,endTime)); 
        t3.run(); 
        if(!t3.isAlive()){ 
        t1.setPriority(Thread.MAX_PRIORITY);     
        t1.start(); 
         
        try { 
            t2.sleep(1000*60); 
        } catch (InterruptedException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
          t2.start(); 
          try { 
            t1.join(); 
             t2.join(); 
        } catch (InterruptedException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        }} 
////        long end = System.currentTimeMillis(); 
//      System.out.println("程序啟動時間: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(start))+"\n程序結束時間: " + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(end))+"\n程序讀取時間: " + new SimpleDateFormat("mm:ss").format(new Date(end – start))); 
         
     

作者“sailei1”
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *