From c28bd422ef15e497de315162abae352507457c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lkd9125=28=EC=9D=B4=EA=B2=BD=EB=8F=84=29?= Date: Tue, 7 Nov 2023 17:31:08 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B9=84=ED=96=89=20=EC=A2=85=EB=A3=8C?= =?UTF-8?q?=EC=8B=9C=20=EC=BB=A8=ED=8A=B8=EB=A1=A4=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EB=94=94=EC=97=90=20=ED=95=B4=EB=8B=B9=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EA=B1=B4=EC=9D=98=20=EC=B4=9D=20=EB=B9=84=ED=96=89=EA=B1=B0?= =?UTF-8?q?=EB=A6=AC=20=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ctr/CtrCntrlHstryRepository.java | 3 +- .../ctr/service/CtrSchedulerService.java | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java index f7dfa4a7..2e03a427 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryRepository.java @@ -17,6 +17,7 @@ public interface CtrCntrlHstryRepository extends JpaRepository findFirstByCntrlIdOrderBySrvrRcvDtDesc(String cntrlId); List findByCntrlIdOrderByHstrySno(String cntrlId); - + + List findAllByCntrlIdOrderBySrvrRcvDt(String cntrlId); } diff --git a/pav-server/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java b/pav-server/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java index cfe4f87a..8269ea43 100644 --- a/pav-server/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java +++ b/pav-server/src/main/java/com/palnet/biz/scheduler/ctr/service/CtrSchedulerService.java @@ -7,11 +7,16 @@ 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 com.palnet.biz.api.ctr.cntrl.service.CtrCntrlService; + import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.locationtech.jts.geom.Coordinate; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import com.palnet.biz.jpa.entity.CtrCntrlBas; import com.palnet.biz.jpa.entity.CtrCntrlHstry; import com.palnet.biz.jpa.entity.CtrCntrlHstryArea; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; @@ -21,6 +26,7 @@ import com.palnet.comn.utils.DateUtils; @Service @RequiredArgsConstructor +@Slf4j public class CtrSchedulerService { private final CtrCntrlJpaService service; @@ -65,6 +71,18 @@ public class CtrSchedulerService { ctrCntrlHstryAreaRepository.save(area); + Double distance = getDistancSum(history.getCntrlId()); + if(distance == null) log.error("No Search - CntrlId => {}", history.getCntrlId()); + + CtrCntrlBas ctrCntrlBas = ctrCntrlBasRepository.findById(history.getCntrlId()).orElse(null); + + if(ctrCntrlBas != null){ + ctrCntrlBas.setTtlDstnc(distance); + ctrCntrlBas.setTtlDstncType("M"); + + ctrCntrlBasRepository.save(ctrCntrlBas); + } + gpsDataContext.removeIdntfKey(key); } } @@ -87,4 +105,32 @@ public class CtrSchedulerService { } } } + + /** + * cntrlId의 총 비행거리 + * @param cntrlId + * @return + */ + private Double getDistancSum(String cntrlId){ + List result = ctrCntrlHstryRepository.findAllByCntrlIdOrderBySrvrRcvDt(cntrlId); + if(result.size() == 0) return null; + + List distanceList = new ArrayList<>(); + + for(int i = 0; i < result.size(); i++){ + if(i == 0) continue; + + CtrCntrlHstry prevNode = result.get(i-1); + CtrCntrlHstry node = result.get(i); + + Coordinate prevCoord = new Coordinate(prevNode.getLat(), prevNode.getLon()); + Coordinate coord = new Coordinate(node.getLat(), node.getLon()); + + Double distance = CtrCntrlService.calculateDistance(prevCoord, coord); + + distanceList.add(distance); + } + + return distanceList.stream().mapToDouble(Double::doubleValue).sum(); + } }