Browse Source

비행통계 상단데이터 권한개입 추가

pull/11/head
lkd9125(이경도) 10 months ago
parent
commit
71c4e13170
  1. 8018
      pav-server/c:/project/log/control-server/data.log.20231109
  2. 838
      pav-server/c:/project/log/control-server/data.log.20231110
  3. 14
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java
  4. 54
      pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java
  5. 54
      pav-server/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
  6. 3
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

8018
pav-server/c:/project/log/control-server/data.log.20231109

File diff suppressed because one or more lines are too long

838
pav-server/c:/project/log/control-server/data.log.20231110

File diff suppressed because one or more lines are too long

14
pav-server/src/main/java/com/palnet/biz/api/main/statistics/controller/MainStatisticsController.java

@ -37,12 +37,14 @@ public class MainStatisticsController {
@GetMapping("/flight-static")
@ApiOperation(value = "비행통계 상단 데이터[DB전체 통계데이터]")
@Tag(name = "통계 컨트롤러", description = "통계 관련 API")
public ResponseEntity<? extends BasicResponse> fltStcsStatic(){
public ResponseEntity<? extends BasicResponse> fltStcsStatic(String groupId){
log.warn("GroupNm => {}", groupId);
List<FlightStcsValueModel> result = null;
try {
result = service.getFlightStaticStcs();
result = service.getFlightStaticStcs(groupId);
log.warn("result => {}", result);
} catch (Exception e) {
@ -174,8 +176,8 @@ public class MainStatisticsController {
@ApiImplicitParam(name = "cate",value = "비행실적,비행계획서,비행계획승인[FLT_PLAN_APRVN]", dataTypeClass = String.class),
@ApiImplicitParam(name = "type",value = "날짜형식[month]", dataTypeClass = String.class)
})
public ResponseEntity<? extends BasicResponse> fltResultStcs(@RequestParam String cate, String date, @PathVariable String type){
log.warn("cate => {}, date => {}, type => {}", cate, date, type);
public ResponseEntity<? extends BasicResponse> fltResultStcs(@RequestParam String cate, String groupNm, String date, @PathVariable String type){
log.warn("cate => {}, group => {}, date => {}, type => {}", cate, groupNm, date, type);
FlightStcsModel result = new FlightStcsModel();
@ -200,7 +202,5 @@ public class MainStatisticsController {
return ResponseEntity.ok().body(new SuccessResponse<FlightStcsModel>(result));
}
}

54
pav-server/src/main/java/com/palnet/biz/api/main/statistics/service/MainStatisticsService.java

@ -4,13 +4,19 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.group.model.BasGroupUserListModel;
import com.palnet.biz.api.bas.group.model.BasGroupUserModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.type.WarnType;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlWarnLogQueryRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository;
import com.palnet.comn.code.ErrorCode;
import com.palnet.comn.exception.CustomException;
@ -29,6 +35,10 @@ public class MainStatisticsService {
private final FltPlanQueryRepository fltPlanQueryRepository;
private final PtyGroupQueryRepository ptyGroupQueryRepository;
private final JwtTokenUtil jwtTokenUtil;
/**
* 파라미터 체크
* 1. 연단위 검색 -> Parameter Null일 경우
@ -96,15 +106,47 @@ public class MainStatisticsService {
return result;
}
/**
* 그룹권한과 유저권한 모두 USER일 경우 true 반환
* @param groupId
* @return
*/
private Boolean authCheck(String groupId){
BasGroupUserListModel param = new BasGroupUserListModel();
param.setCstmrSno(jwtTokenUtil.getCstmrSnoByToken());
param.setGroupId(groupId);
param.setMemberName(jwtTokenUtil.getUserNmByToken());
Pageable pageable = PageRequest.of(1-1, 1);
PageImpl<BasGroupUserModel> queryResult = ptyGroupQueryRepository.userList(param, pageable);
BasGroupUserModel groupUser = queryResult.getContent().get(0);
String groupAuth = groupUser.getGroupAuthCd();
String userAuth = jwtTokenUtil.getUserAuthByToken();
boolean result = false;
if(groupAuth.equals("USER") && userAuth.equals("USER")) result = true;
return result;
}
/**
* 비행관련 고정 통계, 항상 DB 전체값에서 통계진행할것임
* @return
*/
public List<FlightStcsValueModel> getFlightStaticStcs(){
public List<FlightStcsValueModel> getFlightStaticStcs(String groupId){
// 권한이 유저권한, 그룹권한 모두 user면 true , user가 하나라도 아닐 경우 모두 false;
boolean authCheck = authCheck(groupId);
FlightStcsValueModel time = cntrlQueryRepository.getFlightTimeStcs();
FlightStcsValueModel distance = cntrlQueryRepository.getFlightDistanceStcs();
FlightStcsValueModel fltCount = cntrlQueryRepository.getFlightCountStcs();
FlightStcsValueModel time = cntrlQueryRepository.getFlightTimeStcs(authCheck, groupId);
FlightStcsValueModel distance = cntrlQueryRepository.getFlightDistanceStcs(authCheck, groupId);
FlightStcsValueModel fltCount = cntrlQueryRepository.getFlightCountStcs(authCheck, groupId);
List<FlightStcsValueModel> result = Arrays.asList(time, distance, fltCount);
@ -120,6 +162,8 @@ public class MainStatisticsService {
*/
public List<FlightStcsValueModel> fltStatics(String cate, String date, String[] formatParam){
List<FlightStcsValueModel> resultList = new ArrayList<>();
switch (cate) {

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

@ -1830,23 +1830,29 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* DB 데이터내에 가장 많은 비행시간을 가진 기체, 비행시간 SELECT
* @return
*/
public FlightStcsValueModel getFlightTimeStcs(){
public FlightStcsValueModel getFlightTimeStcs(boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
Expressions.stringTemplate(
"CONCAT(SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1})))))",
qCtrCntrlBas.cntrlEndDt,
qCtrCntrlBas.cntrlStDt
).as("value") // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(qCtrCntrlBas)
.where(builder)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.groupBy(qCtrCntrlBas.idntfNum)
.orderBy(Expressions.stringTemplate(
"SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF({0}, {1}))))",
@ -1947,25 +1953,34 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* 가장 많이 이동한 기체
* @return
*/
public FlightStcsValueModel getFlightDistanceStcs(){
public FlightStcsValueModel getFlightDistanceStcs(boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> queryResult = query
.select(
Projections.bean(FlightStcsValueModel.class,
qCtrCntrlBas.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qCtrCntrlBas.ttlDstnc.sum().as("value")
qCtrCntrlBas.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(qCtrCntrlBas)
.where(builder)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.groupBy(qCtrCntrlBas.idntfNum)
.orderBy(qCtrCntrlBas.ttlDstnc.sum().desc())
.limit(1)
.fetch();
log.warn("size => {}", queryResult.size());
.fetch();
if(queryResult.size() > 0){
result = queryResult.get(0);
@ -2043,10 +2058,16 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
* 가장 많이 비행한 기체
* @return
*/
public FlightStcsValueModel getFlightCountStcs(){
public FlightStcsValueModel getFlightCountStcs(boolean authCheck, String groupId){
FlightStcsValueModel result = new FlightStcsValueModel();
QCtrCntrlBas qCtrCntrlBas = QCtrCntrlBas.ctrCntrlBas;
QFltPlanCtrCntrlRel qFltPlanCtrCntrlRel = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QFltPlanBas qFltPlanBas = QFltPlanBas.fltPlanBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
List<FlightStcsValueModel> queryResult = query
.select(
@ -2056,6 +2077,11 @@ public List<AnlsHstryDetailModel> listCntrlHstry(String id){
)
)
.from(qCtrCntrlBas)
.where(builder)
.leftJoin(qFltPlanCtrCntrlRel)
.on(qCtrCntrlBas.cntrlId.eq(qFltPlanCtrCntrlRel.cntrlId))
.leftJoin(qFltPlanBas)
.on(qFltPlanCtrCntrlRel.planSno.eq(qFltPlanBas.planSno))
.groupBy(qCtrCntrlBas.idntfNum)
.orderBy(qCtrCntrlBas.cntrlId.count().desc())
.limit(1)

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

@ -1674,8 +1674,7 @@ public class FltPlanQueryRepository {
List<FlightStcsValueModel> result = query
.select(
Projections.bean(FlightStcsValueModel.class,
qFltPlanCtrCntrlRel.idntfNum.as("name"), // 결과 객체의 프로퍼티 이름을 지정
qFltPlanCtrCntrlRel.planSno.countDistinct().as("value")
qFltPlanCtrCntrlRel.idntfNum.as("name") // 결과 객체의 프로퍼티 이름을 지정
)
)
.from(qFltPlanCtrCntrlRel)

Loading…
Cancel
Save