diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/SocketReciverController.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/SocketReciverController.java new file mode 100644 index 0000000..04dc0a7 --- /dev/null +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/SocketReciverController.java @@ -0,0 +1,38 @@ +package com.palnet.biz.api.ctr.cntrl.controller; + +import com.palnet.biz.api.ctr.cntrl.service.SocketReciverService; +import com.palnet.comn.model.GPModel; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * packageName : com.palnet.biz.api.ctr.cntrl.controller + * fileName : SocketReciverController + * author : dhji + * date : 2023-08-29(029) + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-08-29(029) dhji 최초 생성 + */ +@Slf4j +@RequiredArgsConstructor +@RestController +@RequestMapping("/api/server") +public class SocketReciverController { + + private final SocketReciverService socketReciverService; + @PostMapping("/receiver") + public ResponseEntity receiver(@RequestBody GPModel model) { + System.out.println("socket message : " + model); + log.info("socket message : {}", model); + socketReciverService.insert(model); + return ResponseEntity.ok().build(); + } +} diff --git a/src/main/java/com/palnet/biz/api/ctr/cntrl/service/SocketReciverService.java b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/SocketReciverService.java new file mode 100644 index 0000000..9414ce1 --- /dev/null +++ b/src/main/java/com/palnet/biz/api/ctr/cntrl/service/SocketReciverService.java @@ -0,0 +1,100 @@ +package com.palnet.biz.api.ctr.cntrl.service; + +import com.palnet.biz.api.comn.model.ControlGpsDataContext; +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.flt.FltPlanCtrCntrlRelRepository; +import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository; +import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository; +import com.palnet.biz.jpa.service.ctr.CtrCntrlJpaService; +import com.palnet.comn.model.GPDatabaseModel; +import com.palnet.comn.model.GPModel; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * packageName : com.palnet.biz.api.ctr.cntrl.service + * fileName : SocketReciverService + * author : dhji + * date : 2023-08-29(029) + * description : + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 2023-08-29(029) dhji 최초 생성 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SocketReciverService { + + private final CtrCntrlJpaService ctrCntrlJpaService; + private final PtyDronQueryRepository ptyDronQueryRepository; + private final ComArcrftBasRepository arcrftBasRepository; + private final ComIdntBasRepository idntBasRepository; + private final FltPlanQueryRepository fltPlanQueryRepository; + private final FltPlanCtrCntrlRelRepository ctrCntrlRelRepository; + + @Transactional + public void insert(GPModel model) { + GPDatabaseModel dbModel = new GPDatabaseModel(); + BeanUtils.copyProperties(model, dbModel); + + if("01".equals(model.getTypeCd())) { + String prodNumber = ptyDronQueryRepository.findIdntfNumByProdNumber(model.getObjectId()); + dbModel.setProdNumber(prodNumber); + + // 비행 이력 생성 + CtrCntrlBas ctrCntrlBas = ctrCntrlJpaService.insertCtrCntrlBas(dbModel); + + // 비행 이력, 비행 계획서 mapping + if ("PA".equals(model.getObjectId().substring(0,2))) { + FltPlanCtrCntrlRel fltPlanCtrCntrlRel = new FltPlanCtrCntrlRel(); + + // 1. 식별 번호의 소유자 정보 저장. + ComIdntfBas idntfBas = idntBasRepository.findById(model.getObjectId()).orElse(null); + + // 1-1. 식별 번호의 모델 정보 조회 + ComArcrftBas arcrftBas = arcrftBasRepository.findById(idntfBas.getArcrftSno()).orElse(null); + + if (idntfBas != null && arcrftBas != null) { + fltPlanCtrCntrlRel.setCntrlId(ctrCntrlBas.getCntrlId()); + fltPlanCtrCntrlRel.setIdntfNum(ctrCntrlBas.getIdntfNum()); + fltPlanCtrCntrlRel.setIdntfCstmrSno(idntfBas.getCstmrSno()); + fltPlanCtrCntrlRel.setGroupId(arcrftBas.getGroupId()); + } + + // 2. 해당 되는 비행계획서 정보 저장. + List planArcrft = + fltPlanQueryRepository.findByFlightPlanArcrft(ctrCntrlBas.getIdntfNum(), dbModel.getServerRcvDt()); + + if (!planArcrft.isEmpty()) { + for (FltPlanBas plan : planArcrft) { + fltPlanCtrCntrlRel.setPlanSno(plan.getPlanSno()); + } + } + + // 3. mapping 정보 주입. + if (!fltPlanCtrCntrlRel.getCntrlId().isEmpty()) { + ctrCntrlRelRepository.save(fltPlanCtrCntrlRel); + } + } + } + + // Drone인 경우에만 history 생성 + CtrCntrlHstry ctrCntrlHstry = ctrCntrlJpaService.insertCtrCntrlHstry(dbModel); + + if("01".equals(model.getTypeCd()) || "99".equals(model.getTypeCd())) { + ctrCntrlJpaService.insertCtrCntrlHstryArea(dbModel, ctrCntrlHstry.getHstrySno()); + } + + } +} diff --git a/src/main/java/com/palnet/biz/config/WebSecurityConfig.java b/src/main/java/com/palnet/biz/config/WebSecurityConfig.java index 71e8336..80fe559 100644 --- a/src/main/java/com/palnet/biz/config/WebSecurityConfig.java +++ b/src/main/java/com/palnet/biz/config/WebSecurityConfig.java @@ -38,6 +38,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final String[] PERMITTED_URL = { "/api/acnt/**", "/api/ctr/cntrl/id/**", + "/api/server/**", /* swagger v2 */ "/v2/api-docs", "/swagger-resources", diff --git a/src/main/java/com/palnet/server/collection/ChannelCollection.java b/src/main/java/com/palnet/server/collection/ChannelCollection.java index 5e7f318..6bf74e4 100644 --- a/src/main/java/com/palnet/server/collection/ChannelCollection.java +++ b/src/main/java/com/palnet/server/collection/ChannelCollection.java @@ -1,7 +1,5 @@ package com.palnet.server.collection; -import java.io.Serializable; - import io.netty.channel.Channel; import io.netty.channel.group.ChannelGroup; import io.netty.channel.group.DefaultChannelGroup;