Browse Source

승인 목록 및 상세 기본올림

pull/10/head
지대한 12 months ago
parent
commit
941de40021
  1. 111
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancAprvController.java
  2. 21
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvListRq.java
  3. 55
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvRs.java
  4. 36
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvMapper.java
  5. 60
      pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvService.java
  6. 1
      pav-server/src/main/java/com/palnet/biz/api/comn/sms/service/ComnSmsMapper.java
  7. 21
      pav-server/src/main/java/com/palnet/biz/jpa/model/LaancAprvSearchDto.java
  8. 57
      pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanArcrftDto.java
  9. 41
      pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanAreaDto.java
  10. 55
      pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanDto.java
  11. 43
      pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanPilotDto.java
  12. 32
      pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanareaCoordDto.java
  13. 369
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java
  14. 28
      pav-server/src/main/java/com/palnet/comn/utils/PageUtils.java
  15. 4
      pav-server/src/main/resources/application-database.yml
  16. 37
      pav-server/src/test/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvServiceTest.java
  17. 35
      pav-server/src/test/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepositoryTest.java

111
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/controller/BasLaancAprvController.java

@ -0,0 +1,111 @@
package com.palnet.biz.api.bas.laanc.controller;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvListRq;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs;
import com.palnet.biz.api.bas.laanc.service.BasLaancAprvService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.comn.exception.CustomException;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
/**
* packageName : com.palnet.biz.api.bas.laanc.controller
* fileName : BasLaancAprvController
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Slf4j
@Tag(name = "LAANC 승인", description = "LAANC 승인 관련 API")
@RequiredArgsConstructor
@RestController
@RequestMapping("/api/bas/laanc/aprv")
public class BasLaancAprvController {
private final BasLaancAprvService basLaancAprvService;
/**
* laanc 승인 목록
* @param rq
* @param pageable
* @return
*/
@ApiOperation(value = "LAANC 승인 목록")
@Tag(name = "LAANC 승인", description = "LAANC 승인 관련 API")
@GetMapping("/list")
public ResponseEntity<? extends BasicResponse> getLaancAprvList(BasLaancAprvListRq rq, Pageable pageable) {
Page<BasLaancAprvRs> rs = null;
try {
log.debug(">>> rq : {}", rq);
rs = basLaancAprvService.getLaancAprvList(rq, pageable);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<String, Object>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : ", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
if(pageable == null) {
return ResponseEntity.ok().body(new SuccessResponse<>(rs.getContent()));
}
return ResponseEntity.ok().body(new SuccessResponse<>(rs));
}
/**
* laanc 승인 상세
* @param planSno
* @return
*/
@ApiOperation(value = "LAANC 승인 상세 조회")
@Tag(name = "LAANC 승인", description = "LAANC 승인 관련 API")
@GetMapping("/detail/{planSno}")
public ResponseEntity<? extends BasicResponse> getLaancAprvDetail(@PathVariable("planSno") String planSno) {
BasLaancAprvRs rs = null;
try {
log.debug(">>> rq : {}", planSno);
rs = basLaancAprvService.getLaancAprvDetail(planSno);
log.debug(">>> rs : {}", rs);
} catch (CustomException e) {
Map<String, Object> resultMap = new HashMap<String, Object>();
log.error("IGNORE : ", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
resultMap.put("errorMessage", e.getMessage());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} 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<>(rs));
}
}

21
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvListRq.java

@ -0,0 +1,21 @@
package com.palnet.biz.api.bas.laanc.model;
import lombok.Builder;
import lombok.Data;
/**
* packageName : com.palnet.biz.api.bas.laanc.model
* fileName : BasLaancAprvListRq
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
public class BasLaancAprvListRq {
}

55
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/model/BasLaancAprvRs.java

@ -0,0 +1,55 @@
package com.palnet.biz.api.bas.laanc.model;
import com.palnet.biz.jpa.entity.type.FltPurpose;
import com.palnet.biz.jpa.entity.type.FltType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
import java.util.List;
/**
* packageName : com.palnet.biz.api.bas.laanc.model
* fileName : BasLaancAprvRs
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BasLaancAprvRs {
private Integer planSno;
private String groupId;
private Integer cstmrSno;
private String memberName;
private String email;
private String hpno;
private String clncd;
private String addr;
private String addrDtlCn;
private String zip;
private Instant schFltStDt;
private Instant schFltEndDt;
private FltPurpose fltPurpose;
private FltType fltType;
private String aprvlYn;
private Instant aprvlDt;
private String delYn;
private String createUserId;
private Instant createDt;
private String updateUserId;
private Instant updateDt;
private String serviceType;
private String corpRegYn;
private List<BasLaancAreaModel> areaList;
private List<BasLaancArcrftModel> arcrftList;
private List<BasLaancPilotModel> pilotList;
}

36
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvMapper.java

@ -0,0 +1,36 @@
package com.palnet.biz.api.bas.laanc.service;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvListRq;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs;
import com.palnet.biz.jpa.model.LaancAprvSearchDto;
import com.palnet.biz.jpa.model.LaancPlanDto;
import org.mapstruct.Mapper;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* packageName : com.palnet.biz.api.bas.laanc.service
* fileName : BasLaancMapper
* author : dhji
* date : 2023-09-22(022)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-09-22(022) dhji 최초 생성
*/
@Mapper(unmappedSourcePolicy = ReportingPolicy.IGNORE, unmappedTargetPolicy = ReportingPolicy.IGNORE, nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
public interface BasLaancAprvMapper {
BasLaancAprvMapper MAPPER = Mappers.getMapper(BasLaancAprvMapper.class);
LaancAprvSearchDto toDto(BasLaancAprvListRq rq);
BasLaancAprvRs toRs(LaancPlanDto dto);
List<BasLaancAprvRs> toRsList(List<LaancPlanDto> dto);
}

60
pav-server/src/main/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvService.java

@ -0,0 +1,60 @@
package com.palnet.biz.api.bas.laanc.service;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvListRq;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs;
import com.palnet.biz.jpa.model.LaancAprvSearchDto;
import com.palnet.biz.jpa.model.LaancPlanDto;
import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
import com.palnet.comn.utils.PageUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
/**
* packageName : com.palnet.biz.api.bas.laanc.service
* fileName : BasLaancAprvService
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class BasLaancAprvService {
private final FltPlanQueryRepository fltPlanQueryRepository;
/**
* laanc 승인 목록
* @param rq
* @param pageable
* @return
*/
public Page<BasLaancAprvRs> getLaancAprvList(BasLaancAprvListRq rq, Pageable pageable) {
LaancAprvSearchDto searchDto = BasLaancAprvMapper.MAPPER.toDto(rq);
Page<LaancPlanDto> result = fltPlanQueryRepository.findAllAprvListBySearch(searchDto, pageable);
Page<BasLaancAprvRs> rs = PageUtils.convert(result, BasLaancAprvMapper.MAPPER.toRsList(result.getContent()));
return rs;
}
/**
* laanc 승인 상세
* @param planSno
* @return
*/
public BasLaancAprvRs getLaancAprvDetail(String planSno) {
if(planSno == null) throw new CustomException(ErrorCode.NON_VALID_PARAMETER);
LaancPlanDto result = fltPlanQueryRepository.findAprvById(Integer.parseInt(planSno));
BasLaancAprvRs rs = BasLaancAprvMapper.MAPPER.toRs(result);
return rs;
}
}

1
pav-server/src/main/java/com/palnet/biz/api/comn/sms/service/ComnSmsMapper.java

@ -1,6 +1,5 @@
package com.palnet.biz.api.comn.sms.service;
import com.palnet.biz.api.bas.laanc.service.BasLaancMapper;
import com.palnet.biz.api.comn.sms.model.ComnSmsLaancAprovModel;
import com.palnet.biz.jpa.entity.SuredataEntity;
import org.mapstruct.Mapper;

21
pav-server/src/main/java/com/palnet/biz/jpa/model/LaancAprvSearchDto.java

@ -0,0 +1,21 @@
package com.palnet.biz.jpa.model;
import lombok.Builder;
import lombok.Data;
/**
* packageName : com.palnet.biz.api.bas.laanc.model
* fileName : LaancAprvSearchDto
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
public class LaancAprvSearchDto {
private String serach;
}

57
pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanArcrftDto.java

@ -0,0 +1,57 @@
package com.palnet.biz.jpa.model;
import com.palnet.biz.jpa.entity.type.ArcrftTypeCd;
import com.palnet.biz.jpa.entity.type.ArcrftWghtCd;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
/**
* packageName : com.palnet.biz.jpa.model
* fileName : LaancPlanArcrftDto
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LaancPlanArcrftDto {
private Integer planArcrftSno;
private Integer planSno;
private Integer arcrftSno;
private String idntfNum;
private String groupNm;
private String prdctNum;
private ArcrftTypeCd arcrftTypeCd;
private String arcrftModelNm;
private String prdctCmpnNm;
private Instant prdctDate;
private double arcrftLngth;
private double arcrftWdth;
private double arcrftHght;
private double arcrftWght;
private ArcrftWghtCd arcrftWghtCd;
private String wghtTypeCd;
private String imageUrl;
private double takeoffWght;
private String useYn;
private String cameraYn;
private String insrncYn;
private String ownerNm;
private String createUserId;
private Instant createDt;
private String updateUserId;
private Instant updateDt;
private String acrftInsuranceYn;
private Instant insuranceExperiod;
private String corporationNm;
}

41
pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanAreaDto.java

@ -0,0 +1,41 @@
package com.palnet.biz.jpa.model;
import com.palnet.biz.jpa.entity.type.FltMethod;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
import java.util.List;
/**
* packageName : com.palnet.biz.jpa.model
* fileName : LaancPlanAreaDto
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LaancPlanAreaDto {
private Integer planAreaSno;
private Integer planSno;
private String areaType;
private FltMethod fltMethod;
private String fltAreaAddr;
private Integer bufferZone;
private String fltElev;
private String createUserId;
private Instant createDt;
private String updateUserId;
private Instant updateDt;
private String fltMothoeRm;
private List<LaancPlanareaCoordDto> coordList;
}

55
pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanDto.java

@ -0,0 +1,55 @@
package com.palnet.biz.jpa.model;
import com.palnet.biz.jpa.entity.type.FltPurpose;
import com.palnet.biz.jpa.entity.type.FltType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
import java.util.List;
/**
* packageName : com.palnet.biz.api.bas.laanc.model
* fileName : LaancAprvDto
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LaancPlanDto {
private Integer planSno;
private String groupId;
private Integer cstmrSno;
private String memberName;
private String email;
private String hpno;
private String clncd;
private String addr;
private String addrDtlCn;
private String zip;
private Instant schFltStDt;
private Instant schFltEndDt;
private FltPurpose fltPurpose;
private FltType fltType;
private String aprvlYn;
private Instant aprvlDt;
private String delYn;
private String createUserId;
private Instant createDt;
private String updateUserId;
private Instant updateDt;
private String serviceType;
private String corpRegYn;
private List<LaancPlanAreaDto> areaList;
private List<LaancPlanArcrftDto> arcrftList;
private List<LaancPlanPilotDto> pilotList;
}

43
pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanPilotDto.java

@ -0,0 +1,43 @@
package com.palnet.biz.jpa.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
/**
* packageName : com.palnet.biz.jpa.model
* fileName : LaancPlanPilotDto
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LaancPlanPilotDto {
private Integer planPilotSno;
private Integer planSno;
private Integer cstmrSno;
private String groupNm;
private String memberName;
private String email;
private String hpno;
private String clncd;
private String addr;
private String addrDtlCn;
private String zip;
private String qlfcNo;
private String carrer;
private String createUserId;
private Instant createDt;
private String updateUserId;
private Instant updateDt;
}

32
pav-server/src/main/java/com/palnet/biz/jpa/model/LaancPlanareaCoordDto.java

@ -0,0 +1,32 @@
package com.palnet.biz.jpa.model;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.Instant;
/**
* packageName : com.palnet.biz.jpa.model
* fileName : LaancPlanareaCoordDto
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LaancPlanareaCoordDto {
private Integer planAreaCoordSno;
private Integer planAreaSno;
private double lon;
private double lat;
private String createUserId;
private Instant createDt;
}

369
pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

@ -1,33 +1,9 @@
package com.palnet.biz.jpa.repository.flt;
import java.time.Instant;
import java.util.List;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanArcrftModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaCoordRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel;
import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs;
import com.palnet.biz.api.bas.flight.model.*;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.jpa.entity.FltPlanBas;
import com.palnet.biz.jpa.entity.QComArcrftBas;
import com.palnet.biz.jpa.entity.QComIdntfBas;
import com.palnet.biz.jpa.entity.QCtrCntrlBas;
import com.palnet.biz.jpa.entity.QCtrCntrlHstryArea;
import com.palnet.biz.jpa.entity.QFltPlanArcrft;
import com.palnet.biz.jpa.entity.QFltPlanArea;
import com.palnet.biz.jpa.entity.QFltPlanAreaCoord;
import com.palnet.biz.jpa.entity.QFltPlanBas;
import com.palnet.biz.jpa.entity.QPtyCstmrDtl;
import com.palnet.biz.jpa.entity.QPtyCstmrGroup;
import com.palnet.biz.jpa.entity.QPtyGroupBas;
import com.palnet.biz.jpa.entity.*;
import com.palnet.biz.jpa.model.*;
import com.palnet.comn.utils.DateUtils;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.group.GroupBy;
@ -39,12 +15,22 @@ import com.querydsl.core.types.dsl.DateTemplate;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.core.types.dsl.StringTemplate;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import java.time.Instant;
import java.util.List;
import java.util.Optional;
@Log4j2
@Slf4j
@Repository
@RequiredArgsConstructor
public class FltPlanQueryRepository {
@ -67,7 +53,7 @@ public class FltPlanQueryRepository {
if (rq.getCstmrSno() != null) {
// if(masterAccount.equals("USER")) {
if(masterAccount.equals("NORMAL")) {
if (masterAccount.equals("NORMAL")) {
builder.and(bas.cstmrSno.eq(rq.getCstmrSno()));
}
}
@ -137,6 +123,7 @@ public class FltPlanQueryRepository {
return new PageImpl<>(r, pageable, r.size());
}
public long listPlanCount(BasFlightPlanListRq rq, String masterAccount) {
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
QFltPlanArea area = QFltPlanArea.fltPlanArea;
@ -149,7 +136,7 @@ public class FltPlanQueryRepository {
if (rq.getCstmrSno() != null) {
// if(masterAccount.equals("USER")) {
if(masterAccount.equals("NORMAL")) {
if (masterAccount.equals("NORMAL")) {
builder.and(bas.cstmrSno.eq(rq.getCstmrSno()));
}
}
@ -209,15 +196,16 @@ public class FltPlanQueryRepository {
))
);
long cnt = 0;
for(BasFlightPlanModel list : r ) {
for (BasFlightPlanModel list : r) {
cnt++;
}
return cnt;
}
//동일 기체 등록시 비행시간 중복여부 조회
public List<BasFlightPlanModel> arcrftCheck(BasFlightPlanModel rq, String idntfNum){
public List<BasFlightPlanModel> arcrftCheck(BasFlightPlanModel rq, String idntfNum) {
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
@ -247,8 +235,9 @@ public class FltPlanQueryRepository {
return list;
}
// 비행계획구역 설정시 같은 시간대에 구역이 중복되는지 조회
public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq){
public List<BasFlightPlanModel> CoordCheck(BasFlightPlanModel rq) {
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
List<BasFlightPlanModel> list = query
@ -308,8 +297,9 @@ public class FltPlanQueryRepository {
return list;
}
//CoordCheck에 들어갈 count
public List<BasFlightPlanAreaCoordRq> CoordCount(BasFlightPlanModel rq){
public List<BasFlightPlanAreaCoordRq> CoordCount(BasFlightPlanModel rq) {
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord;
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
@ -347,6 +337,7 @@ public class FltPlanQueryRepository {
.fetch();
return list;
}
// 조종사 조회
public List<BasFlightPlanPilotModel> listPilot(String groupId) {
// QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas;
@ -423,7 +414,7 @@ public class FltPlanQueryRepository {
QFltPlanArea area = QFltPlanArea.fltPlanArea;
BooleanBuilder builder = new BooleanBuilder();
// if (userAccount.equals("CREATER") || userAccount.equals("ADMIN")) {
if(masterAccount != null) {
if (masterAccount != null) {
if (masterAccount.equals("SPUER") || masterAccount.equals("ADMIN")) {
builder.and(bas.groupId.in(rq.getGroupId()));
} else {
@ -485,15 +476,16 @@ public class FltPlanQueryRepository {
))
);
return new PageImpl<>(r,pageable, r.size());
return new PageImpl<>(r, pageable, r.size());
}
public long aprvCount(BasFlightPlanListRq rq, String masterAccount) {
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
QFltPlanArea area = QFltPlanArea.fltPlanArea;
BooleanBuilder builder = new BooleanBuilder();
// if (userAccount.equals("CREATER") || userAccount.equals("ADMIN")) {
if(masterAccount != null) {
if (masterAccount != null) {
if (masterAccount.equals("SUPER") || masterAccount.equals("ADMIN")) {
builder.and(bas.groupId.in(rq.getGroupId()));
} else {
@ -553,12 +545,13 @@ public class FltPlanQueryRepository {
))
);
long cnt = 0;
for(BasFlightPlanModel lis : list) {
for (BasFlightPlanModel lis : list) {
cnt++;
}
return cnt;
}
@Cacheable(value = "schedule")
public List<BasFlightScheduleRs> findSchedule(String searchDate) {
QFltPlanBas fltPlanBas = QFltPlanBas.fltPlanBas;
@ -570,10 +563,10 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
DateTemplate<Instant> flightStartDate = Expressions.dateTemplate(
Instant.class,"DATE({0})", fltPlanBas.schFltStDt);
Instant.class, "DATE({0})", fltPlanBas.schFltStDt);
DateTemplate<Instant> flightEndDate = Expressions.dateTemplate(
Instant.class,"DATE({0})", fltPlanBas.schFltEndDt);
Instant.class, "DATE({0})", fltPlanBas.schFltEndDt);
builder.and(flightStartDate.loe(DateUtils.stringToDate(searchDate)))
.and(flightEndDate.goe(DateUtils.stringToDate(searchDate)))
@ -586,7 +579,7 @@ public class FltPlanQueryRepository {
ExpressionUtils.as(
JPAExpressions.select(groupBas.groupNm)
.from(groupBas)
.where(groupBas.groupId.eq(fltPlanBas.groupId)),"groupNm"
.where(groupBas.groupId.eq(fltPlanBas.groupId)), "groupNm"
),
fltPlanArcrft.ownerNm,
fltPlanArcrft.idntfNum,
@ -648,10 +641,10 @@ public class FltPlanQueryRepository {
BooleanBuilder parameter = new BooleanBuilder();
DateTemplate<Instant> flightStartDate = Expressions.dateTemplate(
Instant.class,"DATE({0})", fltPlanBas.schFltStDt);
Instant.class, "DATE({0})", fltPlanBas.schFltStDt);
DateTemplate<Instant> flightEndDate = Expressions.dateTemplate(
Instant.class,"DATE({0})", fltPlanBas.schFltEndDt);
Instant.class, "DATE({0})", fltPlanBas.schFltEndDt);
parameter.and(flightStartDate.loe(DateUtils.stringToDatetime(serverReceiveDate)))
.and(flightEndDate.goe(DateUtils.stringToDatetime(serverReceiveDate)))
@ -669,10 +662,11 @@ public class FltPlanQueryRepository {
/**
* 김포공항, 비행승인 통계 API
*
* @param date
* @return
*/
public List<MainDashStcsModel> mainStcsPlanAllow(String date, String[] formatParam){
public List<MainDashStcsModel> mainStcsPlanAllow(String date, String[] formatParam) {
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
@ -688,12 +682,12 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.aprvlYn.eq("Y"));
if(date != null && date.length() > 0) builder.and(formattedDate.eq(date));
if (date != null && date.length() > 0) builder.and(formattedDate.eq(date));
List<MainDashStcsModel> result = query
.select(
Projections.bean(
MainDashStcsModel.class ,
MainDashStcsModel.class,
formattedDate2.as("typeCd"),
bas.count().as("count")
)
@ -703,7 +697,7 @@ public class FltPlanQueryRepository {
.groupBy(formattedDate2)
.fetch();
if(result.size() <= 0){
if (result.size() <= 0) {
MainDashStcsModel node = new MainDashStcsModel();
node.setCount(0);
@ -715,4 +709,281 @@ public class FltPlanQueryRepository {
return result;
}
// laanc 승인 목록
public Page<LaancPlanDto> findAllAprvListBySearch(LaancAprvSearchDto serach, Pageable pageable) {
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft;
// TODO serach
BooleanBuilder builder = new BooleanBuilder();
JPAQuery<?> jpaQuery = query.from(bas)
.leftJoin(area)
.on(bas.planSno.eq(area.planSno))
.leftJoin(arcrft)
.on(bas.planSno.eq(arcrft.planSno))
.where(builder);
JPAQuery<?> countQuery = jpaQuery.clone();
if (pageable != null) {
jpaQuery.offset(pageable.getOffset());
jpaQuery.limit(pageable.getPageSize());
}
List<LaancPlanDto> list = jpaQuery.transform(
GroupBy.groupBy(bas.planSno)
.list(Projections.bean(
LaancPlanDto.class,
bas.planSno,
bas.groupId,
bas.cstmrSno,
bas.memberName,
bas.email,
bas.hpno,
bas.clncd,
bas.addr,
bas.addrDtlCn,
bas.zip,
bas.schFltStDt,
bas.schFltEndDt,
bas.fltPurpose,
bas.aprvlYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
bas.updateDt,
bas.corpRegYn,
bas.serviceType,
GroupBy.list(Projections.bean(
LaancPlanAreaDto.class,
area.planAreaSno,
area.planSno,
area.areaType,
area.fltMethod,
area.fltAreaAddr,
area.bufferZone,
area.fltElev,
area.createUserId,
area.createDt,
area.updateUserId,
area.updateDt,
area.fltMothoeRm
).skipNulls()).as("areaList"),
GroupBy.list(Projections.bean(
LaancPlanArcrftDto.class,
arcrft.planArcrftSno,
arcrft.planSno,
arcrft.arcrftSno,
arcrft.idntfNum,
arcrft.groupNm,
arcrft.prdctNum,
arcrft.arcrftTypeCd,
arcrft.arcrftModelNm,
arcrft.prdctCmpnNm,
arcrft.prdctDate,
arcrft.arcrftLngth,
arcrft.arcrftWdth,
arcrft.arcrftHght,
arcrft.arcrftWght,
arcrft.arcrftWghtCd,
arcrft.wghtTypeCd,
arcrft.imageUrl,
arcrft.takeoffWght,
arcrft.useYn,
arcrft.cameraYn,
arcrft.insrncYn,
arcrft.ownerNm,
arcrft.createUserId,
arcrft.createDt,
arcrft.updateUserId,
arcrft.updateDt,
arcrft.acrftInsuranceYn,
arcrft.insuranceExperiod,
arcrft.corporationNm
).skipNulls()).as("arcrftList")
).skipNulls())
);
// 카운트 쿼리
int size = countQuery.fetch().size();
if (pageable == null) {
pageable = Pageable.unpaged();
}
Page<LaancPlanDto> laancPlanDtos = new PageImpl<>(list, pageable, size);
return laancPlanDtos;
}
// laanc 승인 상세
public LaancPlanDto findAprvById(Integer planSno) {
QFltPlanBas bas = QFltPlanBas.fltPlanBas;
QFltPlanArea area = QFltPlanArea.fltPlanArea;
QFltPlanAreaCoord coord = QFltPlanAreaCoord.fltPlanAreaCoord;
QFltPlanArcrft arcrft = QFltPlanArcrft.fltPlanArcrft;
QFltPlanPilot pilot = QFltPlanPilot.fltPlanPilot;
List<LaancPlanDto> list = query.from(bas)
// .leftJoin(area)
// .on(bas.planSno.eq(area.planSno))
// .leftJoin(coord)
// .on(area.planAreaSno.eq(coord.planAreaSno))
.leftJoin(arcrft)
.on(bas.planSno.eq(arcrft.planSno))
.leftJoin(pilot)
.on(bas.planSno.eq(pilot.planSno))
.where(bas.planSno.eq(planSno))
.transform(
GroupBy.groupBy(bas.planSno)
.list(Projections.bean(
LaancPlanDto.class,
bas.planSno,
bas.groupId,
bas.cstmrSno,
bas.memberName,
bas.email,
bas.hpno,
bas.clncd,
bas.addr,
bas.addrDtlCn,
bas.zip,
bas.schFltStDt,
bas.schFltEndDt,
bas.fltPurpose,
bas.aprvlYn,
bas.delYn,
bas.createUserId,
bas.createDt,
bas.updateUserId,
bas.updateDt,
bas.corpRegYn,
bas.serviceType,
// GroupBy.list(Projections.bean(
// LaancPlanAreaDto.class,
// area.planAreaSno,
// area.planSno,
// area.areaType,
// area.fltMethod,
// area.fltAreaAddr,
// area.bufferZone,
// area.fltElev,
// area.createUserId,
// area.createDt,
// area.updateUserId,
// area.updateDt,
// area.fltMothoeRm
//// GroupBy.list(Projections.bean(
//// LaancPlanareaCoordDto.class,
//// coord.planAreaCoordSno,
//// coord.planAreaSno,
//// coord.lon,
//// coord.lat,
//// coord.createUserId,
//// coord.createDt
//// ).skipNulls()).as("coordList")
// ).skipNulls()).as("areaList"),
GroupBy.list(Projections.bean(
LaancPlanArcrftDto.class,
arcrft.planArcrftSno,
arcrft.planSno,
arcrft.arcrftSno,
arcrft.idntfNum,
arcrft.groupNm,
arcrft.prdctNum,
arcrft.arcrftTypeCd,
arcrft.arcrftModelNm,
arcrft.prdctCmpnNm,
arcrft.prdctDate,
arcrft.arcrftLngth,
arcrft.arcrftWdth,
arcrft.arcrftHght,
arcrft.arcrftWght,
arcrft.arcrftWghtCd,
arcrft.wghtTypeCd,
arcrft.imageUrl,
arcrft.takeoffWght,
arcrft.useYn,
arcrft.cameraYn,
arcrft.insrncYn,
arcrft.ownerNm,
arcrft.createUserId,
arcrft.createDt,
arcrft.updateUserId,
arcrft.updateDt,
arcrft.acrftInsuranceYn,
arcrft.insuranceExperiod,
arcrft.corporationNm
).skipNulls()).as("arcrftList"),
GroupBy.list(Projections.bean(
LaancPlanPilotDto.class,
pilot.planPilotSno,
pilot.planSno,
pilot.cstmrSno,
pilot.groupNm,
pilot.memberName,
pilot.email,
pilot.hpno,
pilot.clncd,
pilot.addr,
pilot.addrDtlCn,
pilot.zip,
pilot.qlfcNo,
pilot.carrer,
pilot.createUserId,
pilot.createDt,
pilot.updateUserId,
pilot.updateDt
).skipNulls()).as("pilotList")
).skipNulls())
);
Optional<LaancPlanDto> first = list.stream().findFirst();
if (first.isEmpty()) {
return null;
}
LaancPlanDto result = first.get();
List<LaancPlanAreaDto> areaList = query.from(area)
.leftJoin(coord)
.on(area.planAreaSno.eq(coord.planAreaSno))
.where(area.planSno.eq(planSno))
.transform(
GroupBy.groupBy(area.planAreaSno).list(Projections.bean(
LaancPlanAreaDto.class,
area.planAreaSno,
area.planSno,
area.areaType,
area.fltMethod,
area.fltAreaAddr,
area.bufferZone,
area.fltElev,
area.createUserId,
area.createDt,
area.updateUserId,
area.updateDt,
area.fltMothoeRm,
GroupBy.list(Projections.bean(
LaancPlanareaCoordDto.class,
coord.planAreaCoordSno,
coord.planAreaSno,
coord.lon,
coord.lat,
coord.createUserId,
coord.createDt
).skipNulls()).as("coordList")
))
);
result.setAreaList(areaList);
return result;
}
}

28
pav-server/src/main/java/com/palnet/comn/utils/PageUtils.java

@ -0,0 +1,28 @@
package com.palnet.comn.utils;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* packageName : com.palnet.comn.utils
* fileName : PageUtils
* author : dhji
* date : 2023-10-10(010)
* description :
* ===========================================================
* DATE AUTHOR NOTE
* -----------------------------------------------------------
* 2023-10-10(010) dhji 최초 생성
*/
public class PageUtils {
public static <A, B> Page<B> convert(Page<A> sourcePage, List<B> contentList) {
Pageable pageable = sourcePage.getPageable();
long totalElements = sourcePage.getTotalElements();
return new PageImpl<>(contentList, pageable, totalElements);
}
}

4
pav-server/src/main/resources/application-database.yml

@ -9,8 +9,8 @@ spring:
jdbc-url: jdbc:log4jdbc:mysql://43.200.235.135:3306/PAV_KAC?characterEncoding=UTF-8&autoReconnect=true&useSSL=false
username: pav-kac
password: palnet!234
# minimumidle: 5
maximumpoolsize: 1
minimumidle: 5
maximumpoolsize: 5
idletimeout: 60000
maxlifetime: 300000
connectiontimeout: 30000

37
pav-server/src/test/java/com/palnet/biz/api/bas/laanc/service/BasLaancAprvServiceTest.java

@ -0,0 +1,37 @@
package com.palnet.biz.api.bas.laanc.service;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.test.context.ActiveProfiles;
@Slf4j
@ActiveProfiles("local")
@SpringBootTest
class BasLaancAprvServiceTest {
@Autowired
private BasLaancAprvService basLaancAprvService;
@Test
void getLaancAprvList() {
Page<BasLaancAprvRs> laancAprvList = basLaancAprvService.getLaancAprvList(null, null);
log.info(">>> pageable is null : {}::{}::{}",laancAprvList.getTotalElements(), laancAprvList.getContent().size(), laancAprvList);
Pageable pageable = PageRequest.of(0, 2);
Page<BasLaancAprvRs> laancAprvList1 = basLaancAprvService.getLaancAprvList(null, pageable);
log.info(">>> pageable is not null : {}::{}::{}",laancAprvList1.getTotalElements(), laancAprvList1.getContent().size(), laancAprvList1);
}
@Test
void getLaancAprvDetail() {
BasLaancAprvRs rs1 = basLaancAprvService.getLaancAprvDetail("92");
log.info(">>> rs1 : {}", rs1);
// BasLaancAprvRs rs2 = basLaancAprvService.getLaancAprvDetail("91");
// log.info(">>> rs2 : {}", rs2);
}
}

35
pav-server/src/test/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepositoryTest.java

@ -0,0 +1,35 @@
package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.api.bas.laanc.model.BasLaancAprvRs;
import com.palnet.biz.jpa.model.LaancPlanDto;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.test.context.ActiveProfiles;
@Slf4j
@ActiveProfiles("local")
@SpringBootTest
class FltPlanQueryRepositoryTest {
@Autowired
private FltPlanQueryRepository fltPlanQueryRepository;
@Test
void findAllAprvListBySearch() {
PageRequest pageRequest = PageRequest.of(0, 2);
Page<LaancPlanDto> list = fltPlanQueryRepository.findAllAprvListBySearch(null, pageRequest);
log.info("r : {} :: {}", list.getContent(), list);
Page<LaancPlanDto> list2 = fltPlanQueryRepository.findAllAprvListBySearch(null, null);
log.info("r : {} :: {}", list2.getContent(), list2);
}
@Test
void findAprvById() {
BasLaancAprvRs rs = new BasLaancAprvRs();
}
}
Loading…
Cancel
Save