From 44b9d1fb17d8b83ed2851db45dceceee49cf3c03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?qkr7828=28=EB=B0=95=EC=9E=AC=EC=9A=B0=29?= <박재우@DESKTOP-EF7ECBO> Date: Fri, 7 Oct 2022 18:17:53 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=95=20=EC=9E=91=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/BasGroupUserController.java | 19 +--- .../group/model/BasGroupUserListModel.java | 4 +- .../group/service/BasGroupUserService.java | 38 ++++--- .../pty/PtyGroupQueryRepository.java | 103 +++++++++++++++++- 4 files changed, 127 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupUserController.java b/src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupUserController.java index 4a68faf..998fdff 100644 --- a/src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupUserController.java +++ b/src/main/java/com/palnet/biz/api/bas/group/controller/BasGroupUserController.java @@ -4,38 +4,29 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import io.swagger.annotations.ApiOperation; -import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.util.StringUtils; -import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; 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.hstry.service.AnlsHstryService; -import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; import com.palnet.biz.api.bas.group.model.BasGroupUserListModel; import com.palnet.biz.api.bas.group.model.BasGroupUserModel; -import com.palnet.biz.api.bas.group.model.BasGroupUserRqModel; import com.palnet.biz.api.bas.group.service.BasGroupUserService; +import com.palnet.biz.api.comn.model.ComnPagingRs; 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.comn.code.RSErrorCode; import com.palnet.comn.exception.CustomException; -import com.palnet.comn.utils.JsonUtils; +import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -54,7 +45,7 @@ public class BasGroupUserController { @ApiOperation(value = "그룹 사용자 조회") @Tag(name = "그룹 사용자 컨트롤러", description = "그룹 사용자 관련 API") public ResponseEntity list(BasGroupUserListModel rq) { - List result = null; + ComnPagingRs result = null; if(StringUtils.isEmpty(rq.getCstmrSno())) { return ResponseEntity.status(HttpStatus.OK) @@ -71,7 +62,7 @@ public class BasGroupUserController { .body(new ErrorResponse("Server Error", "-1")); } - return ResponseEntity.ok().body(new SuccessResponse(result)); + return ResponseEntity.ok().body(new SuccessResponse<>(result)); } diff --git a/src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserListModel.java b/src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserListModel.java index cfb4f45..1e154d9 100644 --- a/src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserListModel.java +++ b/src/main/java/com/palnet/biz/api/bas/group/model/BasGroupUserListModel.java @@ -1,9 +1,11 @@ package com.palnet.biz.api.bas.group.model; +import com.palnet.biz.api.comn.model.ComnPagingModel; + import lombok.Data; @Data -public class BasGroupUserListModel{ +public class BasGroupUserListModel extends ComnPagingModel{ private String memberName; diff --git a/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupUserService.java b/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupUserService.java index 7033a66..77e2744 100644 --- a/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupUserService.java +++ b/src/main/java/com/palnet/biz/api/bas/group/service/BasGroupUserService.java @@ -2,35 +2,25 @@ package com.palnet.biz.api.bas.group.service; import java.util.List; import java.util.Optional; -import java.util.UUID; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import com.palnet.biz.api.anls.hstry.model.AnlsHstryModel; -import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel; -import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; -import com.palnet.biz.api.bas.group.model.BasGroupJoinModel; -import com.palnet.biz.api.bas.group.model.BasGroupModel; -import com.palnet.biz.api.bas.group.model.BasGroupRqModel; +import com.palnet.biz.api.anls.hstry.model.AnlsHstryRsModel; import com.palnet.biz.api.bas.group.model.BasGroupUserListModel; import com.palnet.biz.api.bas.group.model.BasGroupUserModel; -import com.palnet.biz.api.bas.group.model.BasGroupUserRqModel; -import com.palnet.biz.jpa.entity.CtrCntrlBas; +import com.palnet.biz.api.comn.model.ComnPagingRs; import com.palnet.biz.jpa.entity.PtyCstmrGroup; -import com.palnet.biz.jpa.entity.PtyGroupBas; -import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; -import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; import com.palnet.biz.jpa.repository.pty.PtyCstmrGroupRepository; import com.palnet.biz.jpa.repository.pty.PtyGroupBasRepository; import com.palnet.biz.jpa.repository.pty.PtyGroupQueryRepository; import com.palnet.comn.code.ErrorCode; import com.palnet.comn.exception.CustomException; -import com.palnet.comn.utils.DateUtils; @Service public class BasGroupUserService { @@ -54,12 +44,24 @@ public class BasGroupUserService { * @param rq * @return */ - public List list(BasGroupUserListModel rq){ + public ComnPagingRs list(BasGroupUserListModel rq){ + ComnPagingRs response = new ComnPagingRs<>(); - List resultList = query.userList(rq); + Pageable pageable = PageRequest.of(rq.getPage()-1, rq.getRecord()); - return resultList; + PageImpl result = query.userList(rq, pageable); + + long total = query.userCount(rq); + + 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 response; } 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 5b12f0b..4ef965a 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 @@ -489,7 +489,7 @@ public class PtyGroupQueryRepository{ * @param rq * @return */ - public List userList(BasGroupUserListModel rq){ + public PageImpl userList(BasGroupUserListModel rq, Pageable pageable){ QPtyGroupBas bas = QPtyGroupBas.ptyGroupBas; QPtyCstmrGroup dtl = QPtyCstmrGroup.ptyCstmrGroup; QPtyCstmrBas cstmr = QPtyCstmrBas.ptyCstmrBas; @@ -555,6 +555,8 @@ public class PtyGroupQueryRepository{ .where(builder) .orderBy(bas.createDt.desc()) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()) .fetch(); List result = new ArrayList(); if(!(rq.getMemberName() == null) && !StringUtils.isEmpty(rq.getMemberName())) { @@ -565,7 +567,7 @@ public class PtyGroupQueryRepository{ result.add(model); } } - return result; + return new PageImpl<>(result, pageable, result.size()); } for(BasGroupUserModel model : queryResult) { if(!(model.getMemberName() == null)) { @@ -574,9 +576,102 @@ public class PtyGroupQueryRepository{ result.add(model); } } - return result; + return new PageImpl<>(result, pageable, result.size()); + } + public long userCount(BasGroupUserListModel rq){ + QPtyGroupBas bas = QPtyGroupBas.ptyGroupBas; + QPtyCstmrGroup dtl = QPtyCstmrGroup.ptyCstmrGroup; + QPtyCstmrBas cstmr = QPtyCstmrBas.ptyCstmrBas; + QPtyCstmrDtl cstmrDtl = QPtyCstmrDtl.ptyCstmrDtl; + + BooleanBuilder builder = new BooleanBuilder(); + + builder.and(bas.useYn.eq("Y")); + builder.and(dtl.joinYn.eq("Y")); + builder.and(dtl.aprvlYn.eq("Y")); + builder.and(bas.groupId.eq(rq.getGroupId())); +// if(appAuth.equals("USER") || appAuth.equals("ROLE_USER")) { +// builder.and(bas.groupId.in( +// JPAExpressions +// .select(bas.groupId) +// .from(bas) +// .leftJoin(dtl) +// .on(bas.groupId.eq(dtl.groupId)) +// .where(bas.useYn.eq("Y")) +// .where(dtl.cstmrSno.eq(rq.getCstmrSno())) +// .where(dtl.groupAuthCd.eq("MASTER").or(dtl.groupAuthCd.eq("LEADER"))) +// +// )); +// } +// if(!StringUtils.isEmpty(rq.getGroupNm())) { +// builder.and(bas.groupNm.like("%" + rq.getGroupNm() + "%")); +// } +// +// if(!StringUtils.isEmpty(rq.getMemberName())) { +// String memberName = EncryptUtils.encrypt(rq.getMemberName()); +// builder.and(cstmrDtl.memberName.eq(memberName)); +// } + + +// if(!StringUtils.isEmpty(rq.getMemberName())) { +// builder.and(dtl.aprvlYn.eq(rq.getAprvYn())); +// } +// + + List queryResult = + query.select(Projections.bean(BasGroupUserModel.class , + bas.groupId, + bas.groupNm, + bas.groupTypeCd, + bas.updateDt, + bas.createDt, + dtl.cstmrGroupSno, + dtl.cstmrSno, + dtl.joinDt, + dtl.joinYn, + dtl.aprvlDt, + dtl.groupAuthCd, + cstmrDtl.memberName, + cstmr.userId + )).from(bas) + .leftJoin(dtl) + .on(bas.groupId.eq(dtl.groupId)) + .leftJoin(cstmr) + .on(dtl.cstmrSno.eq(cstmr.cstmrSno)) + .on(cstmr.cstmrStatusCd.eq("A")) + .leftJoin(cstmrDtl) + .on(cstmr.cstmrSno.eq(cstmrDtl.cstmrSno)) + .where(builder) + + .orderBy(bas.createDt.desc()) + .fetch(); + long cnt = 0; + List result = new ArrayList(); + if(!(rq.getMemberName() == null) && !StringUtils.isEmpty(rq.getMemberName())) { + for(BasGroupUserModel model : queryResult) { + String memberName = EncryptUtils.decrypt(model.getMemberName()); + if(memberName.contains(rq.getMemberName())) { + model.setMemberName(memberName); + result.add(model); + } + } + for(BasGroupUserModel list : result) { + cnt++; + } + return cnt; + } + for(BasGroupUserModel model : queryResult) { + if(!(model.getMemberName() == null)) { + String memberName = EncryptUtils.decrypt(model.getMemberName()); + model.setMemberName(memberName); + result.add(model); + } + } + for(BasGroupUserModel list : result) { + cnt++; + } + return cnt; } - public List groupTop3(int cstmrSno){ QPtyGroupBas bas = QPtyGroupBas.ptyGroupBas;