diff --git a/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java b/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java index 83e103c..f96a194 100644 --- a/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java +++ b/src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java @@ -40,6 +40,7 @@ public class AnlsHstryController { @GetMapping(value = "/list") public ResponseEntity list(AnlsHstryGroupModel rq) { List rs = null; + ComnPagingRs response; //입력값 검증 if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) { @@ -48,7 +49,7 @@ public class AnlsHstryController { } try { - rs = service.list(rq); + response = service.list(rq); } catch (Exception e) { log.error("IGNORE : {}", e); @@ -56,7 +57,7 @@ public class AnlsHstryController { .body(new ErrorResponse("Server Error", "-1")); } - return ResponseEntity.ok().body(new SuccessResponse(rs)); + return ResponseEntity.ok().body(new SuccessResponse<>(response)); } diff --git a/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java b/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java index 4676ed8..5ec6b19 100644 --- a/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java +++ b/src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java @@ -65,7 +65,7 @@ public class AnlsHstryService { private JwtTokenUtil jwtTokenUtil; //비행이력현황 list - public List list(AnlsHstryGroupModel rq){ + public ComnPagingRs list(AnlsHstryGroupModel rq){ List group = jwtTokenUtil.getGroupAuthByToken(); Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); String userAccount = null; @@ -92,97 +92,18 @@ public class AnlsHstryService { idntfNum = ""; } - //GroupId로 ArcrftSno 찾기(그룹별로 비행이력 현황 보여주기 위해) - List arcrftSnoList = comArcrftBasRepository.findArcrftSno(rq.getGroupId()); - List idntfList = new ArrayList<>(); - for(ComArcrftBas bas : arcrftSnoList) { - //ArcrftSno로 idntfNum 찾기 - List list = comIdntBasRepository.findIdntfNum(bas.getArcrftSno()); - if(!list.isEmpty()) { - idntfList.addAll(list); - } - } - - //idntfNum으로 CntrlId 찾기 - List cntrlIdList = new ArrayList<>(); - for(ComIdntfBas idntf : idntfList) { - List list = ctrCntrlBasRepository.findCntrlId(stDate, endDate, idntf.getIdntfNum()); - if(!list.isEmpty()) { - cntrlIdList.addAll(list); - } - } - - //CntrlId로 Area 정보 찾기 - List areaList = new ArrayList<>(); - for(CtrCntrlBas bas : cntrlIdList) { - List list = ctrCntrlHstryAreaRepository.findHstryArea(bas.getCntrlId()); - if(!list.isEmpty()) { - areaList.addAll(list); - } - } - - //area 정보 returnList에 set - if(!areaList.isEmpty()) { - for(CtrCntrlHstryArea area : areaList) { - AnlsHstryRsModel model = new AnlsHstryRsModel(); - - model.setActnType(area.getActnType()); - model.setAreaNm(area.getAreaNm()); - model.setAreaType(area.getAreaType()); - model.setArea1(area.getArea1()); - model.setArea2(area.getArea2()); - model.setArea3(area.getArea3()); - model.setCntrlId(area.getCntrlId()); - model.setCreateDt(area.getCreateDt()); - model.setLandNm(area.getLandNm()); - model.setLandNum(area.getLandNum()); - model.setUpdateDt(area.getUpdateDt()); - model.setZipCd(area.getZipCd()); - returnList.add(model); - } - } - //bas 정보 cntrlId별로 찾기 - for(CtrCntrlBas cntrl : cntrlIdList) { - List basList = ctrCntrlBasRepository.findCntrlBas(stDate, endDate, cntrl.getCntrlId(), idntfNum); - - //bas 정보 returnList에 set - if(!basList.isEmpty()) { - for(CtrCntrlBas bas : basList) { - AnlsHstryRsModel model = new AnlsHstryRsModel(); - - model.setCntrlId(bas.getCntrlId()); - model.setAvrgSpeed(bas.getAvrgSpeed()); - model.setAvrgSpeedType(bas.getAvrgSpeedType()); - model.setBttrCnsmptn(bas.getBttrCnsmptn()); - model.setCntrlEndDt(bas.getCntrlEndDt()); - model.setCntrlStDt(bas.getCntrlStDt()); - model.setCreateDt(bas.getCreateDt()); - model.setEndTypeCd(bas.getEndTypeCd()); - model.setFlghtStDt(bas.getFlghtStDt()); - model.setIdntfNum(bas.getIdntfNum()); - model.setObjectTypeCd(bas.getObjectTypeCd()); - model.setStatusCd(bas.getStatusCd()); - model.setTtlDstnc(bas.getTtlDstnc()); - model.setTtlDstncType(bas.getTtlDstncType()); - model.setTtlTime(bas.getTtlTime()); - model.setTtlTimeType(bas.getTtlTimeType()); - model.setUpdateDt(bas.getUpdateDt()); - returnList.add(model); - } - } - } + PageImpl result = query.listCntrlBasRs(rq, userAccount, pageable); + long total = query.countCntrlBasRs(rq, cstmrSno, userAccount); -// long total = query.countCntrlBasRs(rq, cstmrSno, userAccount); -// -// long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); -// -// response.setItems(list.getContent()); -// response.setTotal(total); -// response.setPage(rq.getPage()); -// response.setTotalPage(totalPage); + long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); + + response.setItems(result.getContent()); + response.setTotal(total); + response.setPage(rq.getPage()); + response.setTotalPage(totalPage); - return returnList; + return response; } public AnlsHstryModel detail(String cntrlId) throws Exception{ diff --git a/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java b/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java index 425d1fa..2c9b620 100644 --- a/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java +++ b/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java @@ -62,7 +62,10 @@ public class BasGroupJoinService { throw new CustomException(ErrorCode.DATA_DUPLICATE); } + boolean isReJoin = query.isReJoin(rq.getCstmrSno(), rq.getGroupId()); //참여 정보 입력 하기 + + if(!isReJoin) { PtyCstmrGroup entity2 = new PtyCstmrGroup(); entity2.setGroupId(rq.getGroupId()); entity2.setGroupAuthCd(rq.getGroupAuthCd()); //생성한 사람은 최고 권한 부여 (MASTER , LEADER, NORMAL) 로 구분 하여 사용 @@ -72,7 +75,13 @@ public class BasGroupJoinService { entity2.setAprvlYn("N"); if(ptyCstmrGroupRepository.save(entity2) == null) throw new CustomException(ErrorCode.FAIL); - + }else { + PtyCstmrGroup entity = ptyCstmrGroupRepository.findRejoinUser(rq.getGroupId(), rq.getCstmrSno()); + entity.setJoinYn("Y"); + entity.setJoinDt(DateUtils.nowDate()); + if(ptyCstmrGroupRepository.save(entity) == null) + throw new CustomException(ErrorCode.FAIL); + } return true; } diff --git a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java index 14eff3f..d06e6bd 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java @@ -145,50 +145,35 @@ public class CtrCntrlQueryRepository{ @Cacheable(value = "cntrl-count") public long countCntrlBasRs(AnlsHstryGroupModel rq, int cstmrSno, String userAccount) { QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; - QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QComIdntfBas qComIdntfBasEntity = QComIdntfBas.comIdntfBas; QComArcrftBas qComArcrftBasEntity = QComArcrftBas.comArcrftBas; - QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - QPtyCstmrGroup qPtyCstmrGroupEntity = QPtyCstmrGroup.ptyCstmrGroup; - + QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; + BooleanBuilder builder = new BooleanBuilder(); - - builder.and(qCntrlBasEntity.statusCd.eq("99")); - log.debug("Params ===> " +rq.toString()); -// if(userAccount.equals("USER")) { - if(userAccount.equals("NORMAL")) { - builder.and(qFltPlanBasEntity.cstmrSno.eq(cstmrSno)); - builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId())); - } else { - builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId())); - } - + Calendar end = Calendar.getInstance(); end.setTime(DateUtils.stringToDate(rq.getEndDate())); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); - builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); - builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate)); - + builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId())); + builder.and(qCntrlBasEntity.cntrlStDt.goe(DateUtils.stringToDate(rq.getStDate()))); + builder.and(qCntrlBasEntity.cntrlEndDt.loe(endDate)); + if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } long count = query .select(qCntrlBasEntity) - .from(qCntrlBasEntity) + .from(qComArcrftBasEntity) + .leftJoin(qComIdntfBasEntity) + .on(qComArcrftBasEntity.arcrftSno.eq(qComIdntfBasEntity.arcrftSno)) + .leftJoin(qCntrlBasEntity) + .on(qComIdntfBasEntity.idntfNum.eq(qCntrlBasEntity.idntfNum)) .leftJoin(qCntrlHstryAreaEntity) .on(qCntrlBasEntity.cntrlId.eq(qCntrlHstryAreaEntity.cntrlId)) - .on(qCntrlHstryAreaEntity.actnType.eq("01")) - .leftJoin(qComIdntfBasEntity) - .on(qCntrlBasEntity.idntfNum.eq(qComIdntfBasEntity.idntfNum)) - .leftJoin(qComArcrftBasEntity) - .on(qComIdntfBasEntity.arcrftSno.eq(qComArcrftBasEntity.arcrftSno)) - .leftJoin(qFltPlanBasEntity) - .on(qComArcrftBasEntity.groupId.eq(qFltPlanBasEntity.groupId)) - .leftJoin(qPtyCstmrGroupEntity) - .on(qComArcrftBasEntity.groupId.eq(qPtyCstmrGroupEntity.groupId)) .where(builder) + .orderBy(qCntrlBasEntity.cntrlStDt.desc()) .fetchCount(); return count; @@ -197,89 +182,52 @@ public class CtrCntrlQueryRepository{ @Cacheable(value = "cntrl-list") - public PageImpl listCntrlBasRs(AnlsHstryGroupModel rq, int cstmrSno, String userAccount, Pageable pageable){ - + public PageImpl listCntrlBasRs(AnlsHstryGroupModel rq, String userAccount, Pageable pageable){ QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; - QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; QComIdntfBas qComIdntfBasEntity = QComIdntfBas.comIdntfBas; QComArcrftBas qComArcrftBasEntity = QComArcrftBas.comArcrftBas; - QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; - QPtyCstmrGroup qPtyCstmrGroupEntity = QPtyCstmrGroup.ptyCstmrGroup; + QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea; BooleanBuilder builder = new BooleanBuilder(); - builder.and(qCntrlBasEntity.statusCd.eq("99")); - log.debug("Params ===> " +rq.toString()); -// if(userAccount.equals("USER")) { - if(userAccount.equals("NORMAL")) { - builder.and(qFltPlanBasEntity.cstmrSno.eq(cstmrSno)); - builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId())); - } else { - builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId())); - } - Calendar end = Calendar.getInstance(); end.setTime(DateUtils.stringToDate(rq.getEndDate())); end.add(Calendar.DATE, 1); Date endDate = end.getTime(); - builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); - builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate)); + builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId())); + builder.and(qCntrlBasEntity.cntrlStDt.goe(DateUtils.stringToDate(rq.getStDate()))); + builder.and(qCntrlBasEntity.cntrlEndDt.loe(endDate)); if(!StringUtils.isEmpty(rq.getSearch1())) { builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); } - + List queryList = query.select( - Projections.bean(AnlsHstryRsModel.class , - qCntrlBasEntity.cntrlId, - qCntrlBasEntity.idntfNum, - qCntrlBasEntity.statusCd, - qCntrlBasEntity.objectTypeCd, - qCntrlBasEntity.flghtStDt, - qCntrlBasEntity.flghtEndDt, - qCntrlBasEntity.cntrlStDt, - qCntrlBasEntity.cntrlEndDt, - qCntrlBasEntity.ttlTime, - qCntrlBasEntity.ttlTimeType, - qCntrlBasEntity.ttlDstnc, - qCntrlBasEntity.ttlDstncType, - qCntrlBasEntity.avrgSpeed, - qCntrlBasEntity.avrgSpeedType, - qCntrlBasEntity.bttrCnsmptn, - qCntrlBasEntity.endTypeCd, - qCntrlBasEntity.createDt, - qCntrlBasEntity.updateDt, - qCntrlHstryAreaEntity.actnType, - qCntrlHstryAreaEntity.area1, - qCntrlHstryAreaEntity.area2, - qCntrlHstryAreaEntity.area3, - qCntrlHstryAreaEntity.areaNm, - qCntrlHstryAreaEntity.areaType, - qCntrlHstryAreaEntity.landNm, - qCntrlHstryAreaEntity.landNum, - qCntrlHstryAreaEntity.zipCd, - qComArcrftBasEntity.groupId, - qFltPlanBasEntity.cstmrSno + Projections.bean(AnlsHstryRsModel.class , + qCntrlBasEntity.cntrlId, + qCntrlBasEntity.idntfNum, + qCntrlBasEntity.cntrlStDt, + qCntrlHstryAreaEntity.area1, + qCntrlHstryAreaEntity.area2, + qCntrlHstryAreaEntity.area3, + qCntrlHstryAreaEntity.landNm, + qCntrlHstryAreaEntity.landNum )) - .from(qCntrlBasEntity) + .from(qComArcrftBasEntity) + .leftJoin(qComIdntfBasEntity) + .on(qComArcrftBasEntity.arcrftSno.eq(qComIdntfBasEntity.arcrftSno)) + .leftJoin(qCntrlBasEntity) + .on(qComIdntfBasEntity.idntfNum.eq(qCntrlBasEntity.idntfNum)) .leftJoin(qCntrlHstryAreaEntity) .on(qCntrlBasEntity.cntrlId.eq(qCntrlHstryAreaEntity.cntrlId)) - .on(qCntrlHstryAreaEntity.actnType.eq("01")) - .leftJoin(qComIdntfBasEntity) - .on(qCntrlBasEntity.idntfNum.eq(qComIdntfBasEntity.idntfNum)) - .leftJoin(qComArcrftBasEntity) - .on(qComIdntfBasEntity.arcrftSno.eq(qComArcrftBasEntity.arcrftSno)) - .leftJoin(qFltPlanBasEntity) - .on(qComArcrftBasEntity.groupId.eq(qFltPlanBasEntity.groupId)) - .leftJoin(qPtyCstmrGroupEntity) - .on(qComArcrftBasEntity.groupId.eq(qPtyCstmrGroupEntity.groupId)) .where(builder) - .orderBy(qCntrlBasEntity.cntrlStDt.asc()) + .orderBy(qCntrlBasEntity.cntrlStDt.desc()) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch(); - + List result = new ArrayList<>(); + for(AnlsHstryRsModel model: queryList) { String addr = ""; @@ -305,7 +253,7 @@ public class CtrCntrlQueryRepository{ model.setStArea(addr); result.add(model); } - + return new PageImpl<>(result, pageable, result.size()); } diff --git a/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrGroupRepository.java b/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrGroupRepository.java index a16c27b..376a113 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrGroupRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrGroupRepository.java @@ -26,4 +26,8 @@ public interface PtyCstmrGroupRepository extends JpaRepository changeGroupAprvlYn(@Param("cstmrSno") int cstmrSno); + @Query("select p from PtyCstmrGroup p " + + "where p.groupId = :groupId " + + "and p.cstmrSno = :cstmrSno") + PtyCstmrGroup findRejoinUser(@Param("groupId") String groupId, @Param("cstmrSno") int cstmrSno); } diff --git a/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java b/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java index cc559c4..d8a9dd9 100644 --- a/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java +++ b/src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java @@ -282,20 +282,33 @@ public class PtyGroupQueryRepository{ */ public boolean isNotJoin(int cstmrSno , String groupId) { QPtyCstmrGroup dtl = QPtyCstmrGroup.ptyCstmrGroup; - BooleanBuilder builder = new BooleanBuilder(); - builder.and(dtl.joinYn.eq("Y")); - builder.and(dtl.cstmrSno.eq(cstmrSno)); - builder.and(dtl.groupId.eq(groupId)); - long count = query.select(dtl.cstmrGroupSno).from(dtl).where(builder).fetchCount(); + BooleanBuilder builder = new BooleanBuilder(); + builder.and(dtl.joinYn.eq("Y")); + builder.and(dtl.cstmrSno.eq(cstmrSno)); + builder.and(dtl.groupId.eq(groupId)); + long count = query.select(dtl.cstmrGroupSno).from(dtl).where(builder).fetchCount(); - if(count == 0) { - return true; - }else { - return false; - } + if(count == 0) { + return true; + }else { + return false; + } + } + + public boolean isReJoin(int cstmrSno , String groupId) { + QPtyCstmrGroup dtl = QPtyCstmrGroup.ptyCstmrGroup; + BooleanBuilder builder = new BooleanBuilder(); + builder.and(dtl.cstmrSno.eq(cstmrSno)); + builder.and(dtl.groupId.eq(groupId)); + long count = query.select(dtl.cstmrGroupSno).from(dtl).where(builder).fetchCount(); - + if(count >= 1) { + return true; + }else { + return false; + } } + /** * 그룹 사용자 목록 조회