From 8c69af99132d2bfb6c0c233263c4486e74f43b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?scnoh=28=EB=85=B8=EC=8A=B9=EC=B2=A0=29?= Date: Fri, 7 Oct 2022 10:54:34 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=ED=96=89=20=EC=A2=85=EB=A3=8C=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EC=88=98=EC=8B=A0=20=EC=A3=BC=EA=B8=B0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95:=205=EB=B6=84=20->=201=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/scheduler/ctr/CtrScheduler.java | 58 ++--- .../ctr/service/CtrSchedulerService.java | 202 ++---------------- src/main/resources/application.properties | 2 +- 3 files changed, 32 insertions(+), 230 deletions(-) diff --git a/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java b/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java index 046e0b7..74eca72 100644 --- a/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java +++ b/src/main/java/com/palnet/biz/scheduler/ctr/CtrScheduler.java @@ -20,60 +20,28 @@ public class CtrScheduler { private CtrSchedulerService service; private Logger logger = LoggerFactory.getLogger(getClass()); - + /** - * 실행 시점 : 10초에 한번 - * 실행 내용 : 특정시간 들어오지 않는 데이터 삭제 처리 + * TODO 비행 종료 처리 - 최신 수신 일로 부터 5분동안 데이터 수신 되지 않는 경우 종료 처리 + * + * 실행 주기 : 10초 */ - @Scheduled(fixedDelay = 1000 * 60) - public void removeCollection() { - logger.debug("=================== {removeCollection} ===================== "); - service.remove(); + @Scheduled(fixedDelay = 1000 * 10) + public void controlEndScheduler() { + logger.debug("=================== {Control End Scheduler} ===================== "); + service.controlEndProcess(); } /** - * 실행 시점 : 10초에 한번 - * 실행 내용 : Database GP 데이터 내용 저장 처리 - */ -// @Scheduled(fixedDelay = 1000 * 10) -// public void gpDataInsert() { -// logger.debug("=================== {gpDataInsert} ===================== "); -// service.insertGpData(); -// } - - /** - * 실행 시점 : 10초에 한번 - * 실행 내용 : 주소 변환 처리 + * TODO 비행 시작 지점 주소 변환 처리 + * + * 실행 주기 : 10초 */ @Scheduled(fixedDelay = 1000 * 10) - public void transferLocation() { + public void transferLocationScheduler() { logger.debug("=================== {transferLocation} ===================== "); - service.trnsLctnPrcss(); + service.transferLocationProcess(); } - - - /** - * 실행 시점 : 10분에 한번 - * 실행 내용 : 종료 처리 되지 않은 데이터 종료 처리 - */ -// @Scheduled(fixedDelay = 1000 * 60 * 10) -// public void endData() { -// logger.debug("=================== {endProc} ===================== "); -// service.endData(); -// } - - - /** - * 실행 시점 : 10분에 한번 - * 실행 내용 : 종료후 평균값 등을 계산 - */ -// @Scheduled(fixedDelay = 1000 * 60 * 10) -// public void endCalProc() { -// logger.debug("=================== {endProc} ===================== "); -// service.endData(); -// -// } - } diff --git a/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java b/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java index af8f909..43cb977 100644 --- a/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java +++ b/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java @@ -1,82 +1,44 @@ package com.palnet.biz.scheduler.ctr.service; import java.util.*; -import java.util.concurrent.ConcurrentLinkedQueue; import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryAreaRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryRepository; import com.palnet.biz.api.comn.model.ControlGpsDataContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; + import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlEndModel; import com.palnet.biz.jpa.entity.CtrCntrlHstry; import com.palnet.biz.jpa.entity.CtrCntrlHstryArea; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; -import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository; import com.palnet.biz.jpa.service.ctr.CtrCntrlJpaService; import com.palnet.biz.scheduler.ctr.model.CtrTrnsLctnModel; -import com.palnet.comn.collection.GPCollection; -import com.palnet.comn.collection.GPDatabaseCollection; -import com.palnet.comn.model.GPDatabaseModel; import com.palnet.comn.utils.DateUtils; @Service +@RequiredArgsConstructor public class CtrSchedulerService { - - - private GPCollection cic = new GPCollection(); - private GPDatabaseCollection gpdc = new GPDatabaseCollection(); - - @Autowired - private CtrCntrlJpaService service; - - @Autowired - private CtrCntrlQueryRepository query; - @Autowired - private CtrTrnsLctnService trnsService; - - @Autowired - private PtyDronQueryRepository dronQuery; - - @Autowired - private ControlGpsDataContext gpsDataContext; - - @Autowired - private CtrCntrlHstryRepository ctrCntrlHstryRepository; + private final CtrCntrlJpaService service; + private final CtrTrnsLctnService trnsService; + private final CtrCntrlQueryRepository ctrCntrlQueryRepository; + private final CtrCntrlHstryRepository ctrCntrlHstryRepository; + private final CtrCntrlBasRepository ctrCntrlBasRepository; + private final CtrCntrlHstryAreaRepository ctrCntrlHstryAreaRepository; + private final ControlGpsDataContext gpsDataContext; - @Autowired - private CtrCntrlBasRepository ctrCntrlBasRepository; - - @Autowired - private CtrCntrlHstryAreaRepository ctrCntrlHstryAreaRepository; - - - private Logger logger = LoggerFactory.getLogger(getClass()); - - @Value("${gp.remove.time}") - private long GP_REMOVE_TIME; - - @Value("${gp.insert.count}") - private long GP_INSERT_COUNT; - @Value("${gp.end.time}") private long GP_END_TIME; - - - + + /** - * 일정 주기로 위치 데이터가 오지 않는 데이터 중지 처리 - * 기준 - * 1) {param} 분 이상 데이터가 들어오지 않을 경우 - * 2) 마지막 데이터 속도가 0 , 고도가 0 (현재 적용 X) + * TODO 비행 종료 처리 - 최신 수신 일로 부터 5분동안 데이터 수신 되지 않는 경우 종료 처리 + * */ - public void remove() { + public void controlEndProcess() { Map keys = gpsDataContext.getAllKeys(); keys.forEach((key, value) -> { @@ -85,7 +47,7 @@ public class CtrSchedulerService { if(Objects.nonNull(history)) { long diffMinute = DateUtils.diffMinute(history.getSrvrRcvDt(), new Date()); - if(diffMinute > GP_REMOVE_TIME) { + if(diffMinute > GP_END_TIME) { ctrCntrlBasRepository.updateCntrlEndType("01", DateUtils.nowDate(), "99", history.getCntrlId()); /* 종료지점 주소 저장 */ @@ -107,41 +69,9 @@ public class CtrSchedulerService { } }); } - - - /*public void removeInfo() { - Map cicData = cic.getData(); - - GPModel model; - Date nowDate = new Date(); // 현재 시간 구하기 - - - Iterator itKey = cicData.keySet().iterator(); - - while (itKey.hasNext()) { - String index = itKey.next(); - - model = cicData.get(index); - Date lastRevDate = DateUtils.stringToDatetime(model.getServerRcvDt()); - long diffMinute = DateUtils.diffMinute(lastRevDate, nowDate); - - if(diffMinute > GP_REMOVE_TIME) { - model.setControlEndDt(DateUtils.getCurrentTime()); - model.setTypeCd("99"); - model.setAreaTrnsYn("N"); - cic.putDatabase(model); - - itKey.remove(); - } - - } - logger.debug("{removeInfo } collection size :: " + cicData.size() + ""); - - }*/ - - public void trnsLctnPrcss() { - List list = query.listCntrlHstryArea(); + public void transferLocationProcess() { + List list = ctrCntrlQueryRepository.listCntrlHstryArea(); if(list.size() > 0) { for(CtrCntrlHstryArea entity : list) { @@ -155,101 +85,5 @@ public class CtrSchedulerService { service.updateCtrCntrlHstryArea(lctnModel); } } - - - } - - public void insertGpData() { - ConcurrentLinkedQueue gpdcList = gpdc.getData(); - int count = 0; - Iterator itKey = gpdcList.iterator(); - logger.debug("SIZE >>>" + gpdcList.size()); - - GPDatabaseModel model; - - while (itKey.hasNext()) { - model = itKey.next(); - if(count == GP_INSERT_COUNT) { - break; - } - - logger.debug("%%%%" + model.getTypeCd()); - if(!model.getMessageType().equals("OPENSKY")) { - if(model.getTypeCd().equals("01")) { - //마스터 정보에저장 - //식별번호로 제작번호 알아오기 - String prodNumber = dronQuery.findIdntfNumByProdNumber(model.getObjectId()); - model.setProdNumber(prodNumber); - service.insertCtrCntrlBas(model); - - }else if(model.getTypeCd().equals("99")) { - //마스터 정보에 종료 처리 저장 - model.setEndTypeCd("01"); - service.updateCtrCntrlBas(model); - } - - CtrCntrlHstry hstryEntity = service.insertCtrCntrlHstry(model); - - if(model.getTypeCd().equals("01") || model.getTypeCd().equals("99")) { - service.insertCtrCntrlHstryArea(model, hstryEntity.getHstrySno()); - } - - } - itKey.remove(); - count ++; - } - } - - public void endData() { - List endList = query.endList(); - - Date nowDate = new Date(); // 현재 시간 구하기 - - for(CtrCntrlEndModel data : endList) { - long diffMinute = DateUtils.diffMinute(data.getSrvrRcvDt(), nowDate); - if(diffMinute > GP_END_TIME) { - GPDatabaseModel model = new GPDatabaseModel(); - model.setEndTypeCd("02"); - model.setControlId(data.getCntrlId());; - model.setTypeCd("99"); - model.setControlEndDt(DateUtils.getCurrentTime()); - service.updateCtrCntrlBas(model); - } - - - } - } - -// private static List dataList = Collections.synchronizedList(new ArrayList()); -// public static void main(String [] args) { -// int COUNT = 1000; -// int count =0; -// for(int i=0 ; i< 4000; i++) { -// -// -// GPDatabaseModel model = new GPDatabaseModel(); -// model.setControlId(i + " slfjwelfjklwjflwejflwejflwjfklwjlfwejlf"); -// dataList.add(model); -// } -// -// System.out.println("SIZE ============>" + dataList.size()); -// -// -// Iterator iter = dataList.iterator(); -// -// while (iter.hasNext()) { -// -// if(count == COUNT) { -// -// break; -// } -// count ++; -// GPDatabaseModel model = iter.next(); -// System.out.println("count ====> " + count + "model ============> " + model.getControlId()); -// iter.remove(); -// } -// -// -// } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 1f94f9f..572c3e1 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,7 +3,7 @@ ###### GP 데이터 데이터 저장 설정 ####### gp.remove.time = 5 gp.insert.count = 1000 -gp.end.time=10 +gp.end.time= 1 ####### Naver 주소변화 API 값 ############# naver.api.id=5md90yszqj