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

📄 wdscyhsxxthread.java

📁 以前做的一个j2ee的项目
💻 JAVA
字号:
package gov.gdlt.ssgly.taxcore.taxblh.wdsc.yhswdsc;

import java.math.*;
import java.sql.*;
import java.util.*;

import gov.gdlt.ssgly.taxcore.comm.servicelocator.*;

public class WDSCyhsxxThread extends Thread {
    private int begin, end;
    private String threadName;
    private Vector vector;
    private Connection m_conn;
    private String STR_NSRNBM = "nsrnbm"; //纳税人内部码关键字
    private boolean isOver = false;
    public WDSCyhsxxThread() {

    }

    public WDSCyhsxxThread(String name, int begin, int end) {
        threadName = name;
        this.begin = begin;
        this.end = end;
    }

    public static void main(String[] args) {
        WDSCyhsxxThread yhsxxThread = new WDSCyhsxxThread();
    }

    public void run() {
        try {
            vector = this.getYhsxxByList(begin, end);
        } catch(Exception e) {
            System.out.println("得到一户式信息失败,线程名称:" + threadName + ", [" + String.valueOf(begin) + "," + String.valueOf(end) + "]");
        }
    }

    private Vector getYhsxxByList(int begin, int end) throws Exception {
        Vector vector = new Vector();
        Connection conn = null;
        try {
            conn = m_conn; //JDBCLocator.getInstance().getJDBCConnection();
            PreparedStatement preStmt = null;
            //Statement stmt = conn.createStatement();
            String sql =
                    " SELECT A.NSRNBM, A.ZB_DM, A.ZBZ, A.LR_SJ,A.LRRY_DM, A.SJLY, A.HH " +
                    " FROM T_ZBGL_ZBSJ A, T_WDSC_ETL_LST B " + //T_ZBGL_ETL_LST B " +
                    " WHERE A.NSRNBM = B.NSRNBM " + //and rownum<30000
                    " ORDER BY B.NSRNBM, A.ZB_DM, A.HH ";

            //成批取数据
            sql =
                    "SELECT A.NSRNBM, A.ZB_DM, A.ZBZ, A.LR_SJ,A.LRRY_DM, A.SJLY, A.HH " +
                    " FROM (SELECT ROWNUM BROWNUM,NSRNBM FROM db_ssgly.T_WDSC_ETL_LST ORDER BY NSRNBM) B, db_ssgly.T_ZBGL_ZBSJ A " + //--_ZBGL_ETL_LST B
                    " WHERE B.NSRNBM = A.NSRNBM AND B.BROWNUM >= ? " +
                    " AND B.BROWNUM <= ? " +
                    " AND A.ZB_DM IS NOT NULL AND HH>0 " +
                    " ORDER BY B.NSRNBM, A.ZB_DM, A.HH ";
            /*sql =
                    "SELECT A.NSRNBM, A.ZB_DM, A.ZBZ, A.LR_SJ,A.LRRY_DM, A.SJLY, A.HH " +
                    " FROM (SELECT ROWNUM BROWNUM,NSRNBM FROM db_ssgly.T_WDSC_ETL_LST ORDER BY NSRNBM) B, db_ssgly.T_ZBGL_ZBSJ A " + //--_ZBGL_ETL_LST B
                    " WHERE B.NSRNBM = A.NSRNBM AND B.BROWNUM >= " + String.valueOf(begin) +
                    " AND B.BROWNUM <= " + String.valueOf(end) +
                    " AND A.ZB_DM IS NOT NULL AND HH>0 " +
                    " ORDER BY B.NSRNBM, A.ZB_DM, A.HH ";
*/
            preStmt = conn.prepareStatement(sql);
            preStmt.setInt(1, begin);
            preStmt.setInt(2, end);
            System.out.println(sql);
            long t_s = Calendar.getInstance().getTimeInMillis();
            ResultSet rs = preStmt.executeQuery();
            //ResultSet rs = stmt.executeQuery(sql);
            long t_e = Calendar.getInstance().getTimeInMillis();
            System.out.println("取数耗时:"+String.valueOf(t_e - t_s));
            ////////////////////////////
            //数据库取数
            double yhsxxNsrnbm = 0, yhsxxHh = 0;//纳税人内部码,行号
            String yhsxxZbdm = "";//指标代码
            String yhsxxZbz = "";//指标值

            //临时变量
            Hashtable map = null;//存放纳税人 内部码 和 指标信息
            int hh = 0, iTemp = 0, iMsg = 0;//计数器
            double dNsrnbm = 0, oldNsrnbm = 0, dHh = 0;
            String sZb = "", sZbz = "", oldZb = "";//指标代码指标值
            Vector vZbMsg = null;//指标值存放
            BigDecimal bg = null;
            ////////////////////////////
            t_s = Calendar.getInstance().getTimeInMillis();

            long total = 0, t_ss = 0, t_ee = 0;

            while (rs.next()) {
                t_ss = Calendar.getInstance().getTimeInMillis();
                yhsxxNsrnbm = rs.getDouble("NSRNBM");
                yhsxxZbdm = rs.getString("ZB_DM");
                yhsxxZbz = rs.getString("ZBZ");
                yhsxxHh = rs.getDouble("HH");

                dNsrnbm = yhsxxNsrnbm;

                sZb = yhsxxZbdm;
                sZbz = yhsxxZbz;
                sZbz = ((sZbz == null) ? "" : sZbz.trim());
                if (dNsrnbm != oldNsrnbm) { //下一个纳税人一户式信息
                    if (map != null) {
                        map.put(oldZb, vZbMsg);
                        vector.add(map);
                    }
                    oldNsrnbm = dNsrnbm;
                    map = new Hashtable();
                    oldZb = sZb;
                    bg = new BigDecimal(dNsrnbm);
                    map.put(STR_NSRNBM, bg.toString());

                    vZbMsg = new Vector();
                    dHh = yhsxxHh;
                    iTemp = new Double(dHh).intValue() - 1;
                    for (hh = 0; hh < iTemp; hh++) {
                        vZbMsg.add("&nbsp;");
                    }
                    vZbMsg.add(sZbz.equals("") ? "&nbsp;" : sZbz);
                } else {
                    if (sZb.equals(oldZb)) { //同一个纳税人信息的同一个指标信息
                        dHh = yhsxxHh;
                        iTemp = new Double(dHh).intValue() - 1;
                        iMsg = vZbMsg.size();
                        for (hh = iMsg; hh < iTemp; hh++) {
                            vZbMsg.add("&nbsp;");
                        }
                        vZbMsg.add(sZbz.equals("") ? "&nbsp;" : sZbz);
                    } else { //同一个纳税人信息的不同指标信息
                        map.put(oldZb, vZbMsg);

                        vZbMsg = new Vector();
                        dHh = yhsxxHh;
                        iTemp = new Double(dHh).intValue() - 1;
                        for (hh = 0; hh < iTemp; hh++) {
                            vZbMsg.add("&nbsp;");
                        }
                        vZbMsg.add(sZbz.equals("") ? "&nbsp;" : sZbz);
                        oldZb = sZb;
                    }
                }
                t_ee = Calendar.getInstance().getTimeInMillis();
                total += t_ee - t_ss;
            }
            //增加最后数据到v中
            if (map != null) {
                map.put(sZb, vZbMsg);
                vector.add(map);
            }
            t_e = Calendar.getInstance().getTimeInMillis();
            System.out.println("加工数据耗时:"+String.valueOf(t_e - t_s) + ", 其中:" + String.valueOf(total));


            rs.close();
            preStmt.close();
            //stmt.close();
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("YCWDSC21013"); //获取纳税人指标信息(通过列表)失败e.getMessage());
        } finally {
            //conn.close();
            isOver = true;
        }
        return vector;
    }

    public int getBegin() {
        return begin;
    }

    public int getEnd() {
        return end;
    }

    public String getThreadName() {
        return threadName;
    }

    public Vector getVector() {
        return vector;
    }



    public boolean isIsOver() {
        return isOver;
    }

    public Connection getM_conn() {
        return m_conn;
    }

    public String getSTR_NSRNBM() {
        return STR_NSRNBM;
    }

    public void setBegin(int begin) {
        this.begin = begin;
    }

    public void setEnd(int end) {
        this.end = end;
    }

    public void setThreadName(String threadName) {
        this.threadName = threadName;
    }

    public void setVector(Vector vector) {
        this.vector = vector;
    }



    public void setIsOver(boolean isOver) {
        this.isOver = isOver;
    }

    public void setM_conn(Connection m_conn) {
        this.m_conn = m_conn;
    }

    public void setSTR_NSRNBM(String STR_NSRNBM) {
        this.STR_NSRNBM = STR_NSRNBM;
    }

    private void jbInit() throws Exception {
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -