1. 程式人生 > >java匯出功能後臺程式碼

java匯出功能後臺程式碼

  Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        CallAnalysisReportVo vo = new CallAnalysisReportVo();
        try {
            ResultSetMetaData rsmd;//接收元資料
            conn = jdbcTemplate.getDataSource().getConnection();
            //設定sql引數,date1,date2是傳過來的引數,沒必要是兩個,也可以是其他數量
            ps = conn.prepareStatement("EXEC dbo.P_mbr_get_customer_call_rpt ?,?,?");
            if(date1 != null){
                ps.setObject(1,new java.sql.Date(date1.getTime()));
            }else{
                ps.setObject(1,null);
            }
            if(date2 != null){
                ps.setObject(2,new java.sql.Date(date2.getTime()));
            }else{
                ps.setObject(2,null);
            }
            ps.setObject(3,callType);
            //獲取結果集
            rs = ps.executeQuery();
            List<Map<String,Object>> list = New.list();//接收資料
            List<String> headers = New.list();//接收表頭資料
            int columnCount = 0,i;
            Map<String,Object> map;//用於接收單行資料
            String key;//鍵
            Object objV;//值
            int index = 0;//標記遍歷行索引
            //設定固定表頭,CCID1,CCID2這兩個要分別寫在欄位的最前面和最後面,不然會產生意外,
            String[] staticHeaders = {"CCID1","來電分組","來電類別","本年累計","時間段前累計","時間段累計","CCID2"};
            while (rs.next()){
                rsmd = rs.getMetaData();
                if(columnCount == 0){
                    columnCount = rsmd.getColumnCount();
                }
                map = New.lMap();//分配空間
                index++;
                for (i = 1;i <= columnCount;i++){//按列數遍歷
                    if(i <= staticHeaders.length){
                        key = staticHeaders[i-1];
                    }else{
                        key = rsmd.getColumnName(i);//key
                    }
                    if(index == 1){//第一次,新增表頭屬性
                        headers.add(key);
                    }
                    objV = JdbcUtils.getResultSetValue(rs,i);
                    map.put(key,objV);
                }
                list.add(map);//新增一行
            }
            vo.setDatas(list);//將資料新增至報表物件
            vo.setHeaders(headers);//將表頭新增至報表物件
            return vo;
        }catch (SQLException e){
            throw new RabbitJdbcException(String.format("JdbcTemplate.doGetCallAnalysisReport執行查詢時出現異常:s%.",e.getMessage()));
        }finally {
            JdbcUtils.free(conn,ps,rs);
        }

此程式碼請不要盜用和用於商業用途及違法行為,一經發現將嚴肅處理!!!!!!!!!!!!