一.env.bat
set JRE_HOME=C:/j2sdk1.4.1_02
set ORACLE_HOME=D:/oracle/ora92
set DB_USR=usr_KT02cs
set DB_PASS=usr_KT02cs
rem @echo off
rem 测试设定
set BATCH_DIR=C:/v2r1/batch
set JRE_HOME=C:/Program Files/Java/j2re1.4.1_02
set ORACLE_HOME=D:/oracle/ora92
set DB_USR=usr_ap02cs
set DB_PASS=usr_ap02cs
set JAR_DIR=%BATCH_DIR%/bin
set CLASSPATH=%ORACLE_HOME%/jdbc/lib/classes12.jar
set CLASSPATH=%CLASSPATH%;%JAR_DIR%/gecccommon.jar
set CLASSPATH=%CLASSPATH%;%JAR_DIR%/log4j-1.2.8.jar
set CLASSPATH=%CLASSPATH%;%JAR_DIR%/batch.jar
set PATH=%PATH%;%JRE_HOME%/bin
set PATH=%PATH%;%ORACLE_HOME%/bin
rem set JAVA_OPTION=%JAVA_OPTION% -Dlog4j.configuration=file:/%BATCH_DIR%/logs/log4j.properties
@echo on
java %JAVA_OPTION% -cp "%CLASSPATH%" %MAIN_CLASS% jdbc:oracle:oci:@DV %DB_USR% %DB_PASS%
二.JBT01.bat
@rem
@rem $Id: JBT01001.bat,v 1.2
@rem
set MAIN_CLASS=com.gecc.batch.JBT01
call env.bat
pause
三.Java程序(JBT01.java)
package com.gecc.batch;
import java.lang.*;
import java.util.*;
import java.sql.*;
import com.gecc.common.*;
import com.gecc.common.db.*;
import com.gecc.common.pattern.JFBT01001;
/**
* HP 电话银行账号<p>
*/
public class JBT01 extends JBT01 implements R100, Common_ConstIF{
public static void main(String args[])
throws Exception{
execute(new JGBT01001(), args);
}
public void execute(RSYGS900001 dbio, Map map)throws Exception{
logger.info("JGBT01001#execute start");
// 营业店清单取得
Vector vec = getMiseNo(dbio);
int counter = 0;
// 营业店分循环処理
for (int i = 0; i < vec.size(); i++){
String sts = "9"; // 无未処理数据
String miseNo = (String)vec.elementAt(i);
// 未処理数据検索
int cnt = getCountHPTEL(dbio, miseNo);
// 未処理标志設定
if (cnt > 0) sts = "1"; // 未処理数据有
// 作業状況表更新
if (updateSGYJK(dbio, miseNo, sts)){
counter++;
}
}
commit(dbio);
// 日志输出
logger.info( "ID:JBT01, 名称:HP电话银行账号状況, 更新件数:" + counter + ", 正常終了");
logger.info("JGBT01001#execute end");
}
/**
* 店番号取得処理
* 1000番以前的店番取得。
* @return Vector 店番清单
*/
private Vector getMiseNo(RSYGS900001 dbio)throws GECCException, SQLException{
Vector vec = new Vector();
ResultSet rs = null;
try{
// 処理区分
dbio.setSyori(IO_SHORI_DB_SELASC); // 複数件検索 dbio.set
// 逻辑DB名
dbio.setLogicalDb("店");
// 取得列名
dbio.setDbTbl("店番","");
// WHERE文
String where = "店番 < 1000";
dbio.setWhereSql(where);
// SQL実行
dbio.execute();
if (IO_RET_OK.equals(dbio.getRetcd())) {
rs = dbio.getResult();
while(rs.next()){
vec.add(String.valueOf(rs.getInt("店番")));
}
}
return vec;
}catch(Exception e){
throw new GECCSysException(e.toString());
}finally{
if (rs != null) {
try {
rs.getStatement().close();
} catch (Exception e) {}
}
}
}
/**
* HPTEL口座登録変更表未処理数据検索
* @param String miseNo 店番
* @return int 数据件数
*/
private int getCountHPTEL(RSYGS900001 dbio, String miseNo)throws GECCException, SQLException{
int i = 0;
ResultSet rs = null;
// DBIO初期化
initDBIO(dbio);
try{
// 処理区分
dbio.setSyori(IO_SHORI_DB_SELASC); // 複数件検索
// 逻辑DB名
dbio.setLogicalDb("HPTEL口座登録変更");
// 取得列名
dbio.setDbTbl("COUNT(*)","");
// WHERE文
String where = "送信店番 = " + miseNo + " AND 打印区分 = '0'";
dbio.setWhereSql(where);
// SQL実行
dbio.execute();
rs = dbio.getResult();
if (rs.next()){
i = rs.getInt("COUNT(*)");
}
return i;
}catch(Exception e){
e.printStackTrace();
throw new GECCSysException(e.toString());
}finally{
if (rs != null) {
try {
rs.getStatement().close();
} catch (Exception e) {}
}
}
}
/**
* 作业状況表店番记录更新。
* @param String miseNO 店番
* param String sts 未処理标记
*/
private boolean updateSGYJK(RSYGS900001 dbio, String miseNo, String sts)throws GECCException, SQLException{
//DBIOを初期化
initDBIO(dbio);
try{
// 処理区分
dbio.setSyori(IO_SHORI_DB_UPD); // DB更新
// 逻辑DB名
dbio.setLogicalDb("作业状況");
// 主键項目
dbio.setKeyList("店番", miseNo);
// 取得列名
dbio.setDbTbl("HP",sts);
// SQL実行
dbio.execute();
if (IO_RET_OK == dbio.getRetcd()){
return true;
}else{
return false;
}
}catch(Exception e){
dbio.debug();
throw new GECCSysException(e.toString());
}finally{
dbio.closeResulSet();
}
}
}