From e058e744eef6fecd0ba7ccc87dd6280cf5fa63c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?scnoh=28=EB=85=B8=EC=8A=B9=EC=B2=A0=29?= Date: Tue, 20 Sep 2022 11:05:31 +0900 Subject: [PATCH] =?UTF-8?q?socket=20server=20=EA=B5=AC=EC=A1=B0=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cntrl/controller/CtrCntrlController.java | 12 ++++ .../ctr/cntrl/service/CtrCntrlService.java | 56 ++++++++++++++++++- .../palnet/biz/config/WebSecurityConfig.java | 1 + .../biz/message/consumer/MessageConsumer.java | 2 +- src/main/resources/application.yml | 4 +- 5 files changed, 70 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java index a140e45..6cf50c9 100644 --- a/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java @@ -199,4 +199,16 @@ public class CtrCntrlController { return ResponseEntity.ok().body(new SuccessResponse(rs)); } + @GetMapping("/id/{id}") + public ResponseEntity getId(@PathVariable String id) { + Map result; + try { + result = service.getId(id); + } catch (Exception e) { + log.error("IGNORE : {}", e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body(new ErrorResponse("Server Error", "-1")); + } + return ResponseEntity.ok().body(new SuccessResponse(result)); + } } diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java index 1f935fc..68e06e0 100644 --- a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java @@ -7,11 +7,13 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; import com.palnet.biz.api.bas.flight.service.BasFlightMapper; +import com.palnet.biz.api.comn.model.ControlGpsDataContext; import com.palnet.biz.api.ctr.cntrl.model.*; import com.palnet.biz.jpa.entity.*; import com.palnet.biz.jpa.repository.com.ComArcrftBasRepository; import com.palnet.biz.jpa.repository.com.ComIdntBasRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; +import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogRepository; import com.palnet.biz.jpa.repository.flt.*; import com.palnet.comn.utils.AreaUtils; @@ -31,9 +33,11 @@ import org.springframework.transaction.annotation.Transactional; @Service @Log4j2 +@Transactional(readOnly = true) public class CtrCntrlService { private final CtrCntrlQueryRepository query; private final CtrCntrlBasRepository cntrlBasRepository; + private final CtrCntrlHstryRepository cntrlHstryRepository; private final CtrCntrlWarnLogRepository warnLogRepository; private final ComIdntBasRepository idntfRepository; private final ComArcrftBasRepository arcrftRepository; @@ -43,10 +47,12 @@ public class CtrCntrlService { private final FltPlanAreaRepository planAreaRepository; private final FltPlanAreaCoordRepository planCoordRepository; private final AreaUtils areaUtils; + private final ControlGpsDataContext shareContext; public CtrCntrlService(CtrCntrlQueryRepository query, CtrCntrlBasRepository cntrlBasRepository, + CtrCntrlHstryRepository cntrlHstryRepository, CtrCntrlWarnLogRepository warnLogRepository, ComIdntBasRepository idntfRepository, ComArcrftBasRepository arcrftRepository, @@ -55,9 +61,11 @@ public class CtrCntrlService { FltPlanPilotRepository planPilotRepository, FltPlanAreaRepository planAreaRepository, FltPlanAreaCoordRepository planCoordRepository, - AreaUtils areaUtils) { + AreaUtils areaUtils, + ControlGpsDataContext shareContext) { this.query = query; this.cntrlBasRepository = cntrlBasRepository; + this.cntrlHstryRepository = cntrlHstryRepository; this.warnLogRepository = warnLogRepository; this.idntfRepository = idntfRepository; this.arcrftRepository = arcrftRepository; @@ -67,6 +75,7 @@ public class CtrCntrlService { this.planAreaRepository = planAreaRepository; this.planCoordRepository = planCoordRepository; this.areaUtils = areaUtils; + this.shareContext = shareContext; } private Logger logger = LoggerFactory.getLogger(getClass()); @@ -184,6 +193,7 @@ public class CtrCntrlService { return warnLog; } + public List getArcrftWarnList(String id) { Map map = new HashMap<>(); List result = new ArrayList<>(); @@ -225,7 +235,7 @@ public class CtrCntrlService { * @param idntfNum * @return */ - @Transactional(readOnly = true) + public List getFlightPlan(String idntfNum) { List rs = new ArrayList<>(); @@ -368,4 +378,46 @@ public class CtrCntrlService { return rs; } + + + public Map getId(String id) { + Map result = new HashMap<>(); + + /* 식별번호의 가장 최근 이력 불러오기 */ + CtrCntrlBas latestControl = cntrlBasRepository.findFirstByIdntfNumOrderByCreateDtDesc(id).orElse(null); + + boolean isControl = false; + + if(latestControl != null) { + CtrCntrlHstry latestHistory = cntrlHstryRepository.findFirstByCntrlIdOrderBySrvrRcvDtDesc(latestControl.getCntrlId()); + long diffMinute = DateUtils.diffMinute(latestHistory.getSrvrRcvDt(), new Date()); + log.info("DIFF MINUTE : {}", diffMinute); + + if("01".equals(latestControl.getEndTypeCd()) || diffMinute > 5) { + isControl = false; + } + if(!"01".equals(latestControl.getEndTypeCd()) && diffMinute < 5) { + isControl = true; + } + } else { + isControl = false; + } + + if(isControl) { + result.put("controlId", latestControl.getCntrlId()); + result.put("typeCd", "02"); + result.put("areaTrnsYn", "E"); + } else { + String controlID = UUID.randomUUID().toString(); + + result.put("controlId", controlID); + result.put("typeCd", "01"); + result.put("areaTrnsYn", "N"); +// model.setControlStartDt(DateUtils.getCurrentTime()); + + // 기체 식별번호의 관제 ID 저장 (single ton) + shareContext.putIdntfKey(id, controlID); + } + return result; + } } diff --git a/src/main/java/com/palnet/biz/config/WebSecurityConfig.java b/src/main/java/com/palnet/biz/config/WebSecurityConfig.java index 4a306f9..71e8336 100644 --- a/src/main/java/com/palnet/biz/config/WebSecurityConfig.java +++ b/src/main/java/com/palnet/biz/config/WebSecurityConfig.java @@ -37,6 +37,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final String[] PERMITTED_URL = { "/api/acnt/**", + "/api/ctr/cntrl/id/**", /* swagger v2 */ "/v2/api-docs", "/swagger-resources", diff --git a/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java b/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java index 2498b7e..a688677 100644 --- a/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java +++ b/src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java @@ -41,7 +41,7 @@ public class MessageConsumer { messageService.insert(mapper); // GPS 정보 DB 동기화 처리 /* Websocket Model 메세지 서버로 위임 */ - messageService.sendToMessage(mapper); +// messageService.sendToMessage(mapper); } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 871fd25..7f35adb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -47,8 +47,8 @@ spring: hibernate: # use_sql_comments: true # use_sql_comments: false -# show_sql: true -# format_sql: true + show_sql: true + format_sql: true rabbitmq: host: 192.168.0.24 port: 5672