jsp中呼叫儲存過程

zhouwf0726發表於2019-07-13



java.sql.Connection,
java.sql.Statement,
java.sql.ResultSet,
java.util.Properties,
java.util.*,
java.io.*,
weblogic.common.*,
java.lang.*;"
%>
....

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn =DriverManager.getConnection("jdbc:oracle:thin:@server","user","password");
call=conn.prepareCall("{ call p_test(?) }");
call.registerOutParameter(1, OracleTypes.CURSOR);
call.execute();
rs=(ResultSet)call.getObject(1);
ResultSetMetaData rmeta = rs.getMetaData();//
numColumns=rmeta.getColumnCount();
for(int i=1;i<=numColumns;i++)
{
if(i< numColumns)
out.print(rmeta.getColumnName(i)+" | ");
else
out.println(rmeta.getColumnName(i));
}

while(rs.next())
{
for(int i=1;i<=numColumns;i++)
{
out.print(" " + rs.getString(1)+ " |
");
}
}
}
catch(Exception e)
{
e.printStackTrace();
}

....
%>

/*
*

Title:地稅核心徵管系統--稅費管理


*

Copyright: (C) 2003-2004 地方稅務局,科技股份有限公司,版權所有.


*

Company: 科技股份有限公司


*/
package com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.processor;

import com.ttsoft.framework.processor.Processor;
import com.ttsoft.framework.util.VOPackage;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.web.WebConstantKey;
import com.ttsoft.framework.exception.BaseException;
import java.util.List;
import java.util.ArrayList;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.web.FdcsycxActionForm;
import java.sql.Connection;
import com.ttsoft.bjtax.sfgl.common.db.util.SfDBUtils;
import com.ttsoft.bjtax.sfgl.common.db.util.SfDBResource;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.util.FdcDao;
import com.ttsoft.framework.exception.ApplicationException;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.processor.helper.ProcessHelper;
import java.sql.CallableStatement;
import oracle.jdbc.OracleTypes;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.util.FdcsycxUtil;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.fdcsycx.processor.helper.GlebeInfo;
import com.ttsoft.bjtax.sfgl.sydj.fdcdj.util.CodeTableUtil;

/**
*

Title:地稅核心徵管系統--稅費管理


*

Description: 房地產稅源登記情況查詢 FdcsycxProcessor


* @author
* @version 1.0
*/
public class FdcsycxProcessor
implements Processor {

public FdcsycxProcessor() {
}
/**
* processor資料處理
* @param vo @see com.ttsoft.framework.util.VOPackage 資料操作引數
* @return Object 查詢結果
* @throws BaseException 丟擲應用異常
*/
public Object process(VOPackage vo) throws
BaseException {

if ( vo == null ) {
throw new NullPointerException();
}

switch (vo.getAction()) {

// 房地產稅源登記情況查詢
case WebConstantKey.QUERY_REG_STATE:
return doQueryDJQKCX(vo);

// 房地產稅源變更登記-政策性減免情況查詢
case WebConstantKey.QUERY_DERATE:
return doQueryJMQKCX(vo);

// 房地產稅源登記情況統計查詢
case WebConstantKey.QUERY_REG_STAT:
return doQueryDJQKTJCX(vo);

// 房地產稅源變更登記-政策性減免情況統計查詢
case WebConstantKey.QUERY_DERATE_STAT:
return doQueryJMQKTJCX(vo);

default:
throw new UnsupportedOperationException(
"Method process() not yet implemented.");
}
}
/**
* 執行房地產稅源登記情況查詢
* @param vo @see com.ttsoft.framework.util.VOPackage 資料操作引數
* @return Object 查詢結果
* @throws BaseException 丟擲應用異常
*/
public Object doQueryDJQKCX(VOPackage vo) throws
BaseException {

CallableStatement cstemt = null;
Fdcsycx fBean = (Fdcsycx) vo.getData();
Connection conn = null;
SfDBUtils sfDB = null;
ResultSet rs = null;
List dataList = new ArrayList();
// 總的記錄數
int row = 0;

// 每頁要顯示的記錄數
int pr = fBean.getPaginalRecord();

try {
conn = SfDBResource.getConnection();
cstemt = conn.prepareCall(
"{call SFDB.PRO_SFGL_FDCSYZCXDJMX(?,?,?,?,?,?,?,?,?,?,?)}");

// 納稅人的計算機程式碼
cstemt.setString(1, fBean.getJsjdm());
// 納稅人的納稅人名稱
cstemt.setString(2, fBean.getNsrmc());
// 查詢條件稅務機關組織機構程式碼
if ( !FdcsycxUtil.isNull(fBean.getZgsws()) ) {
cstemt.setString(3, fBean.getZgsws());
} else {
cstemt.setString(3, fBean.getQxfj());
}
// 查詢條件,表示登記或變更:1是登記,2是變更
cstemt.setString(4, fBean.getCxlx());
// 查詢條件,變更型別
cstemt.setString(5, fBean.getBglx());
// 查詢條件,查詢開始日期
cstemt.setString(6, fBean.getSydjsjdq());
// 查詢條件,查詢結束日期
cstemt.setString(7, fBean.getSydjsjdz());
// 查詢條件,稅源登記狀態
cstemt.setString(8, fBean.getSydjzt());
// 查詢條件,查詢開始的rownum
cstemt.setString(9, String.valueOf(fBean.getPageNum() * pr - (pr - 1)));
// 查詢條件,查詢結束的rownum
cstemt.setString(10, String.valueOf(fBean.getPageNum() * pr));

cstemt.registerOutParameter(11, OracleTypes.CURSOR);

//執行儲存過程
cstemt.execute();
//獲取查詢結果
rs = (ResultSet) cstemt.getObject(11);

while ( rs.next() ) {
Sydjqkcx s = new Sydjqkcx();

// 總記錄數
row = rs.getInt("ZJLS");
// 計算機程式碼
s.setJsjdm(rs.getString("JSJDM"));
// 區縣分局
s.setQxfj(rs.getString("QXFJ"));
// 納稅人名稱
s.setNsrmc(rs.getString("NSRMC"));
// 主管稅務所
s.setZgsws(rs.getString("ZGSWS"));
// 應稅房產原值總額
s.setYsfcyzze(rs.getString("FCYZ11"));
// 稅務機關估值總額
s.setSwjggjze(rs.getString("FCGZ12"));
// 法定免稅房產原值總額
s.setFdmsfcyzze(rs.getString("FCYZ21"));
// 年應納房產稅(城市房地產稅)稅額
s.setNynfcsze(rs.getString("NYNFCS"));
// 年應納城鎮土地使用稅稅額
s.setNyncztdsysse(rs.getString("NYNTDS"));
// 本年度應納房產稅(城市房地產稅)稅額
s.setBndynfcsse(rs.getString("BNDFCS"));
// 本年度應納城鎮土地使用稅稅額
s.setBndyncztdsysse(rs.getString("BNDTDS"));

// 一級土地應稅面積
s.setTdysmj1(rs.getString("JG11"));
// 二級土地應稅面積
s.setTdysmj2(rs.getString("JG12"));
// 三級土地應稅面積
s.setTdysmj3(rs.getString("JG13"));
// 四級土地應稅面積
s.setTdysmj4(rs.getString("JG14"));
// 五級土地應稅面積
s.setTdysmj5(rs.getString("JG15"));
// 六級土地應稅面積
s.setTdysmj6(rs.getString("JG16"));

// 一級土地法定減免面積
s.setTdfdjmmj1(rs.getString("JG21"));
// 二級土地法定減免面積
s.setTdfdjmmj2(rs.getString("JG22"));
// 三級土地法定減免面積
s.setTdfdjmmj3(rs.getString("JG23"));
// 四級土地法定減免面積
s.setTdfdjmmj4(rs.getString("JG24"));
// 五級土地法定減免面積
s.setTdfdjmmj5(rs.getString("JG25"));
// 六級土地法定減免面積
s.setTdfdjmmj6(rs.getString("JG26"));

// 一級土地面積合計
s.setTdhjmj1(rs.getString("JG31"));
// 二級土地面積合計
s.setTdhjmj2(rs.getString("JG32"));
// 三級土地面積合計
s.setTdhjmj3(rs.getString("JG33"));
// 四級土地面積合計
s.setTdhjmj4(rs.getString("JG34"));
// 五級土地面積合計
s.setTdhjmj5(rs.getString("JG35"));
// 六級土地面積合計
s.setTdhjmj6(rs.getString("JG36"));

// 計算應稅土地面積合計
s.setTdysmjhj(
ProcessHelper.countTdmj(
s.getTdysmj1()
, s.getTdysmj2()
, s.getTdysmj3()
, s.getTdysmj4()
, s.getTdysmj5()
, s.getTdysmj6()));

// 計演算法定減免土地面結合計
s.setTdjmmjhj(
ProcessHelper.countTdmj(
s.getTdfdjmmj1()
, s.getTdfdjmmj2()
, s.getTdfdjmmj3()
, s.getTdfdjmmj4()
, s.getTdfdjmmj5()
, s.getTdfdjmmj6()));

// 計算土地面積總計
s.setTdmjhj(
ProcessHelper.countTdmj(s.getTdysmjhj(), s.getTdjmmjhj()));

// 計算房產原值總額
s.setFcyzze(
ProcessHelper.countTdmj(s.getYsfcyzze(), s.getFdmsfcyzze()));

dataList.add(s);
}
}
catch (SQLException ex) {
ex.printStackTrace();
throw new ApplicationException("房地產稅源登記情況查詢錯誤!"
+ ex.getMessage());
}
catch (Exception ex) {
throw new ApplicationException("房地產稅源登記情況查詢錯誤!");
}
finally {
SfDBResource.freeConnection(conn);
try {
if (cstemt != null) {
cstemt.close();
}
if (rs != null) {
rs.close();
}
}
catch (Exception ex) {}
}

FdcscxBO fb = new FdcscxBO();
fb.setFdccxList(dataList);
fb.setRow(row);

return fb;
}
/**
* 房地產稅源變更登記-政策性減免情況查詢
* @param vo @see com.ttsoft.framework.util.VOPackage 資料操作引數
* @return Object 查詢結果
* @throws BaseException 丟擲應用異常
*/
public Object doQueryJMQKCX(VOPackage vo) throws
BaseException {

Fdcsycx fBean = (Fdcsycx) vo.getData();
Connection conn = null;
SfDBUtils sfDB = null;
// 查詢結果集
List dataList = new ArrayList();
// 總的記錄數
int row = 0;
try {
conn = SfDBResource.getConnection();
// 獲取資料操作
FdcDao da = new FdcDao(conn);
ResultSet countRs = da.querySQL(ProcessHelper.getJmqkcxSql(fBean));
if (countRs.next()) {
row = countRs.getInt("COUNTROW");
ResultSet rs = da.querySQL(
ProcessHelper.getJmqkcxSql(
fBean
, fBean.getPageNum()));

while (rs.next()) {
Zcxjmqkcx s = new Zcxjmqkcx();

s.setJsjdm(rs.getString("JSJDM"));
s.setNsrmc(rs.getString("NSRMC"));
s.setQxfj(rs.getString("QXFJ"));
s.setZgsws(rs.getString("SWS"));
// 政策性減免房產原值
s.setJmyz(FdcsycxUtil.nullToZero(rs.getString("FCYZ")));
// 政策性減免房產稅務機關估值
s.setJmgz(FdcsycxUtil.nullToZero(rs.getString("FCGZ")));

// 一級土地法定減免面積 ~ 六級土地法定減免面積
s.setTdjmmj1(FdcsycxUtil.nullToZero(rs.getString("TDONE")));
s.setTdjmmj2(FdcsycxUtil.nullToZero(rs.getString("TDTWO")));
s.setTdjmmj3(FdcsycxUtil.nullToZero(rs.getString("TDTHREE")));
s.setTdjmmj4(FdcsycxUtil.nullToZero(rs.getString("TDFOUR")));
s.setTdjmmj5(FdcsycxUtil.nullToZero(rs.getString("TDFIVE")));
s.setTdjmmj6(FdcsycxUtil.nullToZero(rs.getString("TDSIX")));

// 計算減免土地面積合計
s.setTotalize(
ProcessHelper.countTdmj(
s.getTdjmmj1()
, s.getTdjmmj2()
, s.getTdjmmj3()
, s.getTdjmmj4()
, s.getTdjmmj5()
, s.getTdjmmj6()));

dataList.add(s);
}
}
}
catch (BaseException ex) {
ex.printStackTrace();
throw new ApplicationException("房地產稅源登記情況查詢錯誤!");
}
catch (SQLException sqle) {
sqle.printStackTrace();
throw new ApplicationException("房地產稅源登記情況查詢錯誤!");
}
finally {
SfDBResource.freeConnection(conn);
}

FdcscxBO fb = new FdcscxBO();
fb.setFdccxList(dataList);
fb.setRow(row);

return fb;
}
/**
* 房地產稅源登記情況統計查詢
* @param vo @see com.ttsoft.framework.util.VOPackage 資料操作引數
* @return Object 查詢結果
* @throws BaseException 丟擲應用異常
*/
public Object doQueryDJQKTJCX(VOPackage vo) throws
BaseException {

Fdcsycx fBean = (Fdcsycx) vo.getData();
Connection conn = null;
SfDBUtils sfDB = null;
Sydjqkcx fdcQuery = ProcessHelper.initSydjqkcx(new Sydjqkcx());

try {
conn = SfDBResource.getConnection();
//獲取資料操作
FdcDao da = new FdcDao(conn);

ResultSet zhsRs = da.querySQL(
ProcessHelper.getDjqktjcxZhs(fBean));

if ( zhsRs.next() ) {
// 總戶數
fdcQuery.setZhs(zhsRs.getString("ZHS"));
}

// 當總戶數為零時,不進行後續處理
if ( !fdcQuery.getZhs().equals("0") ) {
// 土地面積列表
List glebeList = new ArrayList();
ResultSet glebeRs = da.querySQL(ProcessHelper.getDjqktjcxTdmj(fBean));

// 取得土地面積
while ( glebeRs.next() ) {
GlebeInfo gi = new GlebeInfo();

gi.setGlebeValue(glebeRs.getString("VAL"));
gi.setGlebeGrade(glebeRs.getString("SZ"));
gi.setGlebeType(glebeRs.getString("BG"));

glebeList.add(gi);
}

// 取得土地面積
for ( int i = 0, n = glebeList.size(); i < n; i++ ) {
GlebeInfo gi = (GlebeInfo)glebeList.get(i);

if ( gi.getGlebeGrade().equals("120010") ) {
// 房產(應稅/減免)原值
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setYsfcyzze(gi.getGlebeValue());
} else {
fdcQuery.setFdmsfcyzze(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("120020") ) {
// 稅務機關估值總額
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setSwjggjze(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("150010") ) {
// 一級(應稅/減免)土地面積
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setTdysmj1(gi.getGlebeValue());
} else {
fdcQuery.setTdfdjmmj1(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("150020") ) {
// 二級(應稅/減免)土地面積
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setTdysmj2(gi.getGlebeValue());
} else {
fdcQuery.setTdfdjmmj2(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("150030") ) {
// 三級(應稅/減免)土地面積
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setTdysmj3(gi.getGlebeValue());
} else {
fdcQuery.setTdfdjmmj3(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("150040") ) {
// 四級(應稅/減免)土地面積
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setTdysmj4(gi.getGlebeValue());
} else {
fdcQuery.setTdfdjmmj4(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("150050") ) {
// 五級(應稅/減免)土地面積
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setTdysmj5(gi.getGlebeValue());
} else {
fdcQuery.setTdfdjmmj5(gi.getGlebeValue());
}
} else if ( gi.getGlebeGrade().equals("150060") ) {
// 六級(應稅/減免)土地面積
if ( gi.getGlebeType().equals("1") ) {
fdcQuery.setTdysmj6(gi.getGlebeValue());
} else {
fdcQuery.setTdfdjmmj6(gi.getGlebeValue());
}
}
}

// 應納房產稅稅額
ResultSet fcsseRs = da.querySQL(
ProcessHelper.getFcsse(fBean));

if ( fcsseRs.next() ) {

// 年應納房產稅(城市房地產稅)稅額
fdcQuery.setNynfcsze(fcsseRs.getString("NYNFCSE"));
// 年應納城鎮土地使用稅稅額
fdcQuery.setNyncztdsysse(fcsseRs.getString("NYNTDSE"));
// 本年度應納房產稅(城市房地產稅)稅額
fdcQuery.setBndynfcsse(fcsseRs.getString("BNYNFCSE"));
// 本年度應納城鎮土地使用稅稅額
fdcQuery.setBndyncztdsysse(fcsseRs.getString("BNYNTDSE"));
}
}
}
catch (BaseException ex) {
ex.printStackTrace();
throw new ApplicationException("房地產稅源登記情況統計查詢!");
}
catch (SQLException sqle) {
sqle.printStackTrace();
throw new ApplicationException("房地產稅源登記情況統計查詢!");
}
finally {
SfDBResource.freeConnection(conn);
}

// 計算一級 ~ 六級土地面積小計
fdcQuery.setTdhjmj1(
ProcessHelper.countTdmj(fdcQuery.getTdysmj1(), fdcQuery.getTdfdjmmj1()));
fdcQuery.setTdhjmj2(
ProcessHelper.countTdmj(fdcQuery.getTdysmj2(), fdcQuery.getTdfdjmmj2()));
fdcQuery.setTdhjmj3(
ProcessHelper.countTdmj(fdcQuery.getTdysmj3(), fdcQuery.getTdfdjmmj3()));
fdcQuery.setTdhjmj4(
ProcessHelper.countTdmj(fdcQuery.getTdysmj4(), fdcQuery.getTdfdjmmj4()));
fdcQuery.setTdhjmj5(
ProcessHelper.countTdmj(fdcQuery.getTdysmj5(), fdcQuery.getTdfdjmmj5()));
fdcQuery.setTdhjmj6(
ProcessHelper.countTdmj(fdcQuery.getTdysmj6(), fdcQuery.getTdfdjmmj6()));

// 計算應稅土地面積合計
fdcQuery.setTdysmjhj(
ProcessHelper.countTdmj(
fdcQuery.getTdysmj1()
, fdcQuery.getTdysmj2()
, fdcQuery.getTdysmj3()
, fdcQuery.getTdysmj4()
, fdcQuery.getTdysmj5()
, fdcQuery.getTdysmj6()));

// 計演算法定減免土地面結合計
fdcQuery.setTdjmmjhj(
ProcessHelper.countTdmj(
fdcQuery.getTdfdjmmj1()
, fdcQuery.getTdfdjmmj2()
, fdcQuery.getTdfdjmmj3()
, fdcQuery.getTdfdjmmj4()
, fdcQuery.getTdfdjmmj5()
, fdcQuery.getTdfdjmmj6()));

// 計算土地面積總計
fdcQuery.setTdmjhj(
ProcessHelper.countTdmj(fdcQuery.getTdysmjhj(), fdcQuery.getTdjmmjhj()));

// 計算房產原值總額
fdcQuery.setFcyzze(
ProcessHelper.countTdmj(fdcQuery.getYsfcyzze(), fdcQuery.getFdmsfcyzze()));

fdcQuery.setQxfj(fBean.getQxfj());
fdcQuery.setZgsws(fBean.getZgsws());

return fdcQuery;
}
/**
* 房地產稅源變更登記-政策性減免情況統計查詢
* @param vo @see com.ttsoft.framework.util.VOPackage 資料操作引數
* @return Object 查詢結果
* @throws BaseException 丟擲應用異常
*/
public Object doQueryJMQKTJCX(VOPackage vo) throws
BaseException {

CallableStatement cstemt = null;
Fdcsycx fBean = (Fdcsycx) vo.getData();
Connection conn = null;
SfDBUtils sfDB = null;
ResultSet rs = null;
Fdcjmbgqktjcx fdcQuery = new Fdcjmbgqktjcx();

try {
conn = SfDBResource.getConnection();
cstemt = conn.prepareCall(
"{call SFDB.PRO_SFGL_FDCSYZCXJMTJ(?,?,?,?,?)}");

// 稅務機關程式碼
cstemt.setString(1, fBean.getTaxCode());
// 變更開始日期
cstemt.setString(2, fBean.getSydjsjdq());
// 變更結束日期
cstemt.setString(3, fBean.getSydjsjdz());
// 變更型別
cstemt.setString(4, fBean.getBglx());

cstemt.registerOutParameter(5, OracleTypes.CURSOR);

//執行儲存過程
cstemt.execute();
//獲取查詢結果
rs = (ResultSet) cstemt.getObject(5);

if (rs.next()) {
fdcQuery.setZhs(FdcsycxUtil.nullToZero(rs.getString("ZHS")));
fdcQuery.setTdjmmj1(FdcsycxUtil.nullToZero(rs.getString("ZCJMTD1")));
fdcQuery.setTdjmmj2(FdcsycxUtil.nullToZero(rs.getString("ZCJMTD2")));
fdcQuery.setTdjmmj3(FdcsycxUtil.nullToZero(rs.getString("ZCJMTD3")));
fdcQuery.setTdjmmj4(FdcsycxUtil.nullToZero(rs.getString("ZCJMTD4")));
fdcQuery.setTdjmmj5(FdcsycxUtil.nullToZero(rs.getString("ZCJMTD5")));
fdcQuery.setTdjmmj6(FdcsycxUtil.nullToZero(rs.getString("ZCJMTD6")));
fdcQuery.setJmyz(FdcsycxUtil.nullToZero(rs.getString("ZCJMFCYZ")));
fdcQuery.setJmgz(FdcsycxUtil.nullToZero(rs.getString("ZCJMFCGZ")));
fdcQuery.setTotalize(FdcsycxUtil.nullToZero(rs.getString("ZCJMTDHJ")));
}
}
catch (SQLException ex) {
throw new ApplicationException("房地產稅源變更登記-政策性減免情況統計查詢"
+ ex.getMessage());
}
catch (Exception ex) {
throw new ApplicationException("房地產稅源變更登記-政策性減免情況統計查詢");
}
finally {
SfDBResource.freeConnection(conn);
try {
if (cstemt != null) {
cstemt.close();
}
if (rs != null) {
rs.close();
}
}
catch (Exception ex) {}
}

fdcQuery.setQxfj(fBean.getQxfj());
fdcQuery.setZgsws(fBean.getZgsws());

return fdcQuery;
}
}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/756652/viewspace-242146/,如需轉載,請註明出處,否則將追究法律責任。

相關文章