Browse Source

Merge commit 'e6d85130db9ad5b4c50209d8cd60314b7b47fd47' into feature/main/plan-allow-statistics

pull/2/head
lkd9125 1 year ago
parent
commit
468a00aff3
  1. 37
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 81
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  3. 48
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

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

@ -11,16 +11,9 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
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 com.palnet.biz.api.anls.hstry.model.AnlsHstryDetailModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltDetailModel;
import com.palnet.biz.api.anls.smlt.model.AnlsSmltStcsModel;
import com.palnet.biz.api.anls.smlt.service.AnlsSmltService;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
@ -28,7 +21,6 @@ import com.palnet.biz.api.main.dash.model.MainDashListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.api.main.dash.service.MainDashService;
import com.palnet.comn.code.RSErrorCode;
import com.palnet.comn.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
@ -66,7 +58,6 @@ public class MainDashController {
result = service.mainDashStcsDay(yyyymm);
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
@ -168,6 +159,34 @@ 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){
String[] formatParam = null;
try {
if(yyyymm == null) yyyymm = "";
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) {
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));
}
}

81
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());
@ -96,6 +100,83 @@ public class MainDashService {
}
/**
* 김포공항, 날짜별 통계
* @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];
yyyymm = yyyymm.trim();
String[] paramStrings = yyyymm.split("-");
switch (yyyymm.length()) {
case 4: // 2. 월단위 검색 -> Parameter 2023등 연도만 있는경우
Integer.parseInt(yyyymm.trim());
result[0] = "%Y";
result[1] = "%m";
break;
case 7: // 3. 일단위 검색 -> Parameter 2023-09 등 월까지 있는경우
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: // 4. 일일단위 검색 -> Parameter 2023-09-01 등 한 날짜에 대한 검색
if(paramStrings.length == 3){
for(String param : paramStrings){
Integer.parseInt(param.trim());
}
result[0] = "%Y-%m-%d";
result[1] = "%d";
} else {
throw new NumberFormatException();
}
break;
default: // 1. 연단위 검색 -> Parameter Null일 경우
if(paramStrings.length > 0) throw new NumberFormatException();
result[0] = "";
result[1] = "%y";
break;
}
return result;
}
}

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

@ -33,6 +33,7 @@ import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
@ -1669,4 +1670,51 @@ 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));
List<MainDashStcsModel> result = query
.select(
Projections.bean(
MainDashStcsModel.class ,
formattedDate2.as("typeCd"),
bas.count().as("count")
)
)
.from(bas)
.where(builder)
.groupBy(formattedDate2)
.fetch();
if(result.size() <= 0){
MainDashStcsModel node = new MainDashStcsModel();
node.setCount(0);
node.setTypeCd("NoData");
result.add(node);
}
return result;
}
}

Loading…
Cancel
Save