From ceab86197500dd4fdd6f496acb039ea5fd26d0c5 Mon Sep 17 00:00:00 2001 From: MonHun Date: Sat, 29 Jun 2024 12:07:25 +0900 Subject: [PATCH] win 0628 --- pom.xml | 6 + .../gw/eyegw/controller/MainController.java | 83 +++++++++++-- .../kr/gmtc/gw/eyegw/db1/EaiProcMapper.java | 17 +-- .../kr/gmtc/gw/eyegw/db1/EaiProcService.java | 36 +++--- .../eyegw/satats/IntrfcRecvStatsManager.java | 116 ++++++++++++++++++ .../gw/eyegw/satats/IntrfcRecvStatsVO.java | 16 +++ src/main/resources/logback-spring.xml | 18 +++ src/main/resources/mapper/DB1/eai_proc.xml | 55 +++++++-- 8 files changed, 312 insertions(+), 35 deletions(-) create mode 100644 src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsManager.java create mode 100644 src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsVO.java diff --git a/pom.xml b/pom.xml index ac2922d..6c6b41c 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,12 @@ 3.0.0 + + org.projectlombok + lombok + true + + kr.gmt.so state-spring-boot-starter diff --git a/src/main/java/kr/gmtc/gw/eyegw/controller/MainController.java b/src/main/java/kr/gmtc/gw/eyegw/controller/MainController.java index 5abe8d9..cbeb60a 100644 --- a/src/main/java/kr/gmtc/gw/eyegw/controller/MainController.java +++ b/src/main/java/kr/gmtc/gw/eyegw/controller/MainController.java @@ -28,6 +28,7 @@ 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 implements ApplicationListener { @@ -83,6 +84,8 @@ public class MainController implements ApplicationListener { private boolean swBeforeStatus = true; + private IntrfcRecvStatsManager recvStatsMgr; + /** 초기화 실패 시 프로그램 종료 */ // private void systemError() { // // logger.writeLevelLog("-- FAIL TO STARTUP --", LogLevelType.LOG_ERROR, "AllLog"); @@ -110,6 +113,8 @@ public class MainController implements ApplicationListener { public void initialize() { try { + recvStatsMgr = new IntrfcRecvStatsManager(); + // 업무 스래드(프로시저 호출) listCustomThreads = new ArrayList(); @@ -238,11 +243,21 @@ public class MainController implements ApplicationListener { if( Integer.parseInt(sCnt) > 0 ) { LocalDateTime dt_before = LocalDateTime.now(); + + Map paramMap = new HashMap<>(); + + paramMap.put("ar_dt", "%"); + paramMap.put("ret_minDt", ""); + paramMap.put("ret_procCnt", 0); - eaiProcService.callProcArtsArr(); + //DB 프로시져 Call + eaiProcService.callProcArtsArr(paramMap); Duration diff = Duration.between(dt_before, LocalDateTime.now()); logger.info("callProcArtsArr Call " + sCnt + "건 " + diff.toMillis() + "msec"); + + // 수신(처리) 건수 집계 -> ELK전송용 + recvStatsMgr.writeStatsLog_KST((String) paramMap.get("ret_minDt"), "103", "ARTS_ARR", (int) paramMap.get("ret_procCnt"), 0); } // Thread.sleep(3000); @@ -261,10 +276,19 @@ public class MainController implements ApplicationListener { LocalDateTime dt_before = LocalDateTime.now(); - eaiProcService.callProcArtsDep(); + Map 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); } @@ -284,10 +308,19 @@ public class MainController implements ApplicationListener { LocalDateTime dt_before = LocalDateTime.now(); - eaiProcService.callProcAcdmArr(); + Map 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); @@ -305,10 +338,19 @@ public class MainController implements ApplicationListener { LocalDateTime dt_before = LocalDateTime.now(); - eaiProcService.callProcAcdmDep(); + Map 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); @@ -326,10 +368,19 @@ public class MainController implements ApplicationListener { LocalDateTime dt_before = LocalDateTime.now(); - eaiProcService.callProcGam(); + Map 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); @@ -348,10 +399,19 @@ public class MainController implements ApplicationListener { LocalDateTime dt_before = LocalDateTime.now(); - eaiProcService.callProcAmos(); + Map 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); @@ -369,10 +429,19 @@ public class MainController implements ApplicationListener { LocalDateTime dt_before = LocalDateTime.now(); - eaiProcService.callProcNotam(); + Map 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); diff --git a/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcMapper.java b/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcMapper.java index 8829a1b..918f8ea 100644 --- a/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcMapper.java +++ b/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcMapper.java @@ -1,16 +1,19 @@ package kr.gmtc.gw.eyegw.db1; +import java.util.Map; + import org.apache.ibatis.annotations.Mapper; @Mapper public interface EaiProcMapper { - void callProcArtsArr(); - void callProcArtsDep(); - void callProcAcdmArr(); - void callProcAcdmDep(); - void callProcGam(); + void callProcArtsArr(Map parameterMap); + void callProcArtsDep(Map parameterMap); + void callProcAcdmArr(Map parameterMap); + void callProcAcdmDep(Map parameterMap); + void callProcGam(Map parameterMap); - void callProcAmos(); - void callProcNotam(); + void callProcAmos(Map parameterMap); + void callProcNotam(Map parameterMap); + void callProcAll(Map parameterMap); } diff --git a/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcService.java b/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcService.java index 3d11bc0..be5187a 100644 --- a/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcService.java +++ b/src/main/java/kr/gmtc/gw/eyegw/db1/EaiProcService.java @@ -1,5 +1,7 @@ package kr.gmtc.gw.eyegw.db1; +import java.util.Map; + import org.springframework.stereotype.Service; @Service @@ -10,45 +12,51 @@ public class EaiProcService { this.ueaiProcMapper = ueaiProcMapper; } - public void callProcArtsArr() { + public void callProcArtsArr(Map parameterMap) { - ueaiProcMapper.callProcArtsArr(); + ueaiProcMapper.callProcArtsArr(parameterMap); } - public void callProcArtsDep() { + public void callProcArtsDep(Map parameterMap) { - ueaiProcMapper.callProcArtsDep(); + ueaiProcMapper.callProcArtsDep(parameterMap); } - public void callProcAcdmArr() { + public void callProcAcdmArr(Map parameterMap) { - ueaiProcMapper.callProcAcdmArr(); + ueaiProcMapper.callProcAcdmArr(parameterMap); } - public void callProcAcdmDep() { + public void callProcAcdmDep(Map parameterMap) { - ueaiProcMapper.callProcAcdmDep(); + ueaiProcMapper.callProcAcdmDep(parameterMap); } - public void callProcGam() { + public void callProcGam(Map parameterMap) { - ueaiProcMapper.callProcGam(); + ueaiProcMapper.callProcGam(parameterMap); } - public void callProcAmos() { + public void callProcAmos(Map parameterMap) { - ueaiProcMapper.callProcAmos(); + ueaiProcMapper.callProcAmos(parameterMap); } - public void callProcNotam() { + public void callProcNotam(Map parameterMap) { - ueaiProcMapper.callProcNotam(); + ueaiProcMapper.callProcNotam(parameterMap); + + } + + public void callProcAll(Map parameterMap) { + + ueaiProcMapper.callProcAll(parameterMap); } diff --git a/src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsManager.java b/src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsManager.java new file mode 100644 index 0000000..77bb718 --- /dev/null +++ b/src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsManager.java @@ -0,0 +1,116 @@ +package kr.gmtc.gw.eyegw.satats; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class IntrfcRecvStatsManager { + + private Logger logger = LoggerFactory.getLogger("STATS"); + + ObjectMapper mapper = new ObjectMapper(); + + DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss.SSS"); + DateFormat cnvDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); + + public IntrfcRecvStatsManager(){ + } + + public void writeStatsLog_KST(String strRecvDate, String strIntrfcId, String strIntrfcNm, int iRecvCo, int iParseCo){ + + IntrfcRecvStatsVO stsVO = new IntrfcRecvStatsVO(); + + stsVO.setIntrfc_dt(strRecvDate); + stsVO.setIntrfc_id(strIntrfcId); + stsVO.setIntrfc_nm(strIntrfcNm); + stsVO.setRecv_co(iRecvCo); + stsVO.setParse_co(iParseCo); + + String cnvJsonString = ""; + + try { + cnvJsonString = mapper.writeValueAsString(stsVO); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + logger.info(cnvJsonString); + + } + + public void writeStatsLog(String strRecvDate, String strIntrfcId, String strIntrfcNm, int iRecvCo, int iParseCo){ + + IntrfcRecvStatsVO stsVO = new IntrfcRecvStatsVO(); + + String strCnvDate = convertDate(strRecvDate); + + stsVO.setIntrfc_dt(strCnvDate); + stsVO.setIntrfc_id(strIntrfcId); + stsVO.setIntrfc_nm(strIntrfcNm); + stsVO.setRecv_co(iRecvCo); + stsVO.setParse_co(iParseCo); + + String cnvJsonString = ""; + + try { + cnvJsonString = mapper.writeValueAsString(stsVO); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + logger.info(cnvJsonString); + + } + + + private String convertDate(String p_strDate){ + + String strCnvDate = ""; + + DateFormat df; + + Calendar cal = Calendar.getInstance(); + + if(p_strDate == null || p_strDate.equals("")){ + strCnvDate = dateFormat.format(new Date()); + }else{ + + // 1. 포멧 변경 + // 2. UTC -> KST + + if(p_strDate.length() > 18 ){ + df = cnvDateFormat; + }else{ + df = dateFormat; + } + + Date cnvDate = null; + + try { + cnvDate = df.parse(p_strDate); + } catch (ParseException e) { + e.printStackTrace(); + } + + cal.setTime(cnvDate); + cal.add(Calendar.HOUR_OF_DAY, 9); + + cnvDate = new Date(cal.getTimeInMillis()); + + strCnvDate = dateFormat.format(cnvDate); + } + + + return strCnvDate; + } + + +} diff --git a/src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsVO.java b/src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsVO.java new file mode 100644 index 0000000..c67942a --- /dev/null +++ b/src/main/java/kr/gmtc/gw/eyegw/satats/IntrfcRecvStatsVO.java @@ -0,0 +1,16 @@ +package kr.gmtc.gw.eyegw.satats; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class IntrfcRecvStatsVO { + + private String intrfc_dt; + private String intrfc_id; + private String intrfc_nm; + private int recv_co; + private int parse_co; + +} diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 9455c2c..0865f9d 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -100,6 +100,19 @@ + + ${LOG_PATH}${file.separator}STATS${file.separator}stats.log + + %msg%n + + + ${LOG_PATH}${file.separator}STATS${file.separator}stats.%d{yyyy-MM-dd}.log + + 30 + + + + + +