You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

260 lines
16 KiB
Java

package center.data;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.base.FileStreamParser;
import com.base.FileWorker;
import center.data.format.OverFareDataRecord;
/**
* 과오납정보<BR>
* @author jckim
* @since JDK 1.4.1
* @version 0.1, 2007-09-28 초기 작성
*/
public class ApplyOverFare extends FileWorker
{
private String sPrcsName = "ApplyOverFare";
public static final int REC_LEN = 280; // 레코드 길이
public static final int LOG_COUNT = 50000; // log count
private ResultSet rs = null;
private PreparedStatement psSls = null;
private PreparedStatement psIns = null;
private PreparedStatement psUpd = null;
/**
* 실행
*/
@Override
public void execute() throws Exception
{
try
{
logger.logInfo(sPrcsName + " is started");
logger.logInfo( ".... file name : " + file.getName() );
initialize(); // 초기화
String sTemp = null;
while((sTemp = inFile.readBytes(REC_LEN)) != null && sTemp.length() > 2){
nReadCount++;
if( sTemp.charAt(10) == 'D'){
// 데이터 반영
processRecord(new OverFareDataRecord(sTemp));
}else
continue;
}
logger.logInfo(".... File Read Count : "+ nReadCount );
logger.logInfo(".... DB Insert Count : "+ nInsertCount);
logger.logInfo(".... DB Update Count : "+ nUpdateCount);
logger.logInfo(sPrcsName + " is ended");
}
catch(Exception ex)
{
try{ conn.rollback();}catch(Exception e){}
logger.logFail( sPrcsName + " fail");
logger.logTrace(ex);
throw ex;
}finally{
finalize();
}
}
/**
* 초기화
* @throws SQLException
*/
public void initialize() throws SQLException{
try
{
nReadCount = 0;
nInsertCount = 0;
nUpdateCount = 0;
inFile = new FileStreamParser();
inFile.openReadFile(file);
String query;
query = "SELECT COUNT(*) "
+ " FROM OVERFARE_INFO "
+ " WHERE WORKER_ID = ? "
+ " AND FARE_OFFICE_ID = ? "
+ " AND BOOTH_ID = ? "
+ " AND YEAR = ? "
+ " AND MONTH = ? "
+ " AND DAY = ? "
+ " AND WORK_STT_TIME = ? "
+ " AND WORK_END_TIME = ? "
+ " AND OVERFARE_SEQNO = ? ";
psSls = conn.prepareStatement(query);
query = "INSERT INTO OVERFARE_INFO( "
+ " WORKER_ID, FARE_OFFICE_ID, BOOTH_ID, YEAR, MONTH, DAY, WORK_STT_TIME, WORK_END_TIME, "
+ " OVERFARE_SEQNO, OWNER, CAR_NO, RESIDENT_NO, RESIDENT_DATE, OVERFARE_TIMES, "
+ " OVERFARE_KBN, OVERFARE_AMOUNT, REMARKS, REFUND_KBN, REFUND_WORKER_ID, "
+ " REFUND_FARE_OFFICE_ID, REFUND_BOOTH_ID, REFUND_YEAR, REFUND_MONTH, "
+ " REFUND_DAY, REFUND_TIMES, REFUND_OWNER, REFUND_COMMUMI, PROCESS_KBN, "
+ " DELETE_YN, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER "
+ " ) "
+ "VALUES (?,?,?,?,?, ?,?,?,?,?, ?,?,TO_DATE(?,'yyyymmdd'),?,?, ?,?,?,?,?, ?,?,?,?,?, ?,?,?,?,SYSDATE,'COMM',SYSDATE,'COMM') ";
psIns = conn.prepareStatement(query);
query = "UPDATE OVERFARE_INFO "
+ " SET OWNER = ? "
+ " , CAR_NO = ? "
+ " , RESIDENT_NO = ? "
+ " , RESIDENT_DATE = TO_DATE(?,'yyyymmdd') "
+ " , OVERFARE_TIMES = ? "
+ " , OVERFARE_KBN = ? "
+ " , OVERFARE_AMOUNT = ? "
+ " , REMARKS = ? "
+ " , REFUND_KBN = ? "
+ " , REFUND_WORKER_ID = ? "
+ " , REFUND_FARE_OFFICE_ID = ? "
+ " , REFUND_BOOTH_ID = ? "
+ " , REFUND_YEAR = ? "
+ " , REFUND_MONTH = ? "
+ " , REFUND_DAY = ? "
+ " , REFUND_TIMES = ? "
+ " , REFUND_OWNER = ? "
+ " , REFUND_COMMUMI = ? "
+ " , PROCESS_KBN = ? "
+ " , DELETE_YN = ? "
+ " , UPDATE_DATE = SYSDATE "
+ " , UPDATER = 'COMM' "
+ " WHERE WORKER_ID = ? "
+ " AND FARE_OFFICE_ID = ? "
+ " AND BOOTH_ID = ? "
+ " AND YEAR = ? "
+ " AND MONTH = ? "
+ " AND DAY = ? "
+ " AND WORK_STT_TIME = ? "
+ " AND WORK_END_TIME = ? "
+ " AND OVERFARE_SEQNO = ? ";
psUpd = conn.prepareStatement(query);
}
catch(Exception ex)
{
logger.logFail( sPrcsName + " initialize fail");
logger.logTrace(ex);
}
}
/**
* finalize
*/
@Override
public void finalize() {
try{ if(psSls != null) psSls.close(); }catch(Exception ignore){}
try{ if(psIns != null) psIns.close(); }catch(Exception ignore){}
try{ if(psUpd != null) psUpd.close(); }catch(Exception ignore){}
try{ if(inFile != null) inFile.closeFile(); }catch(Exception ignore){}
}
/**
* 데이터 반영
* @param Id
* @throws SQLException
*/
private void processRecord(OverFareDataRecord record) throws SQLException , Exception {
int iParam = 1;
try{
psSls.setString(iParam++, record.getItem( OverFareDataRecord.WORKER_ID ).trim()); // '징수원ID'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.BOOTH_ID ).trim()); // '차로'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.YEAR ).trim()); // '년'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.MONTH ).trim()); // '월'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.DAY ).trim()); // '일'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.WORK_STT_TIME ).trim()); // '근무시작시간'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.WORK_END_TIME ).trim()); // '근무종료시간'
psSls.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_SEQNO ).trim()); // '일련번호'
rs = psSls.executeQuery();
rs.next();
if (rs.getInt(1) == 0) {
iParam = 1;
psIns.setString(iParam++, record.getItem( OverFareDataRecord.WORKER_ID ).trim()); // '징수원ID'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.BOOTH_ID ).trim()); // '차로'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.YEAR ).trim()); // '년'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.MONTH ).trim()); // '월'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.DAY ).trim()); // '일'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.WORK_STT_TIME ).trim()); // '근무시작시간'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.WORK_END_TIME ).trim()); // '근무종료시간'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_SEQNO ).trim()); // '일련번호'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.OWNER ).trim()); // '소유주'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.CARS_NO ).trim()); // '차량번호'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.RESIDENT_NO ).trim()); // '주민/법인번호'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.RESIDENT_DATE ).trim()); // '등록일자'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_TIMES ).trim()); // '통행시간'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_KBN ).trim()); // '과오납구분'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_AMOUNT ).trim()); // '과오납금'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REMARKS ).trim()); // '비고'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_KBN ).trim()); // '환급구분'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_WORKER_ID ).trim()); // '환급징수원ID'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_FARE_OFFICE_ID ).trim()); // '환급요금소'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_BOOTH_ID ).trim()); // '환급차로'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_YEAR ).trim()); // '환급년도'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_MONTH ).trim()); // '환급월'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_DAY ).trim()); // '환급일'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_TIMES ).trim()); // '환급시간'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_OWNER ).trim()); // '환급수령자'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_COMMUMI ).trim()); // '환급연락처'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.PROCESS_KBN ).trim()); // '집계처리구분'
psIns.setString(iParam++, record.getItem( OverFareDataRecord.DELETE_YN ).trim()); // '삭제구분'
psIns.executeUpdate();
nInsertCount++;
} else if (rs.getInt(1) > 0) {
iParam = 1;
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.OWNER ).trim()); // '소유주'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.CARS_NO ).trim()); // '차량번호'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.RESIDENT_NO ).trim()); // '주민/법인번호'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.RESIDENT_DATE ).trim()); // '등록일자'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_TIMES ).trim()); // '통행시간'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_KBN ).trim()); // '과오납구분'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_AMOUNT ).trim()); // '과오납금'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REMARKS ).trim()); // '비고'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_KBN ).trim()); // '환급구분'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_WORKER_ID ).trim()); // '환급징수원ID'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_FARE_OFFICE_ID ).trim()); // '환급요금소'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_BOOTH_ID ).trim()); // '환급차로'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_YEAR ).trim()); // '환급년도'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_MONTH ).trim()); // '환급월'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_DAY ).trim()); // '환급일'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_TIMES ).trim()); // '환급시간'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_OWNER ).trim()); // '환급수령자'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.REFUND_COMMUMI ).trim()); // '환급연락처'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.PROCESS_KBN ).trim()); // '집계처리구분'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.DELETE_YN ).trim()); // '삭제구분'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.WORKER_ID ).trim()); // '징수원ID'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.BOOTH_ID ).trim()); // '차로'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.YEAR ).trim()); // '년'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.MONTH ).trim()); // '월'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.DAY ).trim()); // '일'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.WORK_STT_TIME ).trim()); // '근무시작시간'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.WORK_END_TIME ).trim()); // '근무종료시간'
psUpd.setString(iParam++, record.getItem( OverFareDataRecord.OVERFARE_SEQNO ).trim()); // '일련번호'
psUpd.executeUpdate();
nUpdateCount++;
}
}catch(SQLException sqle){
logger.logFail( "[" + record.getRecord() +"]" );
logger.logTrace(sqle);
throw sqle; }finally{
try{ if(rs != null) rs.close(); }catch(Exception ignore){}
}
}
}