diff --git a/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java b/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java index dc598ff..83e103c 100644 --- a/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java +++ b/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java @@ -39,7 +39,7 @@ public class AnlsHstryController { @GetMapping(value = "/list") public ResponseEntity list(AnlsHstryGroupModel rq) { - ComnPagingRs rs; + List rs = null; //입력값 검증 if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) { @@ -56,7 +56,7 @@ public class AnlsHstryController { .body(new ErrorResponse("Server Error", "-1")); } - return ResponseEntity.ok().body(new SuccessResponse(rs)); + return ResponseEntity.ok().body(new SuccessResponse(rs)); } diff --git a/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java b/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java index 6543eca..4676ed8 100644 --- a/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java +++ b/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java @@ -1,6 +1,8 @@ package com.palnet.biz.api.anls.hstry.service; import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; import java.util.List; import java.util.Optional; @@ -21,13 +23,20 @@ import com.palnet.biz.api.anls.hstry.model.AnlsHstryGroupModel; import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel; import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel; import com.palnet.biz.api.anls.hstry.model.AnlsHstryRsModel; +import com.palnet.biz.jpa.entity.ComArcrftBas; +import com.palnet.biz.jpa.entity.ComIdntfBas; import com.palnet.biz.jpa.entity.CtrCntrlBas; +import com.palnet.biz.jpa.entity.CtrCntrlHstryArea; import com.palnet.biz.jpa.entity.PtyCstmrGroup; +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.CtrCntrlHstryAreaRepository; import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; import com.palnet.biz.jpa.repository.pty.PtyCstmrGroupRepository; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; +import com.palnet.comn.utils.DateUtils; @Service public class AnlsHstryService { @@ -40,13 +49,23 @@ public class AnlsHstryService { @Autowired private PtyCstmrGroupRepository ptyCstmrGroupRepository; + @Autowired + private ComArcrftBasRepository comArcrftBasRepository; + + @Autowired + private ComIdntBasRepository comIdntBasRepository; + + @Autowired + private CtrCntrlHstryAreaRepository ctrCntrlHstryAreaRepository; + @Autowired private CtrCntrlQueryRepository query; @Autowired private JwtTokenUtil jwtTokenUtil; - public ComnPagingRs list(AnlsHstryGroupModel rq){ + //비행이력현황 list + public List list(AnlsHstryGroupModel rq){ List group = jwtTokenUtil.getGroupAuthByToken(); Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); String userAccount = null; @@ -57,20 +76,113 @@ public class AnlsHstryService { } ComnPagingRs response = new ComnPagingRs<>(); - + List returnList = new ArrayList<>(); + + //당일만 검색할 시 나오지 않는 오류 방지용으로 끝나는 날짜에 1일 더함 + Calendar end = Calendar.getInstance(); + end.setTime(DateUtils.stringToDate(rq.getEndDate())); + end.add(Calendar.DATE, 1); + Date stDate = DateUtils.stringToDate(rq.getStDate()); + Date endDate = end.getTime(); + Pageable pageable = PageRequest.of(rq.getPage()-1, rq.getRecord()); - PageImpl list = query.listCntrlBasRs(rq, cstmrSno, userAccount, pageable); - - long total = query.countCntrlBasRs(rq, cstmrSno, userAccount); - - long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); - - response.setItems(list.getContent()); - response.setTotal(total); - response.setPage(rq.getPage()); - response.setTotalPage(totalPage); + String idntfNum = rq.getSearch1(); + + if(rq.getSearch1() == null) { + idntfNum = ""; + } + + //GroupId로 ArcrftSno 찾기(그룹별로 비행이력 현황 보여주기 위해) + List arcrftSnoList = comArcrftBasRepository.findArcrftSno(rq.getGroupId()); + List idntfList = new ArrayList<>(); + for(ComArcrftBas bas : arcrftSnoList) { + //ArcrftSno로 idntfNum 찾기 + List list = comIdntBasRepository.findIdntfNum(bas.getArcrftSno()); + if(!list.isEmpty()) { + idntfList.addAll(list); + } + } + + //idntfNum으로 CntrlId 찾기 + List cntrlIdList = new ArrayList<>(); + for(ComIdntfBas idntf : idntfList) { + List list = ctrCntrlBasRepository.findCntrlId(stDate, endDate, idntf.getIdntfNum()); + if(!list.isEmpty()) { + cntrlIdList.addAll(list); + } + } + + //CntrlId로 Area 정보 찾기 + List areaList = new ArrayList<>(); + for(CtrCntrlBas bas : cntrlIdList) { + List list = ctrCntrlHstryAreaRepository.findHstryArea(bas.getCntrlId()); + if(!list.isEmpty()) { + areaList.addAll(list); + } + } + + //area 정보 returnList에 set + if(!areaList.isEmpty()) { + for(CtrCntrlHstryArea area : areaList) { + AnlsHstryRsModel model = new AnlsHstryRsModel(); + + model.setActnType(area.getActnType()); + model.setAreaNm(area.getAreaNm()); + model.setAreaType(area.getAreaType()); + model.setArea1(area.getArea1()); + model.setArea2(area.getArea2()); + model.setArea3(area.getArea3()); + model.setCntrlId(area.getCntrlId()); + model.setCreateDt(area.getCreateDt()); + model.setLandNm(area.getLandNm()); + model.setLandNum(area.getLandNum()); + model.setUpdateDt(area.getUpdateDt()); + model.setZipCd(area.getZipCd()); + returnList.add(model); + } + } + //bas 정보 cntrlId별로 찾기 + for(CtrCntrlBas cntrl : cntrlIdList) { + List basList = ctrCntrlBasRepository.findCntrlBas(stDate, endDate, cntrl.getCntrlId(), idntfNum); + + //bas 정보 returnList에 set + if(!basList.isEmpty()) { + for(CtrCntrlBas bas : basList) { + AnlsHstryRsModel model = new AnlsHstryRsModel(); + + model.setCntrlId(bas.getCntrlId()); + model.setAvrgSpeed(bas.getAvrgSpeed()); + model.setAvrgSpeedType(bas.getAvrgSpeedType()); + model.setBttrCnsmptn(bas.getBttrCnsmptn()); + model.setCntrlEndDt(bas.getCntrlEndDt()); + model.setCntrlStDt(bas.getCntrlStDt()); + model.setCreateDt(bas.getCreateDt()); + model.setEndTypeCd(bas.getEndTypeCd()); + model.setFlghtStDt(bas.getFlghtStDt()); + model.setIdntfNum(bas.getIdntfNum()); + model.setObjectTypeCd(bas.getObjectTypeCd()); + model.setStatusCd(bas.getStatusCd()); + model.setTtlDstnc(bas.getTtlDstnc()); + model.setTtlDstncType(bas.getTtlDstncType()); + model.setTtlTime(bas.getTtlTime()); + model.setTtlTimeType(bas.getTtlTimeType()); + model.setUpdateDt(bas.getUpdateDt()); + returnList.add(model); + } + } + } + + +// long total = query.countCntrlBasRs(rq, cstmrSno, userAccount); +// +// long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); +// +// response.setItems(list.getContent()); +// response.setTotal(total); +// response.setPage(rq.getPage()); +// response.setTotalPage(totalPage); - return response; + return returnList; } public AnlsHstryModel detail(String cntrlId) throws Exception{ diff --git a/src/main/java/com/palnet/biz/jpa/repository/com/ComArcrftBasRepository.java b/src/main/java/com/palnet/biz/jpa/repository/com/ComArcrftBasRepository.java index 2d5cc2b..9745574 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/com/ComArcrftBasRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/com/ComArcrftBasRepository.java @@ -2,6 +2,7 @@ package com.palnet.biz.jpa.repository.com; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.palnet.biz.jpa.entity.ComArcrftBas; @@ -14,4 +15,8 @@ import java.util.List; @Repository public interface ComArcrftBasRepository extends JpaRepository{ List findByGroupIdOrderByArcrftSnoAsc(String groupId); + + @Query("select c from ComArcrftBas c " + + "where c.groupId = :groupId " ) + List findArcrftSno(@Param("groupId") String groupId); } diff --git a/src/main/java/com/palnet/biz/jpa/repository/com/ComIdntBasRepository.java b/src/main/java/com/palnet/biz/jpa/repository/com/ComIdntBasRepository.java index 3e72c2a..eb6dac9 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/com/ComIdntBasRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/com/ComIdntBasRepository.java @@ -1,5 +1,7 @@ package com.palnet.biz.jpa.repository.com; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -15,4 +17,7 @@ public interface ComIdntBasRepository extends JpaRepository @Query(value = "DELETE FROM COM_IDNTF_BAS WHERE ARCRFT_SNO = :arcrftSno", nativeQuery = true) int deleteByArcrftSno(@Param("arcrftSno") int arcrftSno); + @Query("select c from ComIdntfBas c " + + "where c.arcrftSno = :arcrftSno " ) + List findIdntfNum(@Param("arcrftSno") int arcrftSno); } diff --git a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java index 0fcf0c2..4765281 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlBasRepository.java @@ -10,6 +10,7 @@ import com.palnet.biz.jpa.entity.CtrCntrlBas; import org.springframework.transaction.annotation.Transactional; import java.util.Date; +import java.util.List; import java.util.Optional; @@ -27,5 +28,17 @@ public interface CtrCntrlBasRepository extends JpaRepository findFirstByIdntfNumOrderByCreateDtDesc(String idntfNum); - + + @Query("select c from CtrCntrlBas c " + + "where c.cntrlStDt >= :cntrlStDt " + + "and c.cntrlEndDt <= :cntrlEndDt " + + "and c.cntrlId = :cntrlId " + + "and c.idntfNum like %:idntfNum% " ) + List findCntrlBas(@Param("cntrlStDt") Date cntrlStDt, @Param("cntrlEndDt") Date cntrlEndDt, @Param("cntrlId") String cntrlId, @Param("idntfNum") String idntfNum); + + @Query("select c from CtrCntrlBas c " + + "where c.cntrlStDt >= :cntrlStDt " + + "and c.cntrlEndDt <= :cntrlEndDt " + + "and c.idntfNum = :idntfNum" ) + List findCntrlId(@Param("cntrlStDt") Date cntrlStDt, @Param("cntrlEndDt") Date cntrlEndDt, @Param("idntfNum") String idntfNum); } diff --git a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryAreaRepository.java b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryAreaRepository.java index 5cb47e2..1a8f084 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryAreaRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlHstryAreaRepository.java @@ -1,6 +1,10 @@ package com.palnet.biz.jpa.repository.ctr; +import java.util.List; + import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.palnet.biz.jpa.entity.CtrCntrlHstryArea; @@ -8,4 +12,8 @@ import com.palnet.biz.jpa.entity.CtrCntrlHstryArea; @Repository public interface CtrCntrlHstryAreaRepository extends JpaRepository{ + @Query("select c from CtrCntrlHstryArea c " + + "where c.cntrlId = :cntrlId") + List findHstryArea(@Param("cntrlId") String cntrlId); + }