📄 wdscyhswdscblh.java
字号:
String nsrnbm = "";
try {
List list = null;
Hashtable map = null;
WDSCyhsxxDAO yhsxx = new WDSCyhsxxDAO(), tempYhsxx = null;
//此种方法是将取出所有信息然后处理一户式信息
type = type.toLowerCase();
if (type.equals("all")) {
//将生成所有一户式文档屏蔽 //del by zch 2005-11-01
//list = yhsxx.getYhsxxByAll();
} else if (type.equals("list")) {
//2005-11-15优化直接返回数据集
//list = yhsxx.getYhsxxByList(begin, end);
if (WDSCconstant.boolMultiThread) {
yhsxx.setM_mbbm(MBBM);
yhsxx.setM_swjg("%");
yhsxx.setM_wdsm("一户式文档");
yhsxx.setM_czybm("000000");
return yhsxx.getYhsxxByList(begin, end,
this.CurrYearMonthDay);
} else {
return yhsxx.getYhsxxByList(begin, end, null);
}
} else if (type.equals("single")) {
HashMap nsrMap = yhsxx.nsrbm2Nsrnbm(nsrbm);
nsrnbm = (String) nsrMap.get(WDSCconstant.NSRNBM);
if (WDSCconstant.boolBatchProcess) {
yhsxx.setM_mbbm(MBBM);
yhsxx.setM_swjg("%");
yhsxx.setM_wdsm("一户式文档");
yhsxx.setM_czybm("000000");
}
list = yhsxx.getYhsxxBySingle(nsrnbm, this.CurrYearMonthDay);
} else {
throw new Exception("生成一户式文档中指定了未知的操作类型,操作类型为:" + type);
}
//long t_s = Calendar.getInstance().getTimeInMillis();
return processYhsMsg(list);
} catch (Exception e) {
//e.printStackTrace();
throw new Exception(e.getMessage());
}
}
//将文档模板生成文件,然后读取字符流,返回一个字符串缓冲区
//USED
public StringBuffer outputWdMb2TempFile(WDSCwdmbDAO wdmb) throws
FileNotFoundException, SQLException, Exception {
//二进制流的一户式文档模板保存为 文件
java.sql.Blob mbnr = null;
//java.sql.Blob javaBlob = null;
StringBuffer sBuffer = null;
try {
if (wdmb != null) {
//System.out.println("**********************mbnr.length=" + String.valueOf(((java.sql.Blob)wdmb.getMB_NR()).length()));
mbnr = (java.sql.Blob) wdmb.getMB_NR();
//System.out.println("**********************mbnr.length=" + String.valueOf(mbnr.length()));
/*//javaBlob = (java.sql.Blob)wdmb.getMB_NR();
if (javaBlob instanceof oracle.sql.BLOB){
mbnr = (oracle.sql.BLOB)wdmb.getMB_NR();
System.out.println("********************oracle.sql.BLOB");
} else if(javaBlob instanceof weblogic.jdbc.vendor.oracle.OracleThinBlob){
mbnr = (weblogic.jdbc.vendor.oracle.OracleThinBlob)wdmb.getMB_NR();
System.out.println("********************weblogic.jdbc.vendor.oracle.OracleThinBlob");
}
javaBlob.getBinaryStream();*/
if (mbnr != null) {
StringWriter sw = new StringWriter();
BufferedInputStream in = new BufferedInputStream(mbnr.
getBinaryStream());
int c;
while ((c = in.read()) != -1) {
sw.write(c);
}
in.close();
sBuffer = sw.getBuffer();
sw.flush();
sw.close();
}
/*//old version below
BufferedOutputStream out = new BufferedOutputStream(new
FileOutputStream(TempModelFileName));
BufferedInputStream in = new BufferedInputStream(mbnr.getBinaryStream());
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
in.close();
out.close();
//通过取 文件得到字符流进行处理,替换
FileReader fReader = new FileReader(TempModelFileName);
BufferedReader inReader = new BufferedReader(fReader);
char cData[] = new char[1024];
sBuffer = new StringBuffer();
while ((inReader.read(cData)) != -1) {
sBuffer.append(cData);
}
inReader.close();
fReader.close();
*/
}
} catch (Exception e) {
e.printStackTrace();
throw new TaxBaseSystemException(e.getMessage());
}
return sBuffer;
}
//得到当前时期的:年+月+日
//USED
private String getCurrNYR() throws Exception {
try {
CurrYearMonthDay = makeCurrNYR();
CurrYearMonthDayHMS = makeCurrNYRSFM();
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
return CurrYearMonthDay;
}
//return: FORMAT : YYYYMMDDhhmmss
//USED
public String makeCurrNYR() throws Exception {
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.setTime(new Date());
String year = null, month = null, day = null;
try {
cal.add(Calendar.DATE, -1);
year = String.valueOf(cal.get(cal.YEAR));
month = String.valueOf(cal.get(cal.MONTH) + 1);
if (Integer.parseInt(month) <= 9) {
month = "0" + month;
}
day = String.valueOf(cal.get(cal.DATE));
if (Integer.parseInt(day) <= 9) {
day = "0" + day;
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
return year + month + day;
}
//年月日时分秒
//return format YYYY-MM-DD HH-MI-SS
public String makeCurrNYRSFM() throws Exception {
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.setTime(new Date());
String year = null, month = null, day = null, hour = "", minute = "",
second = "";
int h, m, s;
try {
year = String.valueOf(cal.get(cal.YEAR));
month = String.valueOf(cal.get(cal.MONTH) + 1);
if (Integer.parseInt(month) <= 9) {
month = "0" + month;
}
day = String.valueOf(cal.get(cal.DATE));
if (Integer.parseInt(day) <= 9) {
day = "0" + day;
}
h = cal.get(cal.HOUR_OF_DAY);
m = cal.get(cal.MINUTE);
s = cal.get(cal.SECOND);
hour = String.valueOf(h);
minute = String.valueOf(m);
second = String.valueOf(s);
if (h <= 9) {
hour = "0" + hour;
}
if (m <= 9) {
minute = "0" + minute;
}
if (s <= 9) {
second = "0" + second;
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e.getMessage());
}
return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" +
second;
}
//将buffer中的loop标记置换msg中的内容,不实现loop嵌套
//return:size()>=2 ,first=StringBuffer, second=vvNewTempZb
//public StringBuffer replaceLoopString(StringBuffer buffer, Vector vZb) throws
public List replaceLoopStringByKey(String leftKey, String rightKey, StringBuffer buffer, Vector vZb) throws
Exception {
List list = new ArrayList();
StringBuffer loopBuffer = new StringBuffer(),
loopResultBuffer = new StringBuffer(),
loopTempBuffer = null;
Vector vvNewTempZb = new Vector();//存放求和结果构造成的指标
if (vZb == null) {
return null;
}
String loopString = "";
Vector vCurrZb = null, vTemp = null;
int loopLeftPos = 0, loopRightPos = 0, loop = 0, iCurrZb = 0;
int iLenResult = 0;
int lP = 0, ivTemp = 0;
String repStr = "", zb = "";
try {
WDSCwdmbzbDAO wdzb = null, tempmbzb = null;//存放循环部分指标
while ((loopLeftPos = buffer.indexOf(leftKey, loopLeftPos)) >= 0) {
while ((loopRightPos = buffer.indexOf(rightKey, loopLeftPos)) >=
0) {
loopString = buffer.toString().substring(loopLeftPos,
loopRightPos);
loopString = loopString.substring(leftKey.length(),
loopRightPos - loopLeftPos);
loopResultBuffer.delete(0, loopResultBuffer.length());
loopBuffer.delete(0, loopBuffer.length());
loopBuffer.append(loopString);
//System.out.println("getLoopZb(loopBuffer) begin");
//得到循环部分中的指标
vTemp = getLoopZb(loopBuffer);
//得到:1.最大循环数,即行数 2. 循环指标 3.系统指标(求和)
List listLoopZbMsg = getLoopZbMsg(vTemp, vZb);
Integer integer = (Integer)listLoopZbMsg.get(0);//注该函数不允许返回空,并且size()至少为3
loop = integer.intValue();
vTemp = (Vector)listLoopZbMsg.get(1);
ivTemp = vTemp.size();
vvNewTempZb.add((Vector)listLoopZbMsg.get(2));
//开始替换
loopTempBuffer = new StringBuffer();
for (int i = 0; i < loop; i++) {
loopTempBuffer.delete(0, loopTempBuffer.length());
loopTempBuffer.append(loopBuffer);
if (ivTemp <= 0) {
break;
}
for (int j = 0; j < ivTemp; j++) {
//modify by zch 2005-11-22
//增加对指标的求和(纵向)
//求和:在需要求和的指标前有sum:标记,文档指标应为{sum:xxx},其中xxx为指标
tempmbzb = (WDSCwdmbzbDAO)vTemp.get(j);
zb = tempmbzb.getZB_DM();
//System.out.println(tempmbzb.getOPER_KEY() + "**********" + zb);
//System.out.println(loopTempBuffer);
//查找指标,并更换
while ((lP = loopTempBuffer.indexOf(WDSCconstant.flagLeft + tempmbzb.getOPER_KEY() + zb +
WDSCconstant.flagRight, lP)) >= 0) {
if (zb.indexOf(WDSCconstant.sysflag) >= 0) {
//当指标为系统参数时进行替换
//@todo 查找指标字段为 zb.substring(zb.indexOf(sysflag) + sysflag.length() + flagLeft.length())
repStr = "当指标为系统参数时进行替换(loop中带有sys:标记)";
loopTempBuffer.replace(lP,
lP +
(WDSCconstant.flagLeft.length() +
WDSCconstant.flagRight.length()) +
zb.length(), repStr);
//处理完毕后,置换下一个指标
lP = lP + repStr.length();
lP++;
if (lP > loopTempBuffer.length()) {
break;
}
} else {
vCurrZb = tempmbzb.getZB_NR();
if (vCurrZb != null) {
if (vCurrZb.size() > i) {
repStr = (String) vCurrZb.get(i);
if (repStr == null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -