📄 wdscyhswdscblh.java
字号:
//Source file: D:\\OLLA\\DS_WORK\\gzds-uml\\gov\\gdlt\\taxcore\\taxblh\\ssgly\\wdsc\\yhswdsc\\WDSCyhswdscBLH.java
package gov.gdlt.ssgly.taxcore.taxblh.wdsc.yhswdsc;
import java.io.*;
import java.math.*;
import java.sql.*;
import java.text.*;
import java.util.*;
import java.util.Date;
import com.ibatis.common.resources.*;
import com.ibatis.sqlmap.client.*;
import gov.gdlt.ssgly.taxcore.comm.blh.*;
import gov.gdlt.ssgly.taxcore.comm.event.*;
import gov.gdlt.ssgly.taxcore.comm.exception.*;
import gov.gdlt.ssgly.taxcore.comm.log.*;
import gov.gdlt.ssgly.taxcore.comm.servicelocator.*;
import gov.gdlt.ssgly.taxcore.comm.util.*;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.*;
import gov.gdlt.ssgly.taxcore.taxblh.wdsc.zipwdsc.*;
import gov.gdlt.ssgly.taxcore.taxdao.wdsc.*;
import gov.gdlt.ssgly.taxcore.taxevent.htdl.*;
import gov.gdlt.ssgly.taxcore.taxevent.wdsc.*;
import oracle.sql.*;
/**
* <p>Title: </p>
*
* <p>Description: 广东地税税收管理员工作平台</p>
*
* <p>Copyright: Copyright (c) 2005 广东省地方税务局,广州市地方税务局</p>
*
* <p>Company: 广州地税</p>
* 一户式信息
* @author 张承华
* @version 1.0
*/
/**
* 一户式文档生成控制类
*/
public class WDSCyhswdscBLH extends BaseBizLogicHandler {
private int SKIP = 1000; //一户式文档生成成批取数的频度
private String MBBM = "0001"; //模板编码
private int m_begin = -1, m_end = -1;//生成一户式文档时取数范围
private WDSCconstant constant = null;
private String CurrYearMonthDay = ""; //当前年月日
private String CurrYearMonthDayHMS = ""; //当前年月日时分秒
LogWritter log = new LogWritter();
public WDSCyhswdscBLH() throws Exception {
constant = new WDSCconstant();
}
//USED
//参数说明:
//type:分为single, list两类
//swjg:模板的税务机关
//nsrbm:一户式文档对应的纳税人编码(非内部码),只有当type=single时有效
//skip:成批生成一户式文档资料时的取数频度,默认1000,只有当type=list时有效
public String makeYhsWd(String type, String swjg, String nsrbm, int skip) throws
SQLException, FileNotFoundException,
Exception {
try {
if (skip > 0) {
SKIP = skip;
}
return makeYhsWd(type, swjg, nsrbm, MBBM);
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
//USED
//参数说明:
//type:分为single, list两类
//swjg:模板的税务机关
//nsrbm:一户式文档对应的纳税人编码(非内部码),只有当type=single时有效
//skip:成批生成一户式文档资料时的取数频度,默认1000,只有当type=list时有效
//mbbm:模板编码,指定的模板编码,默认为0001
public String makeYhsWd(String type, String swjg, String nsrbm, int skip,
String mbbm) throws SQLException,
FileNotFoundException,
Exception {
try {
if (skip > 0) {
SKIP = skip;
}
if (!mbbm.equals("")) {
MBBM = mbbm;
}
return makeYhsWd(type, swjg, nsrbm, MBBM);
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
//USED
public String makeYhsWd(String type, String swjg, String nsrbm) throws
SQLException, FileNotFoundException,
Exception {
try {
return makeYhsWd(type, swjg, nsrbm, MBBM);
} catch (Exception e) {
throw new Exception(e.getMessage());
}
}
//参数说明:
//type:生成类型:all, list, single
//swjg:税务机关
//nsrbm:纳税人编码\u2014\u2014在type 为 single时有效
//mbbm:模板编码
//mblb:模板类别
//USED
public String makeYhsWd(String type, String swjg, String nsrbm, String mbbm) throws
SQLException, FileNotFoundException,
Exception {
String yhsWdName = "", nsrnbm = "", mblb = "", tempStr = "", wdNr = "";
StringBuffer sBuffer = null, sInfo = new StringBuffer();
Connection conn = null;
int totalNsr = 0, iLen = 0;
WDSCwdDAO wd = new WDSCwdDAO();
WDSCwdmbDAO wdmb = new WDSCwdmbDAO();
WDSCwdmbzbDAO mbzb = null;
try {
//得到一户式信息
if (mbbm == null || mbbm.equals("")) {
mbbm = "";
}
if (swjg == null || swjg.equals("")) {
swjg = "%";
}
long t_begin = 0, t_run = 0, t_end = 0, t_total = 0;
//更新当前的年月日字符串,以便产生当前的一户式文档名称
getCurrNYR();
//取得文档模板并将其存入临时文件中
//ADD BY ZCH 2005-10-26 添加模板类别,故模板有多个
t_run = Calendar.getInstance().getTimeInMillis();
Vector vWdmb = wdmb.getWdMbByBm(mbbm, swjg); //取得文档模板
if (vWdmb == null || vWdmb.size() < 1) {
tempStr = "没有提取到文档模板!文档模板编码:" + mbbm + ", 税务机关" + swjg;
log.sysError(tempStr);
throw new Exception(tempStr);
}
HashMap hWdmb = new HashMap();
HashMap hBufferMap = new HashMap();
for (int i = 0; i < vWdmb.size(); i++) {
WDSCwdmbDAO wdmbTemp = (WDSCwdmbDAO) vWdmb.get(i);
hWdmb.put(wdmbTemp.getMB_LB(), wdmbTemp);
sBuffer = outputWdMb2TempFile(wdmbTemp); //将模板存入到临时内存
sBuffer = new StringBuffer(StringUtils.isoToGBK(sBuffer.
toString()));
hBufferMap.put(wdmbTemp.getMB_LB(), sBuffer);
}
t_end = Calendar.getInstance().getTimeInMillis();
tempStr = "文档模板提取完毕,模板数:" + String.valueOf(vWdmb.size()) +
",耗时:" + String.valueOf(t_end - t_run);
log.sysInfo(tempStr);
System.out.println(tempStr);
//定义对应模板的指标信息
Vector vZbMsg = null, vNewZbMsg = null, vt = null;
Hashtable hashTable = null;
//处理一户式用户的指标信息到文档
tempStr = "开始生成一户式文档....";
log.sysInfo(tempStr);
int begin = 0, end = 0;
Vector vYhsMsg = null, vTemp = null;
conn = JDBCLocator.getInstance().getJDBCConnection();
wd.setM_conn(conn);
wd.setM_strWdscsj(this.CurrYearMonthDayHMS);
wd.setM_swjg("%");
begin = 1;
if (m_begin > 0) begin = m_begin;
end = begin + SKIP - 1;
if (m_end >= m_begin) { // && (m_end < end)) {
if (m_end <= end) {
end = m_end;
} else {
end = end;
}
} else {
if (m_end <= 0) {
end = end;
} else {
return "参入参数有误!(end < begin)";
}
}
t_begin = Calendar.getInstance().getTimeInMillis();
while ((vYhsMsg = getYhsMsg(type, nsrbm, begin, end)).size() > 0) {
//begin = begin + SKIP;
begin = end + 1;
end = begin + SKIP - 1;
if (m_end > 0) {
if (end < m_end) { // && (m_end < end)) {
end = end;
} else {
end = m_end;
}
}
iLen = vYhsMsg.size();
for (int i = 0; i < iLen; i++) {
totalNsr++;
try {
hashTable = (Hashtable) vYhsMsg.get(i);
if (hashTable.containsKey(WDSCconstant.NSRNBM)) {
nsrnbm = (String) hashTable.get(WDSCconstant.NSRNBM);
} else {
continue;
}
//得到该一户式文档的文档类别 user_wdlx
if (hashTable.containsKey(WDSCconstant.USER_WDLX.toUpperCase())) {
vTemp = (Vector) hashTable.get(WDSCconstant.USER_WDLX.
toUpperCase());
if (vTemp != null) {
mblb = (String) vTemp.get(0);
} else {
mblb = "1";
}
} else if (hashTable.containsKey(WDSCconstant.USER_WDLX.toLowerCase())) {
vTemp = (Vector) hashTable.get(WDSCconstant.USER_WDLX.
toLowerCase());
if (vTemp != null) {
mblb = (String) vTemp.get(0);
} else {
mblb = "1";
}
} else {
mblb = "1";
}
mblb = ((mblb == null) ? "" : mblb.trim());
wdmb = new WDSCwdmbDAO();
wdmb.setMB_DM(mbbm);
wdmb.setMB_LB(mblb);
wdmb.setMB_SWJG(swjg);
wdmb.setMB_NR_BUFFER((StringBuffer) hBufferMap.get(mblb));
vZbMsg = (Vector) ((WDSCwdmbDAO) hWdmb.get(mblb)).
getMB_ZB_MSG();
//将指标值与指标对应,并放到模板中
vNewZbMsg = new Vector();
int ivZbMsg = vZbMsg.size();
for (int j = 0; j < ivZbMsg; j++) {
mbzb = (WDSCwdmbzbDAO) vZbMsg.get(j);
if (hashTable.containsKey(mbzb.getZB_DM())) {
vt = (Vector) hashTable.get(mbzb.
getZB_DM());
if (vt == null) {
mbzb.setZB_NR(new Vector());
} else {
mbzb.setZB_NR(vt);
}
} else {
//否则会把上一个纳税人的指标写下
mbzb.setZB_NR(new Vector());
}
vNewZbMsg.add(mbzb);
}
if ((vNewZbMsg == null) || (vNewZbMsg.size() <= 0)) {
log.sysInfo("纳税人内部码:" + nsrnbm + " 没有指标信息!");
continue; //如果没有指标信息,则不生成文档
}
wdmb.setMB_ZB_MSG(vNewZbMsg);
//wdmb中包括一个纳税人的指标信息,文档模板的模板内容
//生成文档到临时文件
try {
wdNr = StringUtils.gbkToISO(makeWd(wdmb));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -