Browse Source

연,월,일 통계 API 추가

pull/1/head
lkd9125 1 year ago
parent
commit
4323f77762
  1. 60
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 93
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  3. 40
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

60
pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java

@ -1,5 +1,6 @@
package com.palnet.biz.api.main.dash.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@ -167,7 +168,64 @@ public class MainDashController {
}
@GetMapping(value = "/kac/stcs/date")
@ApiOperation(value = "김포공항, 날짜 통계")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
@ApiImplicitParam(name = "yyyymm",value = "날짜", dataTypeClass = String.class)
public ResponseEntity<? extends BasicResponse> kacDateStatistics(String yyyymm){
if(yyyymm == null) yyyymm = "";
log.error("yyyyMM -> {}", yyyymm);
String[] formatParam = null;
try {
formatParam = service.paramCheck(yyyymm);
} catch (NumberFormatException e) {
return ResponseEntity.status(HttpStatus.OK)
.body(new ErrorResponse(RSErrorCode.ER_PARAM));
}
List<MainDashStcsModel> result = null;
try {
result = service.mainKacDashStcsDay(yyyymm,formatParam);
} catch (Exception e) {
// TODO: handle exception
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Object>(result));
}
// public ResponseEntity<? extends BasicResponse> stcsDay(String yyyymm) {
// List<MainDashStcsModel> result = null;
// // log.debug(yyyymm);
// //입력값 검증
// if(yyyymm == null || !(yyyymm.length() == 7) ) {
// return ResponseEntity.status(HttpStatus.OK)
// .body(new ErrorResponse(RSErrorCode.ER_PARAM));
// }
// try {
// result = service.mainDashStcsDay(yyyymm);
// } 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<List>(result));
// }
}

93
pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java

@ -8,6 +8,9 @@ import java.util.stream.Collectors;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.jpa.repository.pty.*;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -19,6 +22,7 @@ import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
@Service
@Slf4j
public class MainDashService {
private Logger logger = LoggerFactory.getLogger(getClass());
@ -95,6 +99,95 @@ public class MainDashService {
return resultList;
}
/**
* 김포공항, 날짜별 통계
* @param yyyymm
* @return
*/
public List<MainDashStcsModel> mainKacDashStcsDay(String yyyymm, String[] formatParam){
List<MainDashStcsModel> resultList = query.mainKacDashStcsDay(yyyymm, formatParam);
return resultList;
}
/**
* 파라미터 체크
* 1. 연단위 검색 -> Parameter Null일 경우
* 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우
* 3. 일단위 검색 -> Parameter 2023-09 월까지 있는경우
* 4. 일일단위 검색 -> Parameter 2023-09-01 날짜에 대한 검색
* 이하 모든 데이터는 Exception 발생
* @param yyyyMM
* @throws NumberFormatException
*/
public String[] paramCheck(String yyyymm) throws NumberFormatException{
String[] result = new String[2];
String[] paramStrings = null;
// 1. 연단위 검색 -> Parameter Null일 경우
// 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우
// 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우
// 이하 모든 데이터는 Exception 발생
yyyymm = yyyymm.trim();
switch (yyyymm.length()) {
// 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우
case 4:
Integer.parseInt(yyyymm.trim());
result[0] = "%Y";
result[1] = "%m";
break;
// 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우
case 7:
paramStrings = yyyymm.split("-");
if(paramStrings.length == 2){
for(String param : paramStrings){
Integer.parseInt(param.trim());
}
result[0] = "%Y-%m";
result[1] = "%d";
} else {
throw new NumberFormatException();
}
break;
case 10:
paramStrings = yyyymm.split("-");
if(paramStrings.length == 3){
for(String param : paramStrings){
Integer.parseInt(param.trim());
}
result[0] = "%Y-%m-%d";
result[1] = "";
} else {
throw new NumberFormatException();
}
break;
default: // 1. 연단위 검색 -> Parameter Null일 경우
result[0] = "";
result[1] = "%y";
break;
}
return result;
}

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

@ -1669,4 +1669,44 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
//
// return arcrftList;
}
/**
* 김포공항, 날짜별 통계 API
* @param yyyymm
* @return
*/
public List<MainDashStcsModel> mainKacDashStcsDay(String yyyymm, String[] formatParam){
QCtrCntrlBas bas = QCtrCntrlBas.ctrCntrlBas;
StringTemplate formattedDate = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, bas.cntrlStDt
, ConstantImpl.create(formatParam[0]));
StringTemplate formattedDate2 = Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})"
, bas.cntrlStDt
, ConstantImpl.create(formatParam[1]));
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.statusCd.eq("99"));
if(yyyymm != null && yyyymm.length() > 0) builder.and(formattedDate.eq(yyyymm));
log.info("builder -> {}", builder);
List<MainDashStcsModel> result = query.select(Projections.bean(MainDashStcsModel.class ,
formattedDate2.as("typeCd"),
bas.count().as("count")
))
.from(bas)
.where(builder)
.groupBy(formattedDate2)
.fetch();
log.info("result -> {}", result);
return result;
}
}

Loading…
Cancel
Save