Browse Source

Merge commit '5d6e3ff6780c7e47b5e113b1180a899692087e12' into feature/current/flight-plan

pull/13/head
lkd9125(이경도) 10 months ago
parent
commit
67c911d94c
  1. 31
      pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java
  2. 24
      pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java
  3. 35
      pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java
  4. 68
      pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java
  5. 33
      pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java

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

@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.palnet.biz.api.comn.response.BasicResponse;
import com.palnet.biz.api.comn.response.ErrorResponse;
import com.palnet.biz.api.comn.response.SuccessResponse;
import com.palnet.biz.api.main.dash.model.MainDashFlightListModel;
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;
@ -303,17 +304,35 @@ public class MainDashController {
return ResponseEntity.ok().body(new SuccessResponse<List<MainDashStcsModel>>(result));
}
@GetMapping(value = "/dron-flight/list/")
@ApiOperation(value = "드론 별 비행운항 목록")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
public ResponseEntity<? extends BasicResponse> dronFlightList(@RequestParam String groupId){
List<MainDashFlightListModel> result = null;
try {
result = service.mainDashDronFlightList(groupId);
}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<MainDashFlightListModel>>(result));
}
@GetMapping("/current/flight-plan")
@ApiOperation(value = "김포공항, 비정상상황 비행 통계")
@ApiOperation(value = "일일 비행통계")
@Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API")
@ApiImplicitParams({
@ApiImplicitParam(name = "date",value = "날짜", dataTypeClass = String.class),
@ApiImplicitParam(name = "type",value = "날짜형식", dataTypeClass = String.class)
@ApiImplicitParam(name = "groupId",value = "그룹아이디", dataTypeClass = String.class)
})
public ResponseEntity<? extends BasicResponse> currentFlightPlan(@RequestParam(required = false) String groupId){
log.warn("groupId => {}", groupId);
List<MainCurrentStcsModel> result = new ArrayList<>();
try {
result = service.currentFlightPlan(groupId);
} catch (Exception e){
@ -322,11 +341,7 @@ public class MainDashController {
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<List<MainCurrentStcsModel>>(result));
}
}

24
pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java

@ -0,0 +1,24 @@
package com.palnet.biz.api.main.dash.model;
import java.time.Instant;
import lombok.Data;
@Data
public class MainDashFlightListModel {
private String groupNm;
private String memberName;
private String idntfNum;
private Instant schFltStDt;
private Instant schFltEndDt;
private Object totalFlightTime;
private String status;
}

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

