📄 wdscyhsxxthread.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(" ");
}
vZbMsg.add(sZbz.equals("") ? " " : 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(" ");
}
vZbMsg.add(sZbz.equals("") ? " " : 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(" ");
}
vZbMsg.add(sZbz.equals("") ? " " : 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 + -