스케쥴 배치 수정

main
이범준 7 months ago
parent bdab5e7df1
commit 413f72d910

@ -52,11 +52,13 @@
</beans:bean>
<beans:bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<beans:property name="basePackage" value="cfs.common.dao
<beans:property name="basePackage"
value="cfs.common.dao
,cfs.fine.dao
,cfs.income.dao
,cfs.input.dao
,cfs.nonpay.dao
,cfs.schd.dao
,cfs.standard.dao
,cfs.system.dao
,cfs.traffic.dao

@ -0,0 +1,370 @@
package cfs.schd;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import cfs.WASInfo;
import cfs.common.service.CfsCommonService;
import cfs.common.util.CallWebService;
import cfs.common.util.CarNo2Code;
import cfs.schd.dao.SchdDao;
import cfs.trsmrcv.dao.TrsmrcvDao;
import cfs.trsmrcv.service.CommCollectServerService;
@EnableScheduling
@Component
public class CfsServerCron {
protected Logger logger = LoggerFactory.getLogger(this.getClass());
@Resource(name="commCollectServerService")
private CommCollectServerService commCollectServerService;
@Resource(name="cfsCommonService")
private CfsCommonService cfsCommonService;
@Resource(name="trsmrcvDao")
private TrsmrcvDao trsmrcvDao;
@Resource(name="schdDao")
private SchdDao schdDao;
@Scheduled(cron = "12 */4 * * * *")
public void prpChgScheduleRun() {
String runWAS = schdDao.selectRunWas("ITF_CFS_O_037");
if(!WASInfo.getWAS().equals(runWAS)){
return;
}
Map<String, String> susinInfo = new HashMap<String, String>();
susinInfo.put("DATETIME", (new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())));
susinInfo.put("RUN_WAS", WASInfo.getWAS());
susinInfo.put("CALL_URI", "없음(schedule)");
susinInfo.put("REQ_IP", "");
trsmrcvDao.insertConnSusinLog(susinInfo);
prpChgScheduleRun_db();
}
@Transactional
public void prpChgScheduleRun_db() {
try{
long start = System.currentTimeMillis(); // 작동 시간 측정용
SimpleDateFormat sdf14 = (new SimpleDateFormat("yyyyMMddHHmmss"));
Date now = new Date();
String reqDate = sdf14.format(now);
String endDt = sdf14.format(now);
logger.info("=== 현재시간 : " + endDt);
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.MINUTE, -6);
String startDt = sdf14.format(cal.getTime());
logger.info("=== 사전등록결제 변동분 startDt : " + startDt);
logger.info("=== 사전등록결제 변동분 endDt : " + endDt);
List<Map<String, Object>> obj = commCollectServerService.selectMstFlag(new HashMap<String, Object>());
if(obj == null || obj.size() == 0) {
return ;
}
logger.info("==== 사전등록결제정보 변동분 조회 신규 - 2");
logger.info("==== PRP_FLAG : " + obj.get(0).get("PRP_FLAG").toString());
logger.info("==== PRP_SENDTIME : " + obj.get(0).get("PRP_SENDTIME").toString());
logger.info("==== end_dt.substring(0, 8) : " + endDt.substring(0, 8));
if(!(
obj.get(0).get("PRP_FLAG").toString().equals("2") == true
&& obj.get(0).get("PRP_SENDTIME").toString().equals(endDt.substring(0, 8)) == true
)
) {
//마스터 작업중이므로 변동분 미처리
return;
}
//마스터 작업중아니므로 변동분 처리
Map<String,String> brsSearchMap = new HashMap<String,String>();
brsSearchMap.put("endDt", endDt);
if(Long.parseLong(obj.get(0).get("PRP_CHG_TIME").toString()) < Long.parseLong(startDt)) {
//startDt를 바꿈
brsSearchMap.put("startDt", obj.get(0).get("PRP_CHG_TIME").toString());
} else {
//startDt를 안바꿈
brsSearchMap.put("startDt", startDt);
}
List<Map<String, Object>> brsDataArray = commCollectServerService.selectPreRegistCarInfoChange(brsSearchMap);
if(brsDataArray == null || brsDataArray.size() == 0){
Map<String, Object> mapOrgTemp = new HashMap<String, Object>();
mapOrgTemp.put("PRP_UPDATE_YN", "Y");
commCollectServerService.updateMstFlag(mapOrgTemp);
return ;
}
String strExmptCode = "";
// 사전등록정보 갱신
for(int i=0; i< brsDataArray.size(); i++){
brsDataArray.get(i).put("CAR_NO", brsDataArray.get(i).get("VHCLE_NO").toString());
brsDataArray.get(i).put("CAR_OWNER_CI", brsDataArray.get(i).get("VHCLE_OWNER_CI").toString());
brsDataArray.get(i).put("REQ_DATE", reqDate);
brsDataArray.get(i).put("SECSN_YN", brsDataArray.get(i).get("SECSN_AT").toString());
if(brsDataArray.get(i).get("SECSN_YN").equals("Y")){
brsDataArray.get(i).put("OWNER_NM", "delete");
}else{
brsDataArray.get(i).put("OWNER_NM", brsDataArray.get(i).get("MBER_NM").toString());
}
// 01: 일반, 02: 경차, 03: 면제
// 면제차량 확인
strExmptCode = commCollectServerService.searchExmptCarNo(brsDataArray.get(i).get("CAR_NO").toString(), false);
// 감면차량 확인
if(strExmptCode.equals("") == true) {
strExmptCode = commCollectServerService.searchHalfExmptCarNo(brsDataArray.get(i).get("CAR_NO").toString());
}
brsDataArray.get(i).put("EXMP_CD", strExmptCode);
brsDataArray.get(i).put("CAR_NO_HEX", CarNo2Code.runCarNo2Code(brsDataArray.get(i).get("CAR_NO").toString()));
brsDataArray.get(i).put("WORKER", "admin");
brsDataArray.get(i).put("MODI_YN", "N");
logger.info("=== 1 : " + brsDataArray.get(i).get("CAR_NO").toString()); //전인종
boolean skip = false;
// 탈퇴이거나 차량을 삭제하면 삭제만 함.
if(brsDataArray.get(i).get("DEL_YN").toString().equals("삭제")) {
//마스터 데이터 삭제
brsDataArray.get(i).put("SECSN_YN", "Y");
brsDataArray.get(i).put("SECSN_DATE", "");
logger.info("=== 사전등록결제 회원 탈퇴 : " + brsDataArray.get(i).get("CAR_NO").toString());
Map<String,String> brsSearchMap2 = new HashMap<String,String>();
brsSearchMap2.put("carNo", brsDataArray.get(i).get("CAR_NO").toString());
List<Map<String,Object>> liveData = commCollectServerService.selectPreRegistCarInfoLive(brsSearchMap2);
if(liveData != null && !liveData.isEmpty()){
skip = true;
}
}
if(!skip){
commCollectServerService.insertPreRegistInfoModi(brsDataArray.get(i));
}
}
Map<String, Object> mapOrgTemp = new HashMap<String, Object>();
mapOrgTemp.put("PRP_UPDATE_YN", "Y");
commCollectServerService.updateMstFlag(mapOrgTemp);
long end = System.currentTimeMillis(); // 작동 시간 측정용
double d = end -start;
logger.info("==== 사전등록결제정보 변동분 스케쥴 소요시간 : " + d) ;
} catch(RuntimeException e) {
logger.error("scheduleRun RuntimeException : "+e.getClass().getName());
} catch(Exception e) {
logger.error("scheduleRun Exception : "+e.getClass().getName());
}
}
@Transactional
public void prpChgScheduleRun_webservice() {
try {
long start = System.currentTimeMillis(); // 작동 시간 측정용
SimpleDateFormat sdf14 = (new SimpleDateFormat("yyyyMMddHHmmss"));
Date now = new Date();
String reqDate = sdf14.format(now);
String endDt = sdf14.format(now);
logger.info("=== 현재시간 : " + endDt);
Calendar cal = Calendar.getInstance();
cal.setTime(now);
cal.add(Calendar.MINUTE, -6);
String startDt = sdf14.format(cal.getTime());
logger.info("=== 사전등록결제 변동분 startDt : " + startDt);
logger.info("=== 사전등록결제 변동분 endDt : " + endDt);
//---------------
//---------------
Map<String, String> mapOrg = new HashMap<String, String>();
mapOrg.put("insttNo", "BRSMC0300001");
mapOrg.put("insttCntcJobSe", "016");
mapOrg.put("requstDt", startDt);
mapOrg.put("startDt", startDt);
mapOrg.put("endDt", endDt);
mapOrg.put("indexStart", "0");
mapOrg.put("indexEnd", "1000");
logger.info("=== 사전등록결제 변동분 mapOrg : " + mapOrg.toString());
List<Map<String, Object>> obj = commCollectServerService.selectMstFlag(new HashMap<String, Object>());
if(obj == null || obj.size() == 0) {
return ;
}
logger.info("==== 사전등록결제정보 변동분 조회 신규 - 2");
logger.info("==== PRP_FLAG : " + obj.get(0).get("PRP_FLAG").toString());
logger.info("==== PRP_SENDTIME : " + obj.get(0).get("PRP_SENDTIME").toString());
logger.info("==== end_dt.substring(0, 8) : " + endDt.substring(0, 8));
if(!(
obj.get(0).get("PRP_FLAG").toString().equals("2") == true
&& obj.get(0).get("PRP_SENDTIME").toString().equals(endDt.substring(0, 8)) == true
)
) {
//마스터 작업중이므로 변동분 미처리
return ;
}
//마스터 작업중아니므로 변동분 처리
if(Long.parseLong(obj.get(0).get("PRP_CHG_TIME").toString()) < Long.parseLong(startDt)) {
//startDt를 바꿈
mapOrg.put("startDt", obj.get(0).get("PRP_CHG_TIME").toString());
} else {
//startDt를 안바꿈
}
// 사전등록결제 웹서비스 호출
String url = cfsCommonService.findCommonSecureGet("ITF_CFS_O_037");
CallWebService callWebService = new CallWebService(url);
Map<String, String> apiResultMap = callWebService.callWebServicePost(mapOrg);
if(apiResultMap == null || apiResultMap.get("result").toString().equals("FAIL") == true) {
return ;
}
JSONParser parser = new JSONParser();
JSONObject jsonParam = (JSONObject)parser.parse(apiResultMap.get("data").toString());
System.out.println("=== " + jsonParam.toJSONString());
List<Map<String, Object>> brsDataArray = (List<Map<String, Object>>)jsonParam.get("dataArray");
if(brsDataArray == null || brsDataArray.size() == 0){
Map<String, Object> mapOrgTemp = new HashMap<String, Object>();
mapOrgTemp.put("PRP_UPDATE_YN", "Y");
commCollectServerService.updateMstFlag(mapOrgTemp);
return ;
}
String strExmptCode = "";
// 사전등록정보 갱신
for(int i=0; i< brsDataArray.size(); i++){
brsDataArray.get(i).put("CAR_NO", brsDataArray.get(i).get("vhcleNo").toString());
brsDataArray.get(i).put("CAR_OWNER_CI", brsDataArray.get(i).get("vhcleOwnerCi").toString());
brsDataArray.get(i).put("REQ_DATE", reqDate);
brsDataArray.get(i).put("VHCLE_STTUS_TY", brsDataArray.get(i).get("vhcleSttusTy").toString());
brsDataArray.get(i).put("NAMSAN_PASMNY", brsDataArray.get(i).get("namsanPasmny").toString());
brsDataArray.get(i).put("SECSN_YN", brsDataArray.get(i).get("secsnAt").toString());
if(brsDataArray.get(i).get("SECSN_YN").equals("Y")){
brsDataArray.get(i).put("SECSN_DATE", brsDataArray.get(i).get("secsnDt").toString());
brsDataArray.get(i).put("OWNER_NM", "delete");
}else{
brsDataArray.get(i).put("OWNER_NM", brsDataArray.get(i).get("mberNm").toString());
}
// 01: 일반, 02: 경차, 03: 면제
// 면제차량 확인
strExmptCode = commCollectServerService.searchExmptCarNo(brsDataArray.get(i).get("CAR_NO").toString(), false);
// 감면차량 확인
if(strExmptCode.equals("") == true) {
strExmptCode = commCollectServerService.searchHalfExmptCarNo(brsDataArray.get(i).get("CAR_NO").toString());
}
brsDataArray.get(i).put("EXMP_CD", strExmptCode);
brsDataArray.get(i).put("CAR_NO_HEX", CarNo2Code.runCarNo2Code(brsDataArray.get(i).get("CAR_NO").toString()));
brsDataArray.get(i).put("WORKER", "admin");
brsDataArray.get(i).put("MODI_YN", "N");
logger.info("=== 1 : " + brsDataArray.get(i).get("CAR_NO").toString()); //전인종
// 탈퇴이거나 차량을 삭제하면 삭제만 함.
if(brsDataArray.get(i).get("SECSN_YN").toString().equals("Y") == true
|| brsDataArray.get(i).get("VHCLE_STTUS_TY").toString().equals("02") == true
|| brsDataArray.get(i).get("VHCLE_STTUS_TY").toString().equals("03") == true
|| brsDataArray.get(i).get("NAMSAN_PASMNY").toString().equals("N") == true
) {
//마스터 데이터 삭제
brsDataArray.get(i).put("SECSN_YN", "Y");
brsDataArray.get(i).put("SECSN_DATE", "");
logger.info("=== 사전등록결제 회원 탈퇴 : " + brsDataArray.get(i).get("CAR_NO").toString());
}
commCollectServerService.insertPreRegistInfoModi(brsDataArray.get(i));
}
Map<String, Object> mapOrgTemp = new HashMap<String, Object>();
mapOrgTemp.put("PRP_UPDATE_YN", "Y");
commCollectServerService.updateMstFlag(mapOrgTemp);
long end = System.currentTimeMillis(); // 작동 시간 측정용
double d = end -start;
logger.info("==== 사전등록결제정보 변동분 스케쥴 소요시간 : " + d) ;
} catch(RuntimeException e) {
logger.error("scheduleRun RuntimeException : "+e.getClass().getName());
} catch(Exception e) {
logger.error("scheduleRun Exception : "+e.getClass().getName());
}
}
}

@ -0,0 +1,8 @@
package cfs.schd.dao;
import org.springframework.stereotype.Repository;
@Repository("schdDao")
public interface SchdDao {
public String selectRunWas(String schdulName);
}

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cfs.schd.dao.SchdDao">
<select id="selectRunWas" parameterType="java.lang.String" resultType="java.lang.String">
SELECT RUN_WAS
FROM TB_CFS_SCHDUL_RUN_INFO
WHERE SCHDUL_NAME = #{schdulName};
</select>
</mapper>
Loading…
Cancel
Save