From a1083804be5931f8425538f21092718989920072 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9E=AC=EC=9A=B0?= <박재우@host.docker.internal> Date: Tue, 14 Nov 2023 16:30:03 +0900 Subject: [PATCH 1/2] =?UTF-8?q?=EB=93=9C=EB=A1=A0=EC=9A=B4=ED=95=AD?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dash/controller/MainDashController.java | 19 +++++- .../dash/model/MainDashFlightListModel.java | 24 ++++++++ .../main/dash/service/MainDashService.java | 35 ++++++++++- .../flt/FltPlanQueryRepository.java | 59 +++++++++++++++++++ 4 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java index fe706dce..f139250c 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/controller/MainDashController.java @@ -16,6 +16,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; @@ -300,7 +301,23 @@ public class MainDashController { return ResponseEntity.ok().body(new SuccessResponse>(result)); } - + @GetMapping(value = "/dron-flight/list/") + @ApiOperation(value = "드론 별 비행운항 목록") + @Tag(name = "메인화면 컨트롤러", description = "메인화면 관련 API") + public ResponseEntity dronFlightList(@RequestParam String groupId){ + + List 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>(result)); + } diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/model/MainDashFlightListModel.java new file mode 100644 index 00000000..62020b19 --- /dev/null +++ b/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; + +} diff --git a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java index 7fcc26d2..9f0f8238 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/main/dash/service/MainDashService.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; 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.jpa.repository.pty.*; @@ -16,9 +18,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 @@ -39,7 +43,11 @@ public class MainDashService { @Autowired private CtrCntrlQueryRepository query; - + @Autowired + private FltPlanArcrftRepository fltPlanArcrftRepository; + + @Autowired + private JwtTokenUtil token; /** @@ -112,6 +120,31 @@ public class MainDashService { return resultList; } + public List mainDashDronFlightList(String groupId){ + + String userAuth = token.getUserAuthByToken(); + List userGroupList = token.getGroupAuthByToken(); + + + log.info(">>>>>>>>> groupList {} " , userAuth); + + BasGroupModel myFirstGroup = new BasGroupModel(); + + List resultList = new ArrayList(); + + if(userAuth.equals("SUPER")) { + + resultList = fltPlanQueryRepository.getFlightDronList("KAC", groupId); + + }else { + + myFirstGroup = ptyGroupQueryRepository.myFirstGroup(userGroupList); + + resultList = fltPlanQueryRepository.getFlightDronList(myFirstGroup.getGroupId(), "all"); + } + + return resultList; + } /** * 김포공항, 비행승인 통계 * @param yyyymm diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java index 84c52c1c..6c3baa13 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java +++ b/pav-server/src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java @@ -22,6 +22,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; @@ -50,15 +51,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; @@ -1788,4 +1792,59 @@ public class FltPlanQueryRepository { return result; } + + public List 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 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 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) groupOrder).desc(), cib.createDt.asc()) + .fetch(); + + return result; + } } \ No newline at end of file From 5d6e3ff6780c7e47b5e113b1180a899692087e12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=9E=AC=EC=9A=B0?= <박재우@host.docker.internal> Date: Tue, 14 Nov 2023 16:38:33 +0900 Subject: [PATCH 2/2] . --- .../pty/PtyGroupQueryRepository.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java b/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java index c2f450cc..82e1000d 100644 --- a/pav-server/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java +++ b/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 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