@ -3,6 +3,8 @@ package com.palnet.biz.api.main.dash.service;
import java.util.*;
import java.util.stream.Collectors;
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.api.main.dash.model.MainCurrentStcsModel;
import com.palnet.biz.api.main.statistics.service.MainStatisticsService;
@ -17,9 +19,11 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.palnet.biz.api.main.dash.model.MainDashFlightListModel;
import com.palnet.biz.api.main.dash.model.MainDashListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanArcrftRepository;
import com.palnet.biz.jpa.repository.flt.FltPlanQueryRepository;
@Service
@ -43,7 +47,11 @@ public class MainDashService {
@Autowired
private MainStatisticsService mainStatisticsService;
@Autowired
private FltPlanArcrftRepository fltPlanArcrftRepository;
@Autowired
private JwtTokenUtil token;
/**
@ -116,6 +124,31 @@ public class MainDashService {
return resultList;
}
public List<MainDashFlightListModel> mainDashDronFlightList(String groupId){
String userAuth = token.getUserAuthByToken();
List<JwtGroupModel> userGroupList = token.getGroupAuthByToken();
log.info(">>>>>>>>> groupList {} " , userAuth);
BasGroupModel myFirstGroup = new BasGroupModel();
List<MainDashFlightListModel> resultList = new ArrayList<MainDashFlightListModel>();
if(userAuth.equals("SUPER")) {
resultList = fltPlanQueryRepository.getFlightDronList("KAC", groupId);
}else {
myFirstGroup = ptyGroupQueryRepository.myFirstGroup(userGroupList);
resultList = fltPlanQueryRepository.getFlightDronList(myFirstGroup.getGroupId(), "all");
}
return resultList;
}
/**
* 김포공항, 비행승인 통계
* @param yyyymm
@ -230,7 +263,7 @@ public class MainDashService {
boolean authCheck = mainStatisticsService.authCheck(groupId);
String[] dateCate = {"-2", "-1", "0", "1"};
String[] dateCate = {"-2", "-1", "0", "1"}; // 2일전, 전일, 금일, 명일
List<MainCurrentStcsModel> result = new ArrayList<>();

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

@ -26,6 +26,7 @@ import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel;
import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel;
import com.palnet.biz.api.bas.flight.model.BasFlightScheduleRs;
import com.palnet.biz.api.comn.file.service.ComnFileService;
import com.palnet.biz.api.main.dash.model.MainDashFlightListModel;
import com.palnet.biz.api.main.dash.model.MainDashStcsModel;
import com.palnet.biz.api.main.statistics.model.FlightStcsValueModel;
import com.palnet.biz.jpa.entity.FltPlanBas;
@ -54,11 +55,18 @@ import com.palnet.comn.utils.InstantUtils;
import com.querydsl.core.BooleanBuilder;
import com.querydsl.core.group.GroupBy;
import com.querydsl.core.types.ConstantImpl;
import com.querydsl.core.types.Expression;
import com.querydsl.core.types.ExpressionUtils;
import com.querydsl.core.types.Projections;
import com.querydsl.core.types.dsl.CaseBuilder;
import com.querydsl.core.types.dsl.ComparableExpressionBase;
import com.querydsl.core.types.dsl.DateTemplate;
import com.querydsl.core.types.dsl.Expressions;
import com.querydsl.core.types.dsl.StringTemplate;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
import com.querydsl.sql.SQLExpressions;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -1851,8 +1859,6 @@ public class FltPlanQueryRepository {
BooleanBuilder builder = getCurrentBooleanBuilder(groupId, authCheck, cate, qFltPlanBas);
List<FltPlanBas> stcsValues = query
.select(
Projections.bean(
@ -1874,12 +1880,9 @@ public class FltPlanQueryRepository {
builder.and(qFltPlanBas.groupId.eq(groupId));
if(authCheck) builder.and(qFltPlanBas.cstmrSno.eq(jwtTokenUtil.getCstmrSnoByToken()));
String dateFormat = "%Y-%m-%d";
BooleanExpression dateExpression = null;
switch (cate){
case "-2" :
dateExpression =
Expressions.stringTemplate("DATE_FORMAT({0}, {1})", qFltPlanBas.createDt, "%Y-%m-%d")
.eq(LocalDate.now().minusDays(2).toString());
@ -1915,4 +1918,59 @@ public class FltPlanQueryRepository {
}
public List<MainDashFlightListModel> getFlightDronList(String orderBy, String groupId){
QComIdntfBas cib = QComIdntfBas.comIdntfBas;
QFltPlanArcrft fpa = QFltPlanArcrft.fltPlanArcrft;
QFltPlanBas fpb = QFltPlanBas.fltPlanBas;
QPtyGroupBas pgb = QPtyGroupBas.ptyGroupBas;
QFltPlanCtrCntrlRel fpccr = QFltPlanCtrCntrlRel.fltPlanCtrCntrlRel;
QCtrCntrlBas ccb = QCtrCntrlBas.ctrCntrlBas;
Expression<Integer> groupOrder = new CaseBuilder()
.when(pgb.groupNm.eq(orderBy)).then(0)
.otherwise(1);
BooleanBuilder builder = new BooleanBuilder();
if(!groupId.equals("all")) {
builder.and(pgb.groupId.eq(groupId));
}
Instant now = Instant.now();
List<MainDashFlightListModel> result = query
.select(Projections.bean(MainDashFlightListModel.class,
pgb.groupNm,
fpb.memberName,
fpa.idntfNum,
ccb.cntrlStDt,
ccb.cntrlEndDt,
Expressions.stringTemplate(
"CONCAT(SEC_TO_TIME(TIME_TO_SEC(TIMEDIFF({0}, {1}))))",
ccb.cntrlEndDt,
ccb.cntrlStDt
).as("totalFlightTime"),
new CaseBuilder()
.when(ccb.statusCd.eq("01")).then("비행 중")
.when(ccb.statusCd.eq("99")).then("비행 완료")
.otherwise("비행 대기 중").as("status")
))
.from(fpa)
.leftJoin(fpb).on(fpb.planSno.eq(fpa.planSno))
.leftJoin(pgb).on(pgb.groupId.eq(fpb.groupId))
.leftJoin(cib).on(cib.idntfNum.eq(fpa.idntfNum))
.leftJoin(fpccr).on(fpccr.planSno.eq(fpb.planSno))
.leftJoin(ccb).on(ccb.cntrlId.eq(fpccr.cntrlId))
.where(
builder
.and(fpb.schFltStDt.between(now, now.plus(Duration.ofDays(1))))
.and(fpb.schFltEndDt.between(now, now.plus(Duration.ofDays(1))))
.and(fpb.planSno.isNotNull())
)
.orderBy(((ComparableExpressionBase<Integer>) groupOrder).desc(), cib.createDt.asc())
.fetch();
return result;
}
}

33
pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java

@ -11,6 +11,7 @@ import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Repository;
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel;
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil;
import com.palnet.biz.api.bas.group.model.BasGroupAprvModel;
import com.palnet.biz.api.bas.group.model.BasGroupAprvRqModel;
@ -241,6 +242,38 @@ public class PtyGroupQueryRepository{
}
/**
* 나의 그룹 - 내가 생성했거나 , 가입한 그룹 그룹의 생성일자가 가장 빠른 그룹
* @param cstmrSno
* @return
*/
public BasGroupModel myFirstGroup(List<JwtGroupModel> groupList){
QPtyGroupBas bas = QPtyGroupBas.ptyGroupBas;
BooleanBuilder builder = new BooleanBuilder();
builder.and(bas.useYn.eq("Y"));
for(JwtGroupModel group : groupList) {
builder.or(bas.groupId.in(group.getGroupId()));
}
BasGroupModel result =
query.select(Projections.bean(BasGroupModel.class ,
bas.groupId,
bas.groupNm,
bas.groupTypeCd,
bas.trmnlId,
bas.updateDt,
bas.createDt
)).from(bas)
.where(builder)
.orderBy(bas.createDt.asc())
.fetchFirst();
return result;
}
/**
* 참여할 그룹 목록
* @param cstmrSno

Loading…
Cancel
Save