Browse Source

anls/smlt 패키지 주석추가

feature/document/spring-rest-docs
lkd9125(이경도) 10 months ago
parent
commit
606dd2dad8
  1. 54
      pav-server/src/main/java/com/palnet/biz/api/anls/smlt/controller/AnlsSmltController.java
  2. 20
      pav-server/src/main/java/com/palnet/biz/api/anls/smlt/service/AnlsSmltService.java
  3. 175
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

54
pav-server/src/main/java/com/palnet/biz/api/anls/smlt/controller/AnlsSmltController.java

@ -42,7 +42,8 @@ public class AnlsSmltController {
private final AnlsSmltService service;
/**
* 비행 현황 목록
* 비행현황 목록 리스트 조회하는 기능,
* AnlsHstryRqModel 따른 리스트를 조회함.
* @param rq
* @return
*/
@ -55,17 +56,25 @@ public class AnlsSmltController {
log.debug("JSON>>>>>>>>" , JsonUtils.toJson(rq));
log.debug("Param" + rq.getStDate() + "::" + rq.getEndDate());
//입력값 검증
// 검색 시작일 날짜[stDate], 검색 끝일 날짜 날짜값[endDate], 날짜값이 10자리인지 확인[정해진 포맷팅인지 확인하는 것] 입력값 검증처리
if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) {
return ResponseEntity.status(HttpStatus.OK)
// 검증통과하지 못할 시 서버에서 "의도적인" 에러 반환
return ResponseEntity.status(HttpStatus.OK) // "의도적인" 에러 반환코드
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
try {
result = service.list(rq);
result = service.list(rq); // 비행현황 목록 조회하는 기능.
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -77,7 +86,8 @@ public class AnlsSmltController {
/**
* 비행 이력 데이터 조회
* 비행 이력 데이터 조회하는 기능,
* 비행ID[CNTRL_ID] 조회함
* @param rq
* @return
*/
@ -90,9 +100,16 @@ public class AnlsSmltController {
try {
// result = service.list(rq);
result = service.histList(id);
result = service.histList(id); // 비행ID[CNTRL_ID]로 비행이력을 조회하는 기능.
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -104,7 +121,8 @@ public class AnlsSmltController {
/**
* 통계 데이터 조회
* 통계 데이터 조회,
* 비행ID[CNTRL_ID] 조회함
* @param rq
* @return
*/
@ -117,10 +135,16 @@ public class AnlsSmltController {
try {
result = service.stcsList(id);
result = service.stcsList(id); // 통계 데이터 조회하는 기능
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
@ -131,7 +155,8 @@ public class AnlsSmltController {
}
/**
* 비행 상세정보 조회
* 비행 상세정보 조회,
* 비행ID[CNTRL_ID] 조회함
* @param id
* @return
*/
@ -143,9 +168,16 @@ public class AnlsSmltController {
AnlsSmltDetailModel result = null;
try {
result = service.detail(id);
result = service.detail(id); // 비행ID[CNTRL_ID]로 비행상세정보 조회함
} catch (Exception e) {
/**
* try{
...
}
* try 영역 코드들중 문제가 생기면 오는 .
* log.error 로그로 원인 파악과 함께 API를 호출한 곳에 서버에러 내려줌
*/
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));

20
pav-server/src/main/java/com/palnet/biz/api/anls/smlt/service/AnlsSmltService.java

@ -61,7 +61,7 @@ public class AnlsSmltService {
/**
* 비행 현황 목록
* 비행현황 목록 조회하는 기능.
* @param rq
* @return
*/
@ -106,6 +106,7 @@ public class AnlsSmltService {
for(FltPlanPilot list : pilotList) {
pilotResult = fltPlanBasRepository.findBasList(list.getPlanSno());
}
result = query.cntrlBasNormalSmltList(rq, pageable, adminAuth, idntfList, basResult, pilotResult); // App 권한은 user이지만 group 권한이 LEADER / MASTER인 그룹이 있는 경우 해당 비행 이력 목록 표출
// group 권한이 Normal인 경우 본인이 작성한 비행계획서의 이력 / 본인이 조종사인 기체 이력/ 본인이 등록한 기체 이력 표출
@ -122,12 +123,13 @@ public class AnlsSmltService {
}
/**
*
* @param rq비행 이력 데이터 조회
* 비행ID[CNTRL_ID] 비행이력을 조회하는 기능.
* @param rq
* @return
*/
public List<AnlsHstryDetailModel> histList(String id){
// 비행ID[CNTRL_ID]로 비행이력을 데이터베이스에서 조회함.
List<AnlsHstryDetailModel> resultList = query.listCntrlHstry(id);
//정렬 순서 뒤집기 처리
@ -138,14 +140,13 @@ public class AnlsSmltService {
/**
* 통계 데이터 조회
* 통계 데이터 조회하는 기능
* @param rq
* @return
*/
public List<AnlsSmltStcsModel> stcsList(String id){
List<AnlsSmltStcsModel> result = query.anlsSmltStcs(id);
List<AnlsSmltStcsModel> result = query.anlsSmltStcs(id); // 비행관제 ID[CNTRL_ID]로 데이터베이스에서 시뮬레이션 통계데이터를 조회함.
//통계 데이터 가공 처리
//소수점 자리 1자리로 컷트
@ -162,7 +163,8 @@ public class AnlsSmltService {
/**
* 비행 상세정보 조회
* 비행 상세정보 조회,
* 비행ID[CNTRL_ID] 조회함
* @param cntrlId
* @return
* @throws Exception
@ -172,7 +174,7 @@ public class AnlsSmltService {
AnlsSmltDetailModel result = new AnlsSmltDetailModel();
result = query.anlsSmltDetail(cntrlId);
result = query.anlsSmltDetail(cntrlId); // 비행ID[CNTRL_ID]로 데이터베이스에서 비행상세 정보 조회함
// Optional<CtrCntrlBas> optional = ctrCntrlBasRepository.findById(cntrlId);
//

175
pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

@ -461,6 +461,16 @@ public class CtrCntrlQueryRepository{
return new PageImpl<>(result, pageable, result.size());
}
/**
* 비행 시뮬레이션할 데이터를 조건에 맞춰 데이터베이스에서 조회하는 SQL 기능.
* @param rq
* @param pageable
* @param adminAuth
* @param idntfList
* @param basResult
* @param pilotResult
* @return
*/
public PageImpl<AnlsHstryModel> cntrlBasNormalSmltList(AnlsHstryRqModel rq,
Pageable pageable,
List<JwtGroupModel> adminAuth,
@ -483,38 +493,103 @@ public class CtrCntrlQueryRepository{
end.setTime(Date.from(DateUtils.stringToDate(rq.getEndDate())));
end.add(Calendar.DATE, 1);
Date endDate = end.getTime();
/**
* 조건1. 검색시작일
* 조건2. 검색끝일
* 조건3. 승인값이 "Y"인지
* 조건4. status가 값이 99인지
*/
builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate())));
builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate.toInstant()));
builder.and(qFltPlanBasEntity.aprvlYn.eq("Y"));
builder.and(qCntrlBasEntity.statusCd.eq("99"));
// adminAuth값이 있을 시[유저 권한은 USER지만 그룹내 권한이 ADMIN, MASTER 일경우 그룹전체 값 확인 가능 함.]
if(adminAuth.size()>0) {
for(JwtGroupModel list : adminAuth) {
adminBuilder.or(qFltPlanCtrCntrlRelEntity.groupId.eq(list.getGroupId()));
}
}
// 회원 고유번호와 맞는 기체고유번호 조건추가
if(idntfList.size()>0) {
for(ComIdntfBas list : idntfList) {
idntfBuilder.or(qCntrlBasEntity.idntfNum.eq(list.getIdntfNum()));
}
}
// 회원 고유번호와 맞는 비행계획서 고유번호 조건 추가
if(basResult.size()>0) {
for(FltPlanBas list : basResult) {
basBuilder.or(qFltPlanCtrCntrlRelEntity.planSno.eq(list.getPlanSno()));
}
}
// 회원 고유번호와 맞는 파일럿번호로 조회한 비행계획서 번호 조건 추가
if(pilotResult.size()>0) {
for(FltPlanBas list : pilotResult) {
pilotBuilder.or(qFltPlanCtrCntrlRelEntity.planSno.eq(list.getPlanSno()));
}
}
// 입력받은 검색 키워드 조건추가
if(!StringUtils.isEmpty(rq.getSearch1())) {
builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%"));
}
List<AnlsHstryModel> result = new ArrayList<>();
/**
* 조건들과 부합한 데이터베이스 내용을 조회하는 SQL입니다.
* SELECT
* CCB.CNTRL_ID ,
* CCB.IDNTF_NUM ,
* CCB.STATUS_CD ,
* CCB.OBJECT_TYPE_CD ,
* CCB.FLGHT_ST_DT ,
* CCB.FLGHT_END_DT ,
* CCB.CNTRL_ST_DT ,
* CCB.CNTRL_END_DT ,
* CCB.TTL_TIME ,
* CCB.TTL_TIME_TYPE ,
* CCB.TTL_DSTNC ,
* CCB.TTL_DSTNC_TYPE ,
* CCB.AVRG_SPEED ,
* CCB.AVRG_SPEED_TYPE ,
* CCB.BTTR_CNSMPTN ,
* CCB.END_TYPE_CD ,
* CCB.CREATE_DT ,
* CCB.UPDATE_DT ,
* CCHA.ACTN_TYPE ,
* CCHA.AREA1 ,
* CCHA.AREA2 ,
* CCHA.AREA3 ,
* CCHA.AREA_NM ,
* CCHA.AREA_TYPE ,
* CCHA.LAND_NM ,
* CCHA.LAND_NUM ,
* CCHA.ZIP_CD
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN CTR_CNTRL_HSTRY_AREA CCHA
* ON CCB.CNTRL_ID = CCHA.CNTRL_ID
* AND CCHA.ACTN_TYPE = '01'
* LEFT OUTER JOIN FLT_PLAN_CTR_CNTRL_REL FPCCR
* ON CCB.CNTRL_ID = FPCCR.CNTRL_ID
* LEFT OUTER JOIN FLT_PLAN_BAS FPB
* ON FPCCR.PLAN_SNO = FPB.PLAN_SNO
* WHERE FPCCR.GROUP_ID = #{groupId}
* AND CCB.CNTRL_ST_DT > #{stDate}
* AND CCB.CNTRL_END_DT < #{endDate}
* AND CCB.STATUS_CD = '99'
* AND FPB.APRVL_YN = 'Y'
* AND CCB.IDNTF_NUM LIKE CONCAT('%', #{search1}, '%');
* AND(
* CCB.IDNTF_NUM = #{idntfNum} -- #{idntfNum}값이 여러개 경우 OR연산을 붙혀 조건이 늘어남
* OR FPCCR.PLAN_SNO = #{planSno} -- #{planSno}값이 여러개 경우 OR연산을 붙혀 조건이 늘어남
* OR FPCCR.PLAN_SNO = #{planSno} -- #{planSno}값이 여러개 경우 OR연산을 붙혀 조건이 늘어남
* )
*/
List<AnlsHstryModel> queryList = query.select(Projections.bean(AnlsHstryModel.class ,
qCntrlBasEntity.cntrlId,
qCntrlBasEntity.idntfNum,
@ -721,7 +796,7 @@ public class CtrCntrlQueryRepository{
* 조건1. 그룹아이디가 맞는지,
* 조건2. 검색시작일 이후
* 조건3. 검색끝일
* 조건4. status가 99[비행중]인지
* 조건4. status가 값이 "99" 인지
* 조건5. 승인이 된건인지
*/
builder.and(qFltPlanCtrCntrlRelEntity.groupId.eq(rq.getGroupId()));
@ -1219,7 +1294,13 @@ public class CtrCntrlQueryRepository{
return result;
}
public List<AnlsHstryDetailModel> listCntrlHstry(String id){
/**
* 비행ID[CNTRL_ID] 비행이력을 조회하는 SQL 기능.
* @param id
* @return
*/
public List<AnlsHstryDetailModel> listCntrlHstry(String id){
QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlHstry qCtrCntrHstry = QCtrCntrlHstry.ctrCntrlHstry;
@ -1227,6 +1308,34 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
BooleanBuilder builder = new BooleanBuilder();
builder.and(qCtrCntrHstry.cntrlId.eq(id));
/**
* 비행ID[CNTRL_ID]
* SELECT
* CCH.CNTRL_ID ,
* CCH.HSTRY_SNO ,
* CCH.TRMNL_ID ,
* CCH.MSSG_TYPE_CD ,
* CCH.STATUS_CD ,
* CCH.LAT ,
* CCH.LON ,
* CCH.SPEED ,
* CCH.SPEED_TYPE ,
* CCH.HEADING ,
* CCH.ELEV ,
* CCH.ELEV_TYPE ,
* CCH.MV_DSTNC ,
* CCH.MV_DSTNC_TYPE ,
* CCH.BTTR_LVL ,
* CCH.BTTR_VLTG ,
* CCH.TRMNL_RCV_DT ,
* CCH.SRVR_RCV_DT ,
* CCB.IDNTF_NUM
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN CTR_CNTRL_HSTRY CCH
* ON CCB.CNTRL_ID = CCH.CNTRL_ID
* WHERE CCB.CNTRL_ID = #{cntrlId}
* ORDER BY CCH.SRVR_RCV_DT ASC
*/
List<AnlsHstryDetailModel> result = query.select(Projections.bean(AnlsHstryDetailModel.class ,
qCtrCntrHstry.cntrlId ,
qCtrCntrHstry.hstrySno ,
@ -1257,6 +1366,7 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
return result;
}
public long listCntrlHstryCount(String id){
QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas;
@ -1577,18 +1687,46 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
return result;
}
/***
* 시뮬레이션 상세정보 조회 쿼리
*
/**
* 비행관제번호[CNTRL_ID] 시뮬레이션 상세정보 조회하는 SQL 기능.
* @param cntrlId
* @return
*/
public AnlsSmltDetailModel anlsSmltDetail(String cntrlId){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QComArcrftBas air = QComArcrftBas.comArcrftBas;
QComIdntfBas idntf = QComIdntfBas.comIdntfBas;
/**
* 비행관제번호[CNTRL_ID] 시뮬레이션 상세정보 조회하는 SQL 입니다.
*
* SELECT
* CCB.CNTRL_ID ,
* CCB.IDNTF_NUM ,
* CCB.FLGHT_ST_DT ,
* CCB.FLGHT_END_DT ,
* CCB.CNTRL_ST_DT ,
* CCB.CNTRL_END_DT ,
* CCB.TTL_TIME ,
* CCB.TTL_TIME_TYPE ,
* CCB.TTL_DSTNC ,
* CCB.TTL_DSTNC_TYPE ,
* CCB.AVRG_SPEED ,
* CCB.AVRG_SPEED_TYPE ,
* CCB.BTTR_CNSMPTN ,
* CAB.ARCRFT_TYPE_CD ,
* CAB.PRDCT_NUM ,
* CAB.ARCRFT_MODEL_NM ,
* CAB.IMAGE_URL
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN COM_IDNTF_BAS CIB
* ON CCB.IDNTF_NUM = CIB.IDNTF_NUM
* LEFT OUTER JOIN COM_ARCRFT_BAS CAB
* ON CIB.ARCRFT_SNO = CAB.ARCRFT_SNO
* AND CAB.USE_YN = 'Y'
* WHERE CCB.CNTRL_ID = #{cntrlId}
*/
AnlsSmltDetailModel result = query.select(Projections.bean(AnlsSmltDetailModel.class ,
bas.cntrlId ,
bas.idntfNum ,
@ -1623,10 +1761,9 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
}
/***
* 시뮬레이션 통계
/**
* 비행관제 ID[CNTRL_ID] 시뮬레이션 통계내는 SQL 기능.
*/
public List<AnlsSmltStcsModel> anlsSmltStcs(String cntrlId){
QCtrCntrlHstry hstry = QCtrCntrlHstry.ctrCntrlHstry;
@ -1643,6 +1780,22 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
, ConstantImpl.create("%H:%i"));
/**
* 비행관제 ID[CNTRL_ID] 통계를 내는 SQL입니다.
* SELECT
* DATE_FORMAT(CCH.SRVR_RCV_DT, '%H:%i') AS 'timecd',
* DATE_FORMAT(CCH.SRVR_RCV_DT, '%Y-%m-%d') AS 'dateCd',
* AVG(CCH.SPEED) AS 'avrgSpeed',
* MAX(CCH.SPEED_TYPE) AS 'speedType',
* AVG(CCH.ELEV) AS 'avrgElev',
* MAX(CCH.ELEV_TYPE) AS 'elevType',
* AVG(CCH.MV_DSTNC) AS 'avrgMvDstnc' ,
* MAX(CCH.MV_DSTNC_TYPE) AS 'mvDstncType',
* MAX(CCH.BTTR_LVL) AS 'maxBttrLvl',
* MIN(CCH.BTTR_LVL) AS 'minBttrLvl'
* FROM CTR_CNTRL_HSTRY CCH
* WHERE CCH.CNTRL_ID = #{cntrlId}
*/
List<AnlsSmltStcsModel> result = query.select(Projections.bean(AnlsSmltStcsModel.class ,
formattedTime.as("timeCd"),
formattedDate.as("dateCd"),

Loading…
Cancel
Save