📄 wdscyhsxxdao.java
字号:
package gov.gdlt.ssgly.taxcore.taxdao.wdsc;
//import gov.gdlt.ssgly.taxcore.comm.servicelocator.SqlMapLocator;
import java.math.*;
import java.sql.*;
import java.util.*;
import java.util.Date;
import gov.gdlt.ssgly.taxcore.comm.dao.*;
import gov.gdlt.ssgly.taxcore.comm.servicelocator.*;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.*;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.yhswdsc.*;
/**
* <p>Title: </p>
*
* <p>Description: 广东地税税收管理员工作平台</p>
*
* <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
*
* <p>Company: 广州地税</p>
* 一户式信息
* @author 张承华
* @version 1.0
*/
public class WDSCyhsxxDAO extends BaseDataAccessObject {
public WDSCyhsxxDAO() {
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//String STR_NSRNBM = "nsrnbm"; //纳税人内部码关键字
private double ZBSJ_XH;
private double NSRNBM;
private String ZB_DM;
private String ZBZ;
private Date LR_SJ;
private String LRRY_DM;
private String SJLY;
private double HH;
private String m_mbbm;
private String m_czybm;
private String m_swjg;
private String m_wdsm;
private Connection m_conn;
public void setZBSJ_XH(double n) {
ZBSJ_XH = n;
}
private double getZBSJ_XH() {
return ZBSJ_XH;
}
public void setNSRNBM(double n) {
NSRNBM = n;
}
public double getNSRNBM() {
return NSRNBM;
}
public void setZB_DM(String s) {
ZB_DM = s;
}
public String getZB_DM() {
return ZB_DM;
}
public void setZBZ(String s) {
ZBZ = s;
}
public String getZBZ() {
return ZBZ;
}
public void setLR_SJ(Date d) {
LR_SJ = d;
}
public Date getLR_SJ() {
return LR_SJ;
}
public void setLRRY_DM(String s) {
LRRY_DM = s;
}
public String getLRRY_DM() {
return LRRY_DM;
}
public void setSJLY(String s) {
SJLY = s;
}
public String getSJLY() {
return SJLY;
}
public void setHH(double n) {
HH = n;
}
public double getHH() {
return HH;
}
public List getYhsxxByAll() throws Exception {
List list = new Vector();
Connection conn = null;
try {
conn = JDBCLocator.getInstance().getJDBCConnection();
Statement stmt = conn.createStatement();
String sql = "SELECT NSRNBM, ZB_DM, ZBZ, LR_SJ, LRRY_DM, SJLY, HH " +
" FROM T_ZBGL_ZBSJ " +
" WHERE HH>0 ORDER BY NSRNBM, ZB_DM, HH ";
System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql);
WDSCyhsxxDAO yhsxx = null;
while (rs.next()) {
yhsxx = new WDSCyhsxxDAO();
yhsxx.setNSRNBM(rs.getDouble("NSRNBM"));
yhsxx.setZB_DM(rs.getString("ZB_DM"));
yhsxx.setZBZ(rs.getString("ZBZ"));
yhsxx.setLR_SJ(rs.getDate("LR_SJ"));
yhsxx.setLRRY_DM(rs.getString("LRRY_DM"));
yhsxx.setSJLY(rs.getString("SJLY"));
yhsxx.setHH(rs.getDouble("HH"));
list.add(yhsxx);
}
rs.close();
stmt.close();
} catch (Exception e) {
e.printStackTrace();
throw new Exception("YCWDSC21012"); //获取纳税人指标信息(所有)失败e.getMessage());
} finally {
conn.close();
}
return list;
}
//取出所有数据返回(不加工)
public List getYhsxxByList(int begin, int end) throws Exception {
Vector vector = new Vector();
boolean B = true;
List list = new Vector();//new ArrayList();
Connection conn = null;
try {
conn = JDBCLocator.getInstance().getJDBCConnection();
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 >= " +
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 ";
System.out.println(sql);
long t_s = Calendar.getInstance().getTimeInMillis();
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;
WDSCyhsxxDAO yhsxx = null;
while (rs.next()) {
t_ss = Calendar.getInstance().getTimeInMillis();
if (B) {
yhsxx = new WDSCyhsxxDAO();
yhsxx.setNSRNBM(rs.getDouble("NSRNBM"));
yhsxx.setZB_DM(rs.getString("ZB_DM"));
yhsxx.setZBZ(rs.getString("ZBZ"));
yhsxx.setHH(rs.getDouble("HH"));
list.add(yhsxx);
} else {
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(WDSCconstant.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;
}
if (!B) {
//增加最后数据到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();
stmt.close();
} catch (Exception e) {
e.printStackTrace();
throw new Exception("YCWDSC21013"); //获取纳税人指标信息(通过列表)失败e.getMessage());
} finally {
conn.close();
}
if (B) {
return list;
} else {
return vector;
}
}
//取出数据后直接加工,取一条加工一条
public Vector getYhsxxByList(int begin, int end, String nyr) throws Exception {
Vector vector = new Vector(), vThread = null;//new Vector();
Connection conn = null;
int part = 100, everyPart = 1, count = 0;
String threadName[] = null;
try {
try {
conn = JDBCLocator.getInstance().getJDBCConnection();
if (conn == null) conn = m_conn;
} catch (Exception e) {
conn = m_conn;
}
PreparedStatement preStmt = null;
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 ";
if (WDSCconstant.boolBatchProcess) {
try {
deleteSomeWd(conn, begin, end);
count = insertSomeWd(conn, begin, end, nyr);
} catch (SQLException e) {
System.out.println("删除或插入数据失败!" + e.getMessage());
throw new SQLException(e.getMessage());
}
} else {
if (WDSCconstant.boolMultiThread) {
sql = " SELECT count(*) FROM (SELECT ROWNUM BROWNUM,NSRNBM FROM db_ssgly.T_WDSC_ETL_LST ORDER BY NSRNBM) B " +
" WHERE B.BROWNUM >=? AND B.BROWNUM <=? ";
preStmt = conn.prepareStatement(sql);
preStmt.setInt(1, begin);
preStmt.setInt(2, end);
ResultSet rs = preStmt.executeQuery();
if (rs.next()) {
count = rs.getInt(1);
}
rs.close();
preStmt.close();
}
}
if (WDSCconstant.boolMultiThread) {
long thread_b = 0;
//通过线程取数,等分成part(10)
thread_b = Calendar.getInstance().getTimeInMillis();
//everyPart = (end - begin + 1) / part;
everyPart = (count) / part;
if ((count % part) > 0) everyPart = everyPart + 1;
//threadBeginEnd = new int[everyPart][2];
threadName = new String[everyPart];
WDSCyhsxxThread yhsxxThread = null; //new WDSCyhsxxThread[everyPart];
vThread = new Vector(everyPart);
for (int i = 0; i < everyPart; i++) {
threadName[i] = "getYhsxxThread" + String.valueOf(i);
yhsxxThread = new WDSCyhsxxThread();
yhsxxThread.setBegin(begin + part * i);
yhsxxThread.setM_conn(conn);
yhsxxThread.setEnd(begin + part * (i + 1) - 1);
yhsxxThread.setSTR_NSRNBM(WDSCconstant.NSRNBM);
yhsxxThread.setThreadName("getYhsxxThread" +
String.valueOf(i));
yhsxxThread.start();
vThread.add(yhsxxThread);
}
WDSCmonitorThread monitorThread = new WDSCmonitorThread(vThread);
vector = monitorThread.getVectorData();
long thread_e = Calendar.getInstance().getTimeInMillis();
System.out.println("get data by thread spend time:" +
String.valueOf(thread_e - thread_b) +
" vector size=" +
String.valueOf(vector.size()));
if (true) return vector;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -