win 0712
parent
ceab861975
commit
fcaf5832d5
|
@ -2,7 +2,9 @@ package kr.gmtc.gw.eyegw;
|
|||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
|
||||
@EnableScheduling
|
||||
@SpringBootApplication
|
||||
public class EyeGWApplication {
|
||||
|
||||
|
|
|
@ -38,33 +38,13 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
@Resource(name = "ServiceConfig")
|
||||
private ServiceConfig serviceConfig;
|
||||
|
||||
// DB //
|
||||
/**
|
||||
* DB1 Connection<br>
|
||||
* application.yml에 db.db1.use가 true로 설정되어야 사용가능<br>
|
||||
* db.db1.use가 false일 경우 주석처리 (Bean 런타임 에러 발생)
|
||||
* @see DB1Connection
|
||||
*/
|
||||
// @Resource(name = "DB1Connection")
|
||||
// private DB1Connection db1Connection;
|
||||
|
||||
private EaiIfCheckService eaiIfCheckService;
|
||||
private EaiProcService eaiProcService;
|
||||
|
||||
// DB //
|
||||
|
||||
|
||||
|
||||
// 업무처리 //
|
||||
/** 업무 처리 스레드 */
|
||||
private List<CustomThread> listCustomThreads;
|
||||
// private CustomThread callThread_ArtsArr;
|
||||
// private CustomThread callThread_ArtsDep;
|
||||
// private CustomThread callThread_AcdmArr;
|
||||
// private CustomThread callThread_AcdmDep;
|
||||
// private CustomThread callThread_Gam;
|
||||
// private CustomThread callThread_Amos;
|
||||
// private CustomThread callThread_Notam;
|
||||
|
||||
private CustomThread chkThreadStatus;
|
||||
|
||||
@Value("${settings.interval.proc.call}")
|
||||
|
@ -73,12 +53,13 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
@Value("${settings.interval.chk.thread}")
|
||||
private int chkThreadInterval;
|
||||
|
||||
|
||||
DateTimeFormatter dfPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MainController.class);
|
||||
|
||||
@Autowired
|
||||
private SchedulController sch;
|
||||
|
||||
@Autowired
|
||||
private StateManager stateMgr;
|
||||
|
||||
|
@ -86,12 +67,6 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
|
||||
private IntrfcRecvStatsManager recvStatsMgr;
|
||||
|
||||
/** 초기화 실패 시 프로그램 종료 */
|
||||
// private void systemError() {
|
||||
// // logger.writeLevelLog("-- FAIL TO STARTUP --", LogLevelType.LOG_ERROR, "AllLog");
|
||||
// System.exit(1);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 수정 금지<br>
|
||||
* Spring Bean 객체 생성, logger 초기화
|
||||
|
@ -99,7 +74,6 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
public MainController(EaiProcService eaiProcService, EaiIfCheckService eaiIfCheckService) {
|
||||
|
||||
this.eaiProcService = eaiProcService;
|
||||
this.eaiProcService = eaiProcService;
|
||||
this.eaiIfCheckService = eaiIfCheckService;
|
||||
|
||||
}
|
||||
|
@ -118,16 +92,12 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
// 업무 스래드(프로시저 호출)
|
||||
listCustomThreads = new ArrayList<CustomThread>();
|
||||
|
||||
listCustomThreads.add(new CustomThread("callThread_Gam", this, procCallInterval, this::callThread_Gam, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_AcdmArr", this, procCallInterval, this::callThread_AcdmArr, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_AcdmDep", this, procCallInterval, this::callThread_AcdmDep, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_ArtsArr", this, procCallInterval, this::callThread_ArtsArr, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_ArtsDep", this, procCallInterval, this::callThread_ArtsDep, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_Amos", this, procCallInterval, this::callThread_Amos, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_Notam", this, procCallInterval, this::callThread_Notam, null, false));
|
||||
listCustomThreads.add(new CustomThread("CallProc_AllFltSchdul", this, procCallInterval, this::CallProc_AllFltSchdul, null, false));
|
||||
listCustomThreads.add(new CustomThread("CallProc_Amos", this, procCallInterval, this::CallProc_Amos, null, false));
|
||||
listCustomThreads.add(new CustomThread("CallProc_Notam", this, procCallInterval, this::CallProc_Notam, null, false));
|
||||
|
||||
// 이중화 체크 및 업무스래드 체크
|
||||
chkThreadStatus = new CustomThread("chkThreadStatus", this, procCallInterval, this::chkThreadStatus, null, false);
|
||||
chkThreadStatus = new CustomThread("chkThreadStatus", this, 3000, this::chkThreadStatus, null, false);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("MainContoller-Thread create fail");
|
||||
|
@ -173,44 +143,59 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
}
|
||||
|
||||
|
||||
private void chkThreadStatus(){
|
||||
private void chkThreadStatus() throws InterruptedException{
|
||||
|
||||
stateMgr.updateState();
|
||||
|
||||
boolean running = true;
|
||||
boolean swNewStatus = stateMgr.isActive();
|
||||
|
||||
// 이중화 Active / Standby 상태 변경 체크
|
||||
if(swBeforeStatus != swNewStatus){
|
||||
// Active 상태로 변경된경우
|
||||
if(swNewStatus && !swBeforeStatus){
|
||||
logger.info("SW상태 변경됨[Active] 스레드 시작.");
|
||||
|
||||
for(CustomThread ct : listCustomThreads ) {
|
||||
|
||||
ct.start();
|
||||
|
||||
}
|
||||
|
||||
// Standby 상태로 변경된경우
|
||||
}else if(!swNewStatus && swBeforeStatus){
|
||||
logger.info("SW상태 변경됨[Standby] 스레드 중지.");
|
||||
|
||||
for(CustomThread ct : listCustomThreads ) {
|
||||
ct.gracefulStop();
|
||||
ct.interrupt();
|
||||
}
|
||||
|
||||
}else {
|
||||
|
||||
// 해당 프로그램이 Active일때 Thread Interrupt 유무 체크
|
||||
if(swNewStatus){
|
||||
for(CustomThread ct : listCustomThreads ) ct.start();
|
||||
}else{
|
||||
for(CustomThread ct : listCustomThreads ) ct.gracefulStop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 해당 프로그램이 Active일때 Thread Interrupt 유무 체크
|
||||
if(swNewStatus){
|
||||
|
||||
for(CustomThread ct : listCustomThreads ){
|
||||
if(ct.isInterrupted()){
|
||||
running = false;
|
||||
break;
|
||||
for(CustomThread ct : listCustomThreads ){
|
||||
if(ct.isInterrupted()){
|
||||
running = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(running){
|
||||
|
||||
stateMgr.updateState(SystemState.Normal);
|
||||
|
||||
for(CustomThread ct : listCustomThreads ){
|
||||
if(ct.getState() == Thread.State.NEW) ct.start();
|
||||
}
|
||||
|
||||
}else{
|
||||
stateMgr.updateState(SystemState.Error);
|
||||
}
|
||||
}
|
||||
|
||||
if(running){
|
||||
stateMgr.updateState(SystemState.Normal);
|
||||
}else{
|
||||
stateMgr.updateState(SystemState.Error);
|
||||
}
|
||||
}
|
||||
|
||||
swBeforeStatus = stateMgr.isActive();
|
||||
|
||||
// logger.info("swBeforeStatus : " + swBeforeStatus);
|
||||
swBeforeStatus = swNewStatus;
|
||||
|
||||
}
|
||||
|
||||
|
@ -232,11 +217,12 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
* 자동으로 무한반복 하므로 내부에 while문 필요 없음.<br>
|
||||
* 예외처리를 하지 않을 경우 {@link CustomThread} 내부에서 로그 처리
|
||||
*/
|
||||
private void callThread_ArtsArr() throws InterruptedException {
|
||||
|
||||
private void CallProc_AllFltSchdul() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getArtsArr();
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.selectAllFltSchdul();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
|
@ -246,148 +232,44 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
paramMap.put("ret_msg", "%");
|
||||
|
||||
//DB 프로시져 Call
|
||||
eaiProcService.callProcArtsArr(paramMap);
|
||||
eaiProcService.callProcAll(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcArtsArr Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
logger.info("항공기 운항 스케줄 " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "103", "ARTS_ARR", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
String strRetMsg = (String) paramMap.get("ret_msg");
|
||||
|
||||
// Thread.sleep(3000);
|
||||
if(strRetMsg == null ) return;
|
||||
|
||||
}
|
||||
String[] strMsgList = strRetMsg.split("\\^");
|
||||
|
||||
private void callThread_ArtsDep() throws InterruptedException {
|
||||
//areaList.forEach(area -> mapTaxiway.put(area.getId(), area));
|
||||
|
||||
// if(!running) return ;
|
||||
if(sch.getMapLogCode() == null ){
|
||||
sch.selectCmmnCd();
|
||||
}
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getArtsDep();
|
||||
for(String retMsgRow : strMsgList){
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
String[] strMsgFields = retMsgRow.split("\\,");
|
||||
String strIntrvcId = strMsgFields[0];
|
||||
String strIntrvcMn = sch.getMapLogCode().get(strMsgFields[0]);
|
||||
String strIntrvcIfDt = strMsgFields[1];
|
||||
String strIntrvcCnt = strMsgFields[2];
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
recvStatsMgr.writeStatsLog_KST(strIntrvcIfDt, strIntrvcId, strIntrvcMn, Integer.parseInt(strIntrvcCnt), 0);
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
}
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcArtsDep(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcArtsDep Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "104", "ARTS_DEP", (int) paramMap.get("ret_procCnt"), 0);
|
||||
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
|
||||
}
|
||||
|
||||
private void callThread_AcdmArr() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getAcdmArr();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcAcdmArr(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcAcdmArr Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "101", "ACDM_ARR", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
private void callThread_AcdmDep() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getAcdmDep();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcAcdmDep(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcAcdmDep Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "102", "ACDM_DEP", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
private void callThread_Gam() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getGam();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcGam(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcGam Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "105", "GAM", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
|
||||
private void callThread_Amos() throws InterruptedException {
|
||||
private void CallProc_Amos() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
|
@ -408,7 +290,7 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
eaiProcService.callProcAmos(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcAmos Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
logger.info("활주로 기상정보 " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "106", "AMOS", (int) paramMap.get("ret_procCnt"), 0);
|
||||
|
@ -417,7 +299,7 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
private void callThread_Notam() throws InterruptedException {
|
||||
private void CallProc_Notam() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
|
@ -438,7 +320,7 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
eaiProcService.callProcNotam(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcNotam Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
logger.info("NOTAM " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "107", "NOTAM", (int) paramMap.get("ret_procCnt"), 0);
|
||||
|
@ -447,6 +329,4 @@ public class MainController implements ApplicationListener<ContextClosedEvent> {
|
|||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,470 @@
|
|||
package kr.gmtc.gw.eyegw.controller;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.context.event.ApplicationReadyEvent;
|
||||
import org.springframework.context.ApplicationListener;
|
||||
import org.springframework.context.event.ContextClosedEvent;
|
||||
import org.springframework.context.event.EventListener;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import kr.gmt.so.state.StateManager;
|
||||
import kr.gmt.so.state.model.SystemState;
|
||||
import kr.gmtc.gw.comp.thread.CustomThread;
|
||||
import kr.gmtc.gw.eyegw.config.ServiceConfig;
|
||||
import kr.gmtc.gw.eyegw.db1.EaiIfCheckService;
|
||||
import kr.gmtc.gw.eyegw.db1.EaiProcService;
|
||||
import kr.gmtc.gw.eyegw.satats.IntrfcRecvStatsManager;
|
||||
|
||||
// @Component("controller")
|
||||
public class MainController_Old implements ApplicationListener<ContextClosedEvent> {
|
||||
|
||||
// 프레임 워크 구성요소 //
|
||||
/** 서비스 설정, {@code application.properties} */
|
||||
@Resource(name = "ServiceConfig")
|
||||
private ServiceConfig serviceConfig;
|
||||
|
||||
// DB //
|
||||
/**
|
||||
* DB1 Connection<br>
|
||||
* application.yml에 db.db1.use가 true로 설정되어야 사용가능<br>
|
||||
* db.db1.use가 false일 경우 주석처리 (Bean 런타임 에러 발생)
|
||||
* @see DB1Connection
|
||||
*/
|
||||
// @Resource(name = "DB1Connection")
|
||||
// private DB1Connection db1Connection;
|
||||
|
||||
private EaiIfCheckService eaiIfCheckService;
|
||||
private EaiProcService eaiProcService;
|
||||
|
||||
// DB //
|
||||
|
||||
|
||||
|
||||
// 업무처리 //
|
||||
/** 업무 처리 스레드 */
|
||||
private List<CustomThread> listCustomThreads;
|
||||
// private CustomThread callThread_ArtsArr;
|
||||
// private CustomThread callThread_ArtsDep;
|
||||
// private CustomThread callThread_AcdmArr;
|
||||
// private CustomThread callThread_AcdmDep;
|
||||
// private CustomThread callThread_Gam;
|
||||
// private CustomThread callThread_Amos;
|
||||
// private CustomThread callThread_Notam;
|
||||
private CustomThread chkThreadStatus;
|
||||
|
||||
@Value("${settings.interval.proc.call}")
|
||||
private int procCallInterval;
|
||||
|
||||
@Value("${settings.interval.chk.thread}")
|
||||
private int chkThreadInterval;
|
||||
|
||||
|
||||
DateTimeFormatter dfPattern = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(MainController.class);
|
||||
|
||||
@Autowired
|
||||
private StateManager stateMgr;
|
||||
|
||||
private boolean swBeforeStatus = true;
|
||||
|
||||
private IntrfcRecvStatsManager recvStatsMgr;
|
||||
|
||||
/** 초기화 실패 시 프로그램 종료 */
|
||||
// private void systemError() {
|
||||
// // logger.writeLevelLog("-- FAIL TO STARTUP --", LogLevelType.LOG_ERROR, "AllLog");
|
||||
// System.exit(1);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 수정 금지<br>
|
||||
* Spring Bean 객체 생성, logger 초기화
|
||||
*/
|
||||
public MainController_Old(EaiProcService eaiProcService, EaiIfCheckService eaiIfCheckService) {
|
||||
|
||||
this.eaiProcService = eaiProcService;
|
||||
this.eaiProcService = eaiProcService;
|
||||
this.eaiIfCheckService = eaiIfCheckService;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 실행 (1순위)<br>
|
||||
* 프로그램 초기화
|
||||
*/
|
||||
@Order(0)
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
public void initialize() {
|
||||
try {
|
||||
|
||||
recvStatsMgr = new IntrfcRecvStatsManager();
|
||||
|
||||
// 업무 스래드(프로시저 호출)
|
||||
listCustomThreads = new ArrayList<CustomThread>();
|
||||
|
||||
// listCustomThreads.add(new CustomThread("callThread_Gam", this, procCallInterval, this::callThread_Gam, null, false));
|
||||
// listCustomThreads.add(new CustomThread("callThread_AcdmArr", this, procCallInterval, this::callThread_AcdmArr, null, false));
|
||||
// listCustomThreads.add(new CustomThread("callThread_AcdmDep", this, procCallInterval, this::callThread_AcdmDep, null, false));
|
||||
// listCustomThreads.add(new CustomThread("callThread_ArtsArr", this, procCallInterval, this::callThread_ArtsArr, null, false));
|
||||
// listCustomThreads.add(new CustomThread("callThread_ArtsDep", this, procCallInterval, this::callThread_ArtsDep, null, false));
|
||||
// listCustomThreads.add(new CustomThread("callThread_Amos", this, procCallInterval, this::callThread_Amos, null, false));
|
||||
// listCustomThreads.add(new CustomThread("callThread_Notam", this, procCallInterval, this::callThread_Notam, null, false));
|
||||
listCustomThreads.add(new CustomThread("callThread_dataDelete", this, procCallInterval, this::callThread_dataDelete, null, false));
|
||||
|
||||
// 이중화 체크 및 업무스래드 체크
|
||||
chkThreadStatus = new CustomThread("chkThreadStatus", this, procCallInterval, this::chkThreadStatus, null, false);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("MainContoller-Thread create fail");
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 실행 (2순위)<br>
|
||||
* 프로그램 실행
|
||||
*/
|
||||
@Order(1)
|
||||
@EventListener(ApplicationReadyEvent.class)
|
||||
public void start() {
|
||||
try {
|
||||
|
||||
logger.info("MainContoller-Thread start");
|
||||
|
||||
for(CustomThread ct : listCustomThreads ){
|
||||
ct.start();
|
||||
}
|
||||
|
||||
chkThreadStatus.start();
|
||||
|
||||
stateMgr.updateState();
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("MainContoller-Thread start fail");
|
||||
System.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/** 종료 처리 */
|
||||
public void stop() {
|
||||
|
||||
for(CustomThread ct : listCustomThreads ){
|
||||
ct.gracefulStop();
|
||||
}
|
||||
|
||||
chkThreadStatus.gracefulStop();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void chkThreadStatus(){
|
||||
|
||||
stateMgr.updateState();
|
||||
|
||||
boolean running = true;
|
||||
boolean swNewStatus = stateMgr.isActive();
|
||||
|
||||
// 이중화 Active / Standby 상태 변경 체크
|
||||
if(swBeforeStatus != swNewStatus){
|
||||
|
||||
if(swNewStatus){
|
||||
for(CustomThread ct : listCustomThreads ) ct.start();
|
||||
}else{
|
||||
for(CustomThread ct : listCustomThreads ) ct.gracefulStop();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 해당 프로그램이 Active일때 Thread Interrupt 유무 체크
|
||||
if(swNewStatus){
|
||||
|
||||
for(CustomThread ct : listCustomThreads ){
|
||||
if(ct.isInterrupted()){
|
||||
running = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(running){
|
||||
stateMgr.updateState(SystemState.Normal);
|
||||
}else{
|
||||
stateMgr.updateState(SystemState.Error);
|
||||
}
|
||||
}
|
||||
|
||||
swBeforeStatus = stateMgr.isActive();
|
||||
|
||||
// logger.info("swBeforeStatus : " + swBeforeStatus);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** 종료 이벤트 (강제종료시 수행 안됨) */
|
||||
public void onApplicationEvent(ContextClosedEvent event) {
|
||||
|
||||
stateMgr.updateState(SystemState.Stop);
|
||||
for(CustomThread ct : listCustomThreads ) ct.gracefulStop();
|
||||
chkThreadStatus.gracefulStop();
|
||||
|
||||
logger.info("====================== SYSTEM STOPED ======================");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 업무 로직<br>
|
||||
* 자동으로 무한반복 하므로 내부에 while문 필요 없음.<br>
|
||||
* 예외처리를 하지 않을 경우 {@link CustomThread} 내부에서 로그 처리
|
||||
*/
|
||||
private void callThread_ArtsArr() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getArtsArr();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
//DB 프로시져 Call
|
||||
eaiProcService.callProcArtsArr(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcArtsArr Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
|
||||
}
|
||||
|
||||
private void callThread_ArtsDep() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getArtsDep();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcArtsDep(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcArtsDep Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "104", "ARTS_DEP", (int) paramMap.get("ret_procCnt"), 0);
|
||||
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
|
||||
}
|
||||
|
||||
private void callThread_AcdmArr() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getAcdmArr();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcAcdmArr(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcAcdmArr Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "101", "ACDM_ARR", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
private void callThread_AcdmDep() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getAcdmDep();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcAcdmDep(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcAcdmDep Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "102", "ACDM_DEP", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
private void callThread_Gam() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getGam();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcGam(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcGam Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "105", "GAM", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
|
||||
private void callThread_Amos() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getAmos();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcAmos(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcAmos Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "106", "AMOS", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
private void callThread_Notam() throws InterruptedException {
|
||||
|
||||
// if(!running) return ;
|
||||
|
||||
List<HashMap<String, Object>> dataCnt = eaiIfCheckService.getNotam();
|
||||
|
||||
String sCnt = String.valueOf(dataCnt.get(0).get("DATA_CNT"));
|
||||
|
||||
if( Integer.parseInt(sCnt) > 0 ) {
|
||||
|
||||
LocalDateTime dt_before = LocalDateTime.now();
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_dt", "%");
|
||||
paramMap.put("ret_minDt", "");
|
||||
paramMap.put("ret_procCnt", 0);
|
||||
|
||||
eaiProcService.callProcNotam(paramMap);
|
||||
|
||||
Duration diff = Duration.between(dt_before, LocalDateTime.now());
|
||||
logger.info("callProcNotam Call " + sCnt + "건 " + diff.toMillis() + "msec");
|
||||
|
||||
// 수신(처리) 건수 집계 -> ELK전송용
|
||||
recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "107", "NOTAM", (int) paramMap.get("ret_procCnt"), 0);
|
||||
}
|
||||
|
||||
// Thread.sleep(3000);
|
||||
}
|
||||
|
||||
|
||||
private void callThread_dataDelete() throws InterruptedException {
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_days", 90);
|
||||
paramMap.put("ret_proc_msg", "");
|
||||
|
||||
eaiProcService.callProcOldDataDelete(paramMap);
|
||||
|
||||
String sProcMsg = (String) paramMap.get("ret_proc_msg");
|
||||
|
||||
logger.info("callProcOldDataDelete Call : " + sProcMsg);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package kr.gmtc.gw.eyegw.controller;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import kr.gmtc.gw.eyegw.db1.EaiIfCheckService;
|
||||
import kr.gmtc.gw.eyegw.db1.EaiProcService;
|
||||
|
||||
@Component
|
||||
public class SchedulController {
|
||||
|
||||
private EaiIfCheckService checkService;
|
||||
private EaiProcService eaiProcService;
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Value("${settings.delete.save-days}")
|
||||
private int dataSaveDays = 120;
|
||||
|
||||
|
||||
private Map<String, String> mapLogCode;
|
||||
|
||||
|
||||
public SchedulController(EaiIfCheckService checkService, EaiProcService eaiProcService){
|
||||
this.checkService = checkService;
|
||||
this.eaiProcService = eaiProcService;
|
||||
}
|
||||
|
||||
@Scheduled(cron = "${settings.cmmnCd.cron}")
|
||||
public void selectCmmnCd(){
|
||||
|
||||
mapLogCode = new ConcurrentHashMap<String, String>();
|
||||
|
||||
List<HashMap<String, Object>> logList = checkService.selectLogCode();
|
||||
|
||||
logger.info("로그유형코드(CT033) " +logList.size()+ "건 조회 완료.");
|
||||
|
||||
logList.forEach(codes -> mapLogCode.put( (String) codes.get("CD"), (String) codes.get("CD_NM") ) );
|
||||
|
||||
}
|
||||
|
||||
@Scheduled(cron = "${settings.delete.cron}")
|
||||
private void callThread_dataDelete() throws InterruptedException {
|
||||
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
paramMap.put("ar_days", dataSaveDays);
|
||||
paramMap.put("ret_proc_msg", "");
|
||||
|
||||
eaiProcService.callProcOldDataDelete(paramMap);
|
||||
|
||||
String sProcMsg = (String) paramMap.get("ret_proc_msg");
|
||||
|
||||
logger.info("callProcOldDataDelete Call : " + sProcMsg);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public Map<String, String> getMapLogCode() {
|
||||
return mapLogCode;
|
||||
}
|
||||
|
||||
public void setMapLogCode(Map<String, String> mapLogCode) {
|
||||
this.mapLogCode = mapLogCode;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -14,6 +14,10 @@ public interface EaiIfCheckMapper {
|
|||
List<HashMap<String, Object>> selectAcdmArr();
|
||||
List<HashMap<String, Object>> selectAcdmDep();
|
||||
List<HashMap<String, Object>> selectGAM();
|
||||
|
||||
List<HashMap<String, Object>> selectAllFltSchdul();
|
||||
List<HashMap<String, Object>> selectAMOS();
|
||||
List<HashMap<String, Object>> selectNOTAM();
|
||||
|
||||
List<HashMap<String, Object>> selectLogCode();
|
||||
}
|
||||
|
|
|
@ -32,6 +32,12 @@ public class EaiIfCheckService {
|
|||
return checkMapper.selectGAM();
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
public List<HashMap<String, Object>> selectAllFltSchdul() {
|
||||
return checkMapper.selectAllFltSchdul();
|
||||
}
|
||||
|
||||
public List<HashMap<String, Object>> getAmos() {
|
||||
return checkMapper.selectAMOS();
|
||||
}
|
||||
|
@ -40,4 +46,8 @@ public class EaiIfCheckService {
|
|||
return checkMapper.selectNOTAM();
|
||||
}
|
||||
|
||||
public List<HashMap<String, Object>> selectLogCode() {
|
||||
return checkMapper.selectLogCode();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,4 +16,6 @@ public interface EaiProcMapper {
|
|||
void callProcAmos(Map<String, Object> parameterMap);
|
||||
void callProcNotam(Map<String, Object> parameterMap);
|
||||
void callProcAll(Map<String, Object> parameterMap);
|
||||
|
||||
void callProcOldDataDelete(Map<String, Object> parameterMap);
|
||||
}
|
||||
|
|
|
@ -60,4 +60,10 @@ public class EaiProcService {
|
|||
|
||||
}
|
||||
|
||||
public void callProcOldDataDelete(Map<String, Object> parameterMap) {
|
||||
|
||||
ueaiProcMapper.callProcOldDataDelete(parameterMap);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,9 +27,10 @@ database:
|
|||
|
||||
state:
|
||||
# 공통코드 CT001의 코드 6자리
|
||||
id: LK0309 # IFToDB
|
||||
id: LK0302 # IFToDB
|
||||
# 1:Primary, 2:Secondary
|
||||
type: Primary
|
||||
type: Secondary
|
||||
DisplayLog: true
|
||||
|
||||
---
|
||||
spring:
|
||||
|
@ -48,6 +49,11 @@ settings:
|
|||
call: 10000
|
||||
chk:
|
||||
thread: 30000
|
||||
cmmnCd:
|
||||
cron: 0 0/10 * * * * # 공통 코드 10분 마다 조회
|
||||
delete:
|
||||
save-days: 90 # 90일 이전 데이터 삭제
|
||||
cron: 0 0 03 * * * # 매일 새벽 3시 수행
|
||||
|
||||
---
|
||||
spring:
|
||||
|
@ -64,6 +70,10 @@ settings:
|
|||
call: 10000
|
||||
chk:
|
||||
thread: 30000
|
||||
# root: D:\Workspace\...
|
||||
cmmnCd:
|
||||
cron: 0 0/10 * * * ? # 공통 코드 10분 마다 조회
|
||||
delete:
|
||||
save-days: 90 # 90일 이전 데이터 삭제
|
||||
cron: 0 0 03 * * * # 매일 새벽 3시 수행
|
||||
|
||||
|
||||
|
|
|
@ -114,15 +114,15 @@
|
|||
</appender>
|
||||
|
||||
<!-- 로그 전역 세팅 -->
|
||||
<!-- <root level="${LOG_LEVEL}">
|
||||
<root level="${LOG_LEVEL}">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="FILE"/>
|
||||
</root> -->
|
||||
</root>
|
||||
|
||||
<logger name="kr.gmtc.gw" level="INFO">
|
||||
<!-- <logger name="kr.gmtc.gw" level="INFO">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<appender-ref ref="FILE"/>
|
||||
</logger>
|
||||
</logger> -->
|
||||
|
||||
<logger name="STATS" level="INFO">
|
||||
<!-- <appender-ref ref="CONSOLE"/> -->
|
||||
|
|
|
@ -3,32 +3,52 @@
|
|||
<mapper namespace="kr.gmtc.gw.eyegw.db1.EaiIfCheckMapper">
|
||||
|
||||
<select id="selectAarsArr" resultType="hashMap">
|
||||
select count(*) as data_cnt from ueai.EAI_ELECSTRIPARRARTS_RCV where deal_stat = 'S';
|
||||
select count(*) as data_cnt from ueai.EAI_ELECSTRIPARRARTS_RCV where deal_stat = 'S'
|
||||
</select>
|
||||
|
||||
<select id="selectAarsDep" resultType="hashMap">
|
||||
select count(*) as data_cnt from ueai.EAI_ELECSTRIPDEPARTS_RCV where deal_stat = 'S';
|
||||
select count(*) as data_cnt from ueai.EAI_ELECSTRIPDEPARTS_RCV where deal_stat = 'S'
|
||||
</select>
|
||||
|
||||
<select id="selectAcdmArr" resultType="hashMap">
|
||||
select count(*) as data_cnt from ueai.EAI_FLTACDMMLSTNARR_RCV where deal_stat = 'S';
|
||||
select count(*) as data_cnt from ueai.EAI_FLTACDMMLSTNARR_RCV where deal_stat = 'S'
|
||||
</select>
|
||||
|
||||
<select id="selectAcdmDep" resultType="hashMap">
|
||||
select count(*) as data_cnt from ueai.EAI_FLTACDMMLSTNDEP_RCV where deal_stat = 'S';
|
||||
select count(*) as data_cnt from ueai.EAI_FLTACDMMLSTNDEP_RCV where deal_stat = 'S'
|
||||
</select>
|
||||
|
||||
<select id="selectGAM" resultType="hashMap">
|
||||
select count(*) as data_cnt from ueai.EAI_GRDACMVT_RCV where deal_stat = 'S';
|
||||
select count(*) as data_cnt from ueai.EAI_GRDACMVT_RCV where deal_stat = 'S'
|
||||
</select>
|
||||
|
||||
<select id="selectAllFltSchdul" resultType="hashMap">
|
||||
select count(*) as data_cnt
|
||||
from (
|
||||
select DATEANDTIME from ueai.EAI_ELECSTRIPARRARTS_RCV where DEAL_STAT = 'S' union all
|
||||
select DATEANDTIME from ueai.EAI_ELECSTRIPDEPARTS_RCV where DEAL_STAT = 'S' union all
|
||||
select DATEANDTIME from ueai.EAI_FLTACDMMLSTNARR_RCV where DEAL_STAT = 'S' union all
|
||||
select DATEANDTIME from ueai.EAI_FLTACDMMLSTNDEP_RCV where DEAL_STAT = 'S' union all
|
||||
select DATEANDTIME from ueai.EAI_GRDACMVT_RCV where DEAL_STAT = 'S'
|
||||
)
|
||||
</select>
|
||||
|
||||
<select id="selectAMOS" resultType="hashMap">
|
||||
select count(*) as data_cnt from ueai.EAI_AWOS_RCV where deal_stat = 'S' and dateandtime >= '20231001000000.000';
|
||||
select count(*) as data_cnt from ueai.EAI_AWOS_RCV where deal_stat = 'S' and dateandtime >= '20231001000000.000'
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectNOTAM" resultType="hashMap">
|
||||
select count(*) as data_cnt from UEAI.EAI_AFTNFLTINFO_RCV where deal_stat = 'S';
|
||||
select count(*) as data_cnt from UEAI.EAI_AFTNFLTINFO_RCV where deal_stat = 'S'
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectLogCode" resultType="hashMap">
|
||||
select cd_id as cd, CD_REF1 as cd_nm
|
||||
from ucm.SACP_CMMN_CD
|
||||
where CD_TY_ID = 'CT033'
|
||||
and UPPER_CD = 'EAI'
|
||||
order by cd_id
|
||||
</select>
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
<select id="callProcAmos" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_AMOS_NEW(
|
||||
call PROC_EAI_INTRFC_AMOS(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -14,7 +14,7 @@
|
|||
|
||||
<select id="callProcNotam" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_AFTNFLTINFO_RCV_NEW(
|
||||
call PROC_EAI_INTRFC_AFTNFLTINFO_RCV(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -24,7 +24,7 @@
|
|||
|
||||
<select id="callProcArtsArr" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_ARTS_ARR_NEW(
|
||||
call PROC_EAI_INTRFC_ARTS_ARR(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
<select id="callProcArtsDep" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_ARTS_DEP_NEW(
|
||||
call PROC_EAI_INTRFC_ARTS_DEP(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<select id="callProcAcdmArr" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_ACDM_ARR_NEW(
|
||||
call PROC_EAI_INTRFC_ACDM_ARR(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -54,7 +54,7 @@
|
|||
|
||||
<select id="callProcAcdmDep" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_ACDM_DEP_NEW(
|
||||
call PROC_EAI_INTRFC_ACDM_DEP(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -64,7 +64,7 @@
|
|||
|
||||
<select id="callProcGam" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_GAM_NEW(
|
||||
call PROC_EAI_INTRFC_GAM(
|
||||
#{ar_dt, mode=IN, jdbcType=VARCHAR}
|
||||
,#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_procCnt, mode=OUT, jdbcType=INTEGER}
|
||||
|
@ -72,15 +72,19 @@
|
|||
]]>
|
||||
</select>
|
||||
|
||||
<select id="callProcAll" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<select id="callProcAll" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_ALL(
|
||||
#{ret_minDt, mode=OUT, jdbcType=VARCHAR}
|
||||
,#{ret_arts_arr_cnt, mode=OUT, jdbcType=INTEGER}
|
||||
,#{ret_arts_dep_cnt, mode=OUT, jdbcType=INTEGER}
|
||||
,#{ret_acdm_arr_cnt, mode=OUT, jdbcType=INTEGER}
|
||||
,#{ret_acdm_dep_cnt, mode=OUT, jdbcType=INTEGER}
|
||||
,#{ret_gam_cnt, mode=OUT, jdbcType=INTEGER}
|
||||
#{ret_msg, mode=OUT, jdbcType=VARCHAR}
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<select id="callProcOldDataDelete" parameterType="hashmap" statementType="CALLABLE" resultType="hashmap">
|
||||
<![CDATA[
|
||||
call PROC_EAI_INTRFC_DATA_DELETE(
|
||||
#{ar_days, mode=IN, jdbcType=INTEGER}
|
||||
,#{ret_proc_msg, mode=OUT, jdbcType=VARCHAR}
|
||||
)
|
||||
]]>
|
||||
</select>
|
||||
|
|
Loading…
Reference in New Issue