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.

156 lines
5.8 KiB
Java

package center.data;
import java.io.File;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.base.FileStreamParser;
import com.base.FileWorker;
import com.exception.AppException;
import com.exception.IllegalRecordException;
import com.resources.data.Info;
import center.dao.VanTransDAO;
/**
* 면제차량정보 파일 생성<BR>
* @author jhban
* @since JDK 1.4.1
* @version 0.1, 2015-05-13 초기 작성
*/
public class MakeExemptCar extends FileWorker {
public static final int LOG_COUNT = 10000; // log count
public MakeExemptCar(){
}
/**
* 면제차량정보 생성 실행
*/
@Override
public void execute(){
String sFileName = null;
String sPrcsName = "MakeExemptCar";
VanTransDAO commDAO; // 파일 전송 이력 클래스 변수
try{
logger.logInfo(sPrcsName + " is started");
String sPrcsOption = System.getProperty("option");
if (sPrcsOption == null || sPrcsOption.equals("")) {
sBaseDate = TODAY;
}else{
sBaseDate = sPrcsOption;
}
sFileName = "FC_" + sBaseDate.substring(2) +".txt";
logger.logInfo( ".... file name : " + sFileName );
conn = getConnection();
conn.setAutoCommit(false);
//commonDAO = new TunnelTransDAO(conn);
outFile = new FileStreamParser();
outFile.openWriteFile(new File(freeDir, sFileName));
/**
* auth : redkaras
* history : 2016.04.22 파일생성이 후 집계서버 배포를 위한 처리 추가
* **/
if( writeDataRecord() ){
commDAO = new VanTransDAO(conn);
String sCreater;
if(sPrcsName.length() <= 10 )
sCreater = sPrcsName;
else sCreater = sPrcsName.substring(0, 10);
Info transInfo = null;
transInfo = new Info();
transInfo.setString("FILE_KIND_ID" , "1G" );
transInfo.setString("FORMAT_DATE" , TODAY );
transInfo.setString("FARE_OFFICE_ID" , "TM");
transInfo.setString("FILE_TRANS_KBN" , "R" );
transInfo.setString("FILE_TRANS_YN" , "Y" );
transInfo.setString("DATA_PROCESS_KBN", "9" );
transInfo.setString("DIR_NAME" , freeDir );
transInfo.setString("FILE_NAME" , sFileName.trim() );
transInfo.setString("CREATER" , sCreater);
//파일코드를 통한 순번 획득
long nSeqNo = commDAO.getNextSeq("1G");
transInfo.setLong ("DATA_SEQNO" , nSeqNo );
//전송처리해야할 파일에 대한 정보저장
commDAO.insertFileTransInfo( transInfo );
//1호 요금소 전송을 위한 정보등록
transInfo.setString("FARE_OFFICE_ID" , "01");
commDAO.insertOfficeTransInfo( transInfo );
//3호 요금소 전송을 위한 정보등록
transInfo.setString("FARE_OFFICE_ID" , "03");
commDAO.insertOfficeTransInfo( transInfo );
conn.commit();
}
logger.logInfo("----------------------------------" );
logger.logInfo(".... DB Select Count : "+ nSelectCount);
logger.logInfo(".... File Write Count : "+ nWriteCount );
logger.logInfo(sPrcsName + " is ended");
}catch(Exception e){
try{ if(conn != null){ conn.rollback(); }}catch(Exception ignore){}
logger.logFail(sPrcsName + " 프로세스 실패");
logger.logTrace(e);
}finally{
try{ if(outFile != null){ outFile.closeFile(); }}catch(Exception ignore){}
try{ if(conn != null){ conn.close(); }}catch(Exception ignore){}
}
}
/**
* Data Format 작성
* @return
* @throws SQLException
* @throws IllegalRecordException
* @throws AppException
*/
private boolean writeDataRecord() throws SQLException, IllegalRecordException, AppException {
PreparedStatement stmt = null;
ResultSet rs = null;
try{
/**
* auth : redkaras
* history : 2016.09.05 파일생성시 면제차량구분(1:장애인)을 제외한 데이터만 생성하기 위하여 "EXEMPT_KBN <> '1'" 조건 추가
* **/
StringBuffer sbQuery = new StringBuffer();
sbQuery.append(" SELECT DISTINCT CAR_NO, ")
.append(" EXEMPT_KBN ")
.append(" FROM EXEMPT_CARS_INFO ")
.append(" WHERE TO_CHAR(ENFORCE_DATE, 'YYYYMMDD') <= TO_CHAR(sysdate, 'YYYYMMDD') ")
.append(" AND TO_CHAR(END_DATE, 'YYYYMMDD') >= TO_CHAR(sysdate, 'YYYYMMDD') ")
.append(" AND EXEMPT_KBN <> '1' ");
stmt = conn.prepareStatement(sbQuery.toString());
rs = stmt.executeQuery();
while(rs.next()){
nSelectCount++;
String str = rs.getString("CAR_NO");
String kbn = rs.getString("EXEMPT_KBN");
outFile.writeData(str.trim() + "," + kbn.trim());
outFile.writeData("\n");
nWriteCount++;
if( nWriteCount%LOG_COUNT == 0 ) {
logger.logInfo(".... File Write Count : "+ nWriteCount);
}
}
logger.logInfo(".... File Write Count : "+ nWriteCount);
}finally{
if(stmt != null){ try{ stmt.close(); }catch(Exception ignore){} }
if(rs != null){ try{ rs.close(); }catch(Exception ignore){} }
}
return true;
}
}