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
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){}
|
|
}
|
|
}
|
|
}
|