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.
310 lines
15 KiB
Java
310 lines
15 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.CpnDisuseDataRecord;
|
|
import center.data.format.FixTicketDataRecord;
|
|
|
|
/**
|
|
* 쿠폰폐기정보<BR>
|
|
* @author jckim
|
|
* @since JDK 1.4.1
|
|
* @version 0.1, 2007-09-28 초기 작성
|
|
*/
|
|
public class ApplyCpnDisuse extends FileWorker
|
|
{
|
|
|
|
private String sPrcsName = "ApplyCpnDisuse";
|
|
public static final int REC_LEN = 200; // 레코드 길이
|
|
public static final int LOG_COUNT = 50000; // log count
|
|
|
|
private ResultSet rs = null;
|
|
private PreparedStatement psSls = null;
|
|
private PreparedStatement psIns1 = null;
|
|
private PreparedStatement psIns2 = null;
|
|
private PreparedStatement psUpd1 = null;
|
|
private PreparedStatement psUpd2 = null;
|
|
private PreparedStatement psUpd3 = null;
|
|
private PreparedStatement psUpd4 = null;
|
|
private PreparedStatement psUpd5 = 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 CpnDisuseDataRecord(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;
|
|
nDeleteCount = 0;
|
|
|
|
inFile = new FileStreamParser();
|
|
inFile.openReadFile(file);
|
|
|
|
String query;
|
|
|
|
query = "SELECT COUNT(*) "
|
|
+ " FROM DAY_FIX_STOCK_INFO "
|
|
+ " WHERE FARE_OFFICE_ID = ? "
|
|
+ " AND YEAR = ? "
|
|
+ " AND MONTH = ? "
|
|
+ " AND DAY = ? ";
|
|
|
|
psSls = conn.prepareStatement(query);
|
|
|
|
query = "INSERT INTO DAY_FIX_STOCK_INFO( "
|
|
+ " FARE_OFFICE_ID, YEAR, MONTH, DAY, RETURN_COUPON_COUNT, "
|
|
+ " K_RET_COUPON_CNT, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER "
|
|
+ " ) "
|
|
+ "VALUES (?,?,?,?,?,?,SYSDATE,'COMM',SYSDATE,'COMM') ";
|
|
|
|
psIns1 = conn.prepareStatement(query);
|
|
|
|
query = "INSERT INTO COUPON_DISUSE_INFO( "
|
|
+ " FARE_OFFICE_ID, DISUSE_DATE, DISUSE_SEQNO, COUPON_KBN, FARE_YEAR, "
|
|
+ " FARE_MONTH, FARE_DAY, COUPON_COUNT, DISUSE_PERSON, DISUSE_COUNT, "
|
|
+ " K_COUPON_CNT, K_DISUSE_CNT, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER "
|
|
+ " ) "
|
|
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,SYSDATE,'COMM',SYSDATE,'COMM') ";
|
|
|
|
psIns2 = conn.prepareStatement(query);
|
|
|
|
query = "UPDATE FARE_ADJUST_INFO "
|
|
+ " SET COUPON_DISUSE_YN = '1' "
|
|
+ " , UPDATE_DATE = SYSDATE "
|
|
+ " , UPDATER = 'COMM' "
|
|
+ " WHERE FARE_OFFICE_ID = ? "
|
|
+ " AND YEAR = ? "
|
|
+ " AND MONTH = ? "
|
|
+ " AND DAY = ? ";
|
|
|
|
psUpd1 = conn.prepareStatement(query);
|
|
|
|
query = "UPDATE DAY_FIX_STOCK_INFO "
|
|
+ " SET RETURN_COUPON_COUNT = RETURN_COUPON_COUNT + ?"
|
|
+ " , K_RET_COUPON_CNT = K_RET_COUPON_CNT + ? "
|
|
+ " , UPDATE_DATE = SYSDATE "
|
|
+ " , UPDATER = 'COMM' "
|
|
+ " WHERE FARE_OFFICE_ID = ? "
|
|
+ " AND YEAR = ? "
|
|
+ " AND MONTH = ? "
|
|
+ " AND DAY = ? ";
|
|
|
|
psUpd2 = conn.prepareStatement(query);
|
|
|
|
query = "UPDATE FARE_ADJUST_INFO "
|
|
+ " SET COUPON_DISUSE_YN = '1' "
|
|
+ " , UPDATE_DATE = SYSDATE "
|
|
+ " , UPDATER = 'COMM' "
|
|
+ " WHERE FARE_OFFICE_ID = ? "
|
|
+ " AND YEAR = ? "
|
|
+ " AND MONTH = ? ";
|
|
|
|
psUpd3 = conn.prepareStatement(query);
|
|
|
|
query = "UPDATE OVERCOUPON_HEAD_INFO "
|
|
+ " SET COUPON_DISUSE_COUNT = OVERCOUPON_COUNT - COUPON_RETURN_COUNT "
|
|
+ " , K_COUPON_DISUSE_CNT = K_OVERCOUPON_CNT - K_COUPON_RET_CNT "
|
|
+ " , UPDATE_DATE = SYSDATE "
|
|
+ " , UPDATER = 'COMM' "
|
|
+ " WHERE FARE_OFFICE_ID = ? "
|
|
+ " AND YEAR = ? "
|
|
+ " AND MONTH = ? ";
|
|
|
|
psUpd4 = conn.prepareStatement(query);
|
|
|
|
query = "UPDATE OVERCOUPON_DETAIL_INFO "
|
|
+ " SET OVER_KBN = '3' "
|
|
+ " , RETURN_DATE = ? "
|
|
+ " , RETURN_PERSON = ? "
|
|
+ " , UPDATE_DATE = SYSDATE "
|
|
+ " , UPDATER = 'COMM' "
|
|
+ " WHERE FARE_OFFICE_ID = ? "
|
|
+ " AND YEAR = ? "
|
|
+ " AND MONTH = ? "
|
|
+ " AND OVERFARE_KBN = '1' "
|
|
+ " AND DELETE_YN = '0' ";
|
|
|
|
psUpd5 = 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(psIns1 != null) psIns1.close(); }catch(Exception ignore){}
|
|
try{ if(psIns2 != null) psIns2.close(); }catch(Exception ignore){}
|
|
try{ if(psUpd1 != null) psUpd1.close(); }catch(Exception ignore){}
|
|
try{ if(psUpd2 != null) psUpd2.close(); }catch(Exception ignore){}
|
|
try{ if(psUpd3 != null) psUpd3.close(); }catch(Exception ignore){}
|
|
try{ if(psUpd4 != null) psUpd4.close(); }catch(Exception ignore){}
|
|
try{ if(psUpd5 != null) psUpd5.close(); }catch(Exception ignore){}
|
|
try{ if(inFile != null) inFile.closeFile(); }catch(Exception ignore){}
|
|
}
|
|
/**
|
|
* 데이터 반영
|
|
* @param Id
|
|
* @throws SQLException
|
|
*/
|
|
private void processRecord(CpnDisuseDataRecord record) throws SQLException , Exception {
|
|
int iParam;
|
|
try{
|
|
char sPrcsKbn = record.getItem(FixTicketDataRecord.D_DATA_TYPE).charAt(0); // 쿠폰구분
|
|
|
|
switch (sPrcsKbn) {
|
|
case '1': // 쿠폰회수폐기
|
|
|
|
iParam = 1;
|
|
psUpd1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psUpd1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psUpd1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psUpd1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_DAY ).trim()); // '일'
|
|
psUpd1.executeUpdate();
|
|
|
|
nUpdateCount++;
|
|
|
|
iParam = 1;
|
|
psSls.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psSls.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psSls.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psSls.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_DAY ).trim()); // '일'
|
|
rs = psSls.executeQuery();
|
|
rs.next();
|
|
|
|
if (rs.getInt(1) == 0) {
|
|
iParam = 1;
|
|
psIns1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psIns1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psIns1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psIns1.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_DAY ).trim()); // '일'
|
|
psIns1.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_COUNT ).trim()); // '일반쿠폰폐기매수'
|
|
psIns1.setString(iParam++, record.getItem( CpnDisuseDataRecord.K_DISUSE_CNT ).trim()); // '경차쿠폰폐기매수'
|
|
psIns1.executeUpdate();
|
|
|
|
nInsertCount++;
|
|
} else if (rs.getInt(1) > 0) {
|
|
iParam = 1;
|
|
psUpd2.setString(iParam++, record.getItem( CpnDisuseDataRecord.COUPON_COUNT ).trim()); // '일반쿠폰폐기매수'
|
|
psUpd2.setString(iParam++, record.getItem( CpnDisuseDataRecord.K_COUPON_CNT ).trim()); // '경차쿠폰폐기매수'
|
|
psUpd2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psUpd2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psUpd2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psUpd2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_DAY ).trim()); // '일'
|
|
psUpd2.executeUpdate();
|
|
|
|
nUpdateCount++;
|
|
}
|
|
|
|
break;
|
|
|
|
case '2': // 과잉쿠폰폐기
|
|
|
|
iParam = 1;
|
|
psUpd3.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psUpd3.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psUpd3.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psUpd3.executeUpdate();
|
|
|
|
nUpdateCount++;
|
|
|
|
iParam = 1;
|
|
psUpd4.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psUpd4.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psUpd4.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psUpd4.executeUpdate();
|
|
|
|
nUpdateCount++;
|
|
|
|
iParam = 1;
|
|
psUpd5.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_DATE ).trim()); // '폐기일자'
|
|
psUpd5.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_PERSON ).trim()); // '폐기담당자'
|
|
psUpd5.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psUpd5.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psUpd5.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psUpd5.executeUpdate();
|
|
|
|
nUpdateCount++;
|
|
|
|
break;
|
|
|
|
default:
|
|
iParam = 1;
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_OFFICE_ID ).trim()); // '요금소'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_DATE ).trim()); // '폐기일자'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_SEQNO ).trim()); // '일련번호'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.COUPON_KBN ).trim()); // '쿠폰구분'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_YEAR ).trim()); // '년도'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_MONTH ).trim()); // '월'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.FARE_DAY ).trim()); // '일'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.COUPON_COUNT ).trim()); // '쿠폰매수'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_PERSON ).trim()); // '폐기자'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.DISUSE_COUNT ).trim()); // '폐기매수'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.K_COUPON_CNT ).trim()); // '경차쿠폰매수'
|
|
psIns2.setString(iParam++, record.getItem( CpnDisuseDataRecord.K_DISUSE_CNT ).trim()); // '경차폐기매수'
|
|
psIns2.executeUpdate();
|
|
|
|
nInsertCount++;
|
|
}
|
|
}catch(SQLException sqle){
|
|
logger.logFail( "[" + record.getRecord() +"]" );
|
|
logger.logTrace(sqle);
|
|
throw sqle;
|
|
}finally{
|
|
try{ if(rs != null) rs.close(); }catch(Exception ignore){}
|
|
}
|
|
}
|
|
}
|