Browse Source

ctr/cntrl 패키지 주석

develop
lkd9125(이경도) 9 months ago
parent
commit
d4a65abd14
  1. 108
      pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java
  2. 4
      pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/PingController.java
  3. 27
      pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/SocketReceiverController.java
  4. 17
      pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java
  5. 10
      pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/service/SocketReceiverService.java
  6. 100
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

108
pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/CtrCntrlController.java

@ -36,7 +36,7 @@ public class CtrCntrlController {
}
/**
* TODO 드론 관제 이력 목록 (Socket 분리 )
* TODO 드론 관제 이력 목록 (Socket 분리 ) 조회하는 기능.
*
* @param id - 관제 ID
* @return
@ -49,9 +49,16 @@ public class CtrCntrlController {
List<GPHistoryModel> result = null;
try {
result = service.getListHistory(id);
result = service.getListHistory(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"));
@ -61,8 +68,8 @@ public class CtrCntrlController {
}
/**
* TODO 드론 관제 상세 정보
*
* TODO 드론 관제 상세 정보 조회 기능,
* 관제ID[controlId] 조회하여 확인함
* @param id - 관제 ID
* @return
*/
@ -74,9 +81,16 @@ public class CtrCntrlController {
CtrCntrlDtlModel result = null;
try {
result = service.getDetail(id);
result = service.getDetail(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"));
@ -99,8 +113,15 @@ public class CtrCntrlController {
List<GPHistoryModel> history;
try {
history = service.getHistory(id);
history = service.getHistory(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"));
@ -108,14 +129,29 @@ public class CtrCntrlController {
return ResponseEntity.ok().body(new SuccessResponse<>(history));
}
/**
* 드론관제 날씨를 조회하는 기능,
* CtrCntrlWeatherModel값에 따라 조회함
* @param rq
* @return
* @throws IOException
* @throws ParseException
*/
@GetMapping("/api/weather")
@ApiOperation(value = "드론 관제 날씨")
@Tag(name = "드론 관제 시스템", description = "드론 관제 관련 API")
public ResponseEntity<? extends BasicResponse> restApiGetWeather(CtrCntrlWeatherModel rq) throws IOException, ParseException {
JSONObject jsonObject = null;
try {
jsonObject = service.getWeather(rq);
jsonObject = service.getWeather(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"));
@ -136,8 +172,15 @@ public class CtrCntrlController {
List<CtrCntrlGroupArcrftModel> list;
try {
list = service.getGroupAuthInfo();
list = service.getGroupAuthInfo(); // 그룹의 기체 정보 조회하는 기능
} 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"));
@ -162,6 +205,13 @@ public class CtrCntrlController {
try {
list = service.getFlightPlanForKac(idntfNum);
} 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"));
@ -186,6 +236,13 @@ public class CtrCntrlController {
try {
warnLog = service.getWarnLog(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"));
@ -210,6 +267,13 @@ public class CtrCntrlController {
try {
arcrftWarnList = service.getArcrftWarnList(rq.getCntrlId());
} 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"));
@ -232,6 +296,13 @@ public class CtrCntrlController {
try {
rs = service.checkPlanContains(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"));
@ -254,6 +325,13 @@ public class CtrCntrlController {
try {
result = service.getId(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"));
@ -279,6 +357,13 @@ public class CtrCntrlController {
try {
result = service.checkWarring(id, lat, lon);
} 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"));
@ -300,6 +385,13 @@ public class CtrCntrlController {
try {
result = service.getComplete(cntrlId);
} 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"));

4
pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/PingController.java

@ -6,6 +6,10 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
public class PingController {
/**
* 서버가 살아있는지 확인하는 API
* @return
*/
@GetMapping("/ping")
public String ping(){
return "SUCCESS";

27
pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/controller/SocketReceiverController.java

@ -32,13 +32,26 @@ import java.util.concurrent.Callable;
public class SocketReceiverController {
private final SocketReceiverService socketReceiverService;
/**
* 소켓에서 날아오는 데이터를 데이터베이스에 저장시키는 기능,
* GPModel 모델에 오는값을 저장시킴.
* @param model
* @return
*/
@PostMapping("/receiver")
public ResponseEntity<?> receiver(@RequestBody GPModel model) {
System.out.println("socket message : " + model);
socketReceiverService.insert(model);
public ResponseEntity<?> receiver(@RequestBody GPModel model) {
log.info("socket message : {}", model);
socketReceiverService.insert(model); // 소켓에서 날아오는 데이터를 데이터베이스에 저장시키는 기능
return ResponseEntity.ok().build();
}
/**
* 비동기방식으로 소켓에서 날아오는 데이터를 데이터베이스에 저장시키는 기능,
* GPModel 모델에 오는값을 저장시킴.
* @param model
* @return
*/
@PostMapping("/receiver/async")
public Callable<String> asyncReceiver(@RequestBody GPModel model) {
return () -> {
@ -48,10 +61,16 @@ public class SocketReceiverController {
};
}
/**
* 소켓에서 날아오는 데이터를 데이터베이스에 저장시키는 기능,
* 한번에 많은 관제아이디를 저장시키기 위해 사용하는 기능.
* @param models
* @return
*/
@PostMapping("/receiver/all")
public ResponseEntity<?> receiver(@RequestBody Map<String, List<GPModel>> models) {
// System.out.println("socket message : " + models);
socketReceiverService.insertAll(models);
socketReceiverService.insertAll(models); // 한번에 많은 데이터를 데이터베이스에 저장하는 기능
return ResponseEntity.ok().build();
}
}

17
pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/service/CtrCntrlService.java

@ -73,6 +73,12 @@ public class CtrCntrlService {
private final FltPlanQueryRepository fltPlanQueryRepository;
/**
* 관제이력을 조회하는 기능.
* 현재는 사용하지 않음.
* @param objectId
* @return
*/
public List<GPHistoryModel> getListHistory(String objectId) {
List<GPHistoryModel> filterList = new ArrayList<GPHistoryModel>();
@ -92,7 +98,7 @@ public class CtrCntrlService {
}
/**
* TODO 관제 상세 조회
* TODO 관제 상세 조회하는 기능.
*
* @param controlId
* @return
@ -109,7 +115,7 @@ public class CtrCntrlService {
if (result.getHpno() != null && !result.getHpno().isEmpty()) {
try {
String decHpno = EncryptUtils.decrypt(result.getHpno());
String decHpno = EncryptUtils.decrypt(result.getHpno()); // 휴대폰번호 복호화.
if (decHpno != null && !decHpno.isEmpty()) {
result.setHpno(decHpno);
}
@ -609,6 +615,13 @@ public class CtrCntrlService {
return result;
}
/**
* 날씨 조회하는 기능.
* @param rq
* @return
* @throws IOException
* @throws ParseException
*/
public JSONObject getWeather(CtrCntrlWeatherModel rq) throws IOException, ParseException {
StringBuilder urlBuilder = new StringBuilder(weatherUrl);

10
pav-server/src/main/java/com/palnet/biz/api/ctr/cntrl/service/SocketReceiverService.java

@ -42,6 +42,11 @@ public class SocketReceiverService {
private final FltPlanQueryRepository fltPlanQueryRepository;
private final FltPlanCtrCntrlRelRepository ctrCntrlRelRepository;
/**
* 소켓에서 날아오는 데이터를 데이터베이스에 저장시키는 기능.
* @Transactional 데이터베이스에 저장, 삭제, 수정일 경우 데이터베이스의 정합을 위해 사용함.
* @param model
*/
@Transactional
public void insert(GPModel model) {
GPDatabaseModel dbModel = new GPDatabaseModel();
@ -111,6 +116,11 @@ public class SocketReceiverService {
}
/**
* 한번에 많은 데이터를 데이터베이스에 저장하는 기능.
* @Transactional 데이터베이스에 저장, 삭제, 수정일 경우 데이터베이스의 정합을 위해 사용함.
* @param models
*/
@Transactional
public void insertAll(Map<String, List<GPModel>> models) {
// TODO 일괄 처리 필요

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

@ -1239,6 +1239,7 @@ public class CtrCntrlQueryRepository{
/**
* 비행번호[CNTRL_ID] 이력현황을 조회하는 SQL입니다.
*
* SELECT
* CCH.CNTRL_ID ,
* CCH.HSTRY_SNO ,
@ -1554,6 +1555,11 @@ public class CtrCntrlQueryRepository{
}
// TODO 임시 수정
/**
* 관제사항 상세보는 SQL기능.
* @param controlId
* @return
*/
public CtrCntrlDtlModel detailCntrlForKac(String controlId) {
QCtrCntrlBas ctr = QCtrCntrlBas.ctrCntrlBas;
// QComArcrftBas cBas = QComArcrftBas.comArcrftBas;
@ -1563,6 +1569,40 @@ public class CtrCntrlQueryRepository{
QFltPlanCtrCntrlRel rel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas fBas = QFltPlanBas.fltPlanBas;
/**
* 관제ID[controlId] 조건으로 조회하는 SQL입니다.
*
* SELECT
* CCB.CNTRL_ID ,
* CCB.CNTRL_ST_DT ,
* CCB.CNTRL_END_DT ,
* FPA.ARCRFT_SNO ,
* FPA.PRDCT_NUM ,
* FPA.ARCRFT_TYPE_CD ,
* FPA.ARCRFT_MODEL_NM ,
* FPA.PRDCT_CMPN_NM ,
* FPA.WGHT_TYPE_CD ,
* FPA.IMAGE_URL ,
* FPA.CAMERA_YN ,
* FPA.INSRNC_YN ,
* FPA.OWNER_NM ,
* FPP.HPNO ,
* FPB.CORP_REG_YN ,
* FPB.APRVL_DT ,
* FPB.APRVL_YN
* FROM CTR_CNTRL_BAS CCB
* 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
* LEFT OUTER JOIN FLT_PLAN_ARCRFT FPA
* ON FPB.PLAN_SNO = FPA.PLAN_SNO
* AND CCB.IDNTF_NUM = FPA.IDNTF_NUM
* LEFT OUTER JOIN FLT_PLAN_PILOT FPP
* ON FPB.PLAN_SNO = FPP.PLAN_SNO
* WHERE CCB.CNTRL_ID = #{cntrlId}
* ORDER BY CCB.CREATE_DT DESC
*/
CtrCntrlDtlModel result = query.select(Projections.bean(CtrCntrlDtlModel.class,
ctr.cntrlId,
ctr.cntrlStDt,
@ -1899,11 +1939,28 @@ public class CtrCntrlQueryRepository{
return result;
}
/**
* 관제이력을 조회하는 SQL 입니다..
* @param controlId
* @return
*/
public List<GPHistoryModel> getDroneHistory(String controlId) {
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlHstry hst = QCtrCntrlHstry.ctrCntrlHstry;
/**
* 비행관제번호[CNTRL_ID] 시뮬레이션 상세정보 조회하는 SQL 입니다.
*
* SELECT
* CCB.IDNTF_NUM AS 'objectId',
* CCH.LAT AS 'lat',
* CCH.LON AS 'lon'
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN CTR_CNTRL_HSTRY CCH
* ON CCB.CNTRL_ID = CCH.CNTRL_ID
* WHERE CCB.CNTRL_ID = #{cntrlId}
*/
List<GPHistoryModel> list = query.select(Projections.bean(GPHistoryModel.class,
bas.idntfNum.as("objectId"),
hst.lat.as("lat"),
@ -1918,6 +1975,11 @@ public class CtrCntrlQueryRepository{
}
/**
* 그룹의 기체 정보 조회하는 SQL 입니다.
* @Cacheable은 RQ값이 같을 이전 구해놨던 데이터를 바로 발송하는 어노테이션입니다, 자주 쓰는 항목에 사용합니다.
* @return
*/
@Cacheable(value = "group-auth")
public List<CtrCntrlGroupModel> findByGroupInfo() {
QPtyCstmrGroup pcg = QPtyCstmrGroup.ptyCstmrGroup;
@ -1937,6 +1999,21 @@ public class CtrCntrlQueryRepository{
builder.and(pcg.cstmrSno.eq(cstmrSno));
}
/**
* 권한에 따라 조회하는 SQL입니다.
*
* SELECT
* PGB.GROUP_ID AS 'groupId',
* PGB.GROUP_NM AS 'groupNm',
* PCG.GROUP_AUTH_CD AS 'groupAuthCd'
* FROM PTY_GROUP_BAS PGB
* LEFT OUTER JOIN PTY_CSTMR_GROUP PCG
* ON PGB.GROUP_ID = PCG.GROUP_ID
* WHERE PGB.USE_YN = 'Y'
* AND PCG.GROUP_AUTH_CD = 'MASTER' -- 권한이 ADMIN 혹은 SUPER일 경우
* AND PCG.APRVL_YN = 'Y' -- 권한이 USER일 경우
* AND PCG.CSTMR_SNO = #{cstmrSno} -- 권한이 USER일 경우
*/
List<CtrCntrlGroupModel> model = query.select(Projections.bean(CtrCntrlGroupModel.class,
pgb.groupId.as("groupId"),
pgb.groupNm.as("groupNm"),
@ -2161,6 +2238,11 @@ public class CtrCntrlQueryRepository{
return result;
}
/**
* 비행완료된 관제이력 조회하는 SQL 기능.
* @param cntrlId
* @return
*/
public List<CtrCntrlHstry> getCompleteInfo(String cntrlId){
QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas;
@ -2170,6 +2252,24 @@ public class CtrCntrlQueryRepository{
builder.and(qCtrCntrHstry.cntrlId.eq(cntrlId));
builder.and(qCntrlBasEntity.statusCd.eq("99"));
/**
* 비행번호[CNTRL_ID] 이력현황을 조회하는 SQL입니다.
*
* SELECT
* CCH.LAT ,
* CCH.LON ,
* CCH.SPEED ,
* CCH.SPEED_TYPE ,
* CCH.ELEV ,
* CCH.ELEV_TYPE ,
* CCH.MV_DSTNC ,
* CCH.MV_DSTNC_TYPE
* FROM CTR_CNTRL_BAS CCB
* LEFT OUTER JOIN CTR_CNTRL_HSTRY CCH
* ON CCB.CNTRL_ID = CCH.CNTRL_ID
* WHERE CCH.CNTRL_ID = #{cntrlId}
* AND CCB.STATUS_CD = '99'
*/
List<CtrCntrlHstry> result = query.select(Projections.bean(CtrCntrlHstry.class ,
qCtrCntrHstry.lat,
qCtrCntrHstry.lon ,

Loading…
Cancel
Save