Browse Source

비행이력 - 페이징 작업 , 그룹 탈퇴후 재가입시 DB 중복되는 현상 수정

Test
qkr7828(박재우) 2 years ago
parent
commit
20f4221959
  1. 5
      src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java
  2. 97
      src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java
  3. 11
      src/main/java/com/palnet/biz/api/bas/group/service/BasGroupJoinService.java
  4. 98
      src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java
  5. 4
      src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrGroupRepository.java
  6. 13
      src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java

5
src/main/java/com/palnet/biz/api/anls/hstry/controller/AnlsHstryController.java

@ -40,6 +40,7 @@ public class AnlsHstryController {
@GetMapping(value = "/list") @GetMapping(value = "/list")
public ResponseEntity<? extends BasicResponse> list(AnlsHstryGroupModel rq) { public ResponseEntity<? extends BasicResponse> list(AnlsHstryGroupModel rq) {
List<AnlsHstryRsModel> rs = null; List<AnlsHstryRsModel> rs = null;
ComnPagingRs<AnlsHstryRsModel> response;
//입력값 검증 //입력값 검증
if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) { if(rq.getStDate() == null || !(rq.getStDate().length() == 10) || rq.getEndDate() ==null || !(rq.getEndDate().length() == 10) ) {
@ -48,7 +49,7 @@ public class AnlsHstryController {
} }
try { try {
rs = service.list(rq); response = service.list(rq);
} catch (Exception e) { } catch (Exception e) {
log.error("IGNORE : {}", e); log.error("IGNORE : {}", e);
@ -56,7 +57,7 @@ public class AnlsHstryController {
.body(new ErrorResponse("Server Error", "-1")); .body(new ErrorResponse("Server Error", "-1"));
} }
return ResponseEntity.ok().body(new SuccessResponse<List>(rs)); return ResponseEntity.ok().body(new SuccessResponse<>(response));
} }

97
src/main/java/com/palnet/biz/api/anls/hstry/service/AnlsHstryService.java

@ -65,7 +65,7 @@ public class AnlsHstryService {
private JwtTokenUtil jwtTokenUtil; private JwtTokenUtil jwtTokenUtil;
//비행이력현황 list //비행이력현황 list
public List<AnlsHstryRsModel> list(AnlsHstryGroupModel rq){ public ComnPagingRs<AnlsHstryRsModel> list(AnlsHstryGroupModel rq){
List<JwtGroupModel> group = jwtTokenUtil.getGroupAuthByToken(); List<JwtGroupModel> group = jwtTokenUtil.getGroupAuthByToken();
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken(); Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken();
String userAccount = null; String userAccount = null;
@ -92,97 +92,18 @@ public class AnlsHstryService {
idntfNum = ""; idntfNum = "";
} }
//GroupId로 ArcrftSno 찾기(그룹별로 비행이력 현황 보여주기 위해) PageImpl<AnlsHstryRsModel> result = query.listCntrlBasRs(rq, userAccount, pageable);
List<ComArcrftBas> arcrftSnoList = comArcrftBasRepository.findArcrftSno(rq.getGroupId());
List<ComIdntfBas> idntfList = new ArrayList<>();
for(ComArcrftBas bas : arcrftSnoList) {
//ArcrftSno로 idntfNum 찾기
List<ComIdntfBas> list = comIdntBasRepository.findIdntfNum(bas.getArcrftSno());
if(!list.isEmpty()) {
idntfList.addAll(list);
}
}
//idntfNum으로 CntrlId 찾기 long total = query.countCntrlBasRs(rq, cstmrSno, userAccount);
List<CtrCntrlBas> cntrlIdList = new ArrayList<>();
for(ComIdntfBas idntf : idntfList) {
List<CtrCntrlBas> list = ctrCntrlBasRepository.findCntrlId(stDate, endDate, idntf.getIdntfNum());
if(!list.isEmpty()) {
cntrlIdList.addAll(list);
}
}
//CntrlId로 Area 정보 찾기
List<CtrCntrlHstryArea> areaList = new ArrayList<>();
for(CtrCntrlBas bas : cntrlIdList) {
List<CtrCntrlHstryArea> 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<CtrCntrlBas> 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);
}
}
}
long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord();
// long total = query.countCntrlBasRs(rq, cstmrSno, userAccount); response.setItems(result.getContent());
// response.setTotal(total);
// long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord(); response.setPage(rq.getPage());
// response.setTotalPage(totalPage);
// response.setItems(list.getContent());
// response.setTotal(total);
// response.setPage(rq.getPage());
// response.setTotalPage(totalPage);
return returnList; return response;
} }
public AnlsHstryModel detail(String cntrlId) throws Exception{ public AnlsHstryModel detail(String cntrlId) throws Exception{

11
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); throw new CustomException(ErrorCode.DATA_DUPLICATE);
} }
boolean isReJoin = query.isReJoin(rq.getCstmrSno(), rq.getGroupId());
//참여 정보 입력 하기 //참여 정보 입력 하기
if(!isReJoin) {
PtyCstmrGroup entity2 = new PtyCstmrGroup(); PtyCstmrGroup entity2 = new PtyCstmrGroup();
entity2.setGroupId(rq.getGroupId()); entity2.setGroupId(rq.getGroupId());
entity2.setGroupAuthCd(rq.getGroupAuthCd()); //생성한 사람은 최고 권한 부여 (MASTER , LEADER, NORMAL) 로 구분 하여 사용 entity2.setGroupAuthCd(rq.getGroupAuthCd()); //생성한 사람은 최고 권한 부여 (MASTER , LEADER, NORMAL) 로 구분 하여 사용
@ -72,7 +75,13 @@ public class BasGroupJoinService {
entity2.setAprvlYn("N"); entity2.setAprvlYn("N");
if(ptyCstmrGroupRepository.save(entity2) == null) if(ptyCstmrGroupRepository.save(entity2) == null)
throw new CustomException(ErrorCode.FAIL); 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; return true;
} }

98
src/main/java/com/palnet/biz/jpa/repository/ctr/CtrCntrlQueryRepository.java

@ -145,30 +145,19 @@ public class CtrCntrlQueryRepository{
@Cacheable(value = "cntrl-count") @Cacheable(value = "cntrl-count")
public long countCntrlBasRs(AnlsHstryGroupModel rq, int cstmrSno, String userAccount) { public long countCntrlBasRs(AnlsHstryGroupModel rq, int cstmrSno, String userAccount) {
QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea;
QComIdntfBas qComIdntfBasEntity = QComIdntfBas.comIdntfBas; QComIdntfBas qComIdntfBasEntity = QComIdntfBas.comIdntfBas;
QComArcrftBas qComArcrftBasEntity = QComArcrftBas.comArcrftBas; QComArcrftBas qComArcrftBasEntity = QComArcrftBas.comArcrftBas;
QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea;
QPtyCstmrGroup qPtyCstmrGroupEntity = QPtyCstmrGroup.ptyCstmrGroup;
BooleanBuilder builder = new BooleanBuilder(); 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(); Calendar end = Calendar.getInstance();
end.setTime(DateUtils.stringToDate(rq.getEndDate())); end.setTime(DateUtils.stringToDate(rq.getEndDate()));
end.add(Calendar.DATE, 1); end.add(Calendar.DATE, 1);
Date endDate = end.getTime(); Date endDate = end.getTime();
builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId()));
builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate)); builder.and(qCntrlBasEntity.cntrlStDt.goe(DateUtils.stringToDate(rq.getStDate())));
builder.and(qCntrlBasEntity.cntrlEndDt.loe(endDate));
if(!StringUtils.isEmpty(rq.getSearch1())) { if(!StringUtils.isEmpty(rq.getSearch1())) {
builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%"));
@ -176,19 +165,15 @@ public class CtrCntrlQueryRepository{
long count = query long count = query
.select(qCntrlBasEntity) .select(qCntrlBasEntity)
.from(qCntrlBasEntity) .from(qComArcrftBasEntity)
.leftJoin(qComIdntfBasEntity)
.on(qComArcrftBasEntity.arcrftSno.eq(qComIdntfBasEntity.arcrftSno))
.leftJoin(qCntrlBasEntity)
.on(qComIdntfBasEntity.idntfNum.eq(qCntrlBasEntity.idntfNum))
.leftJoin(qCntrlHstryAreaEntity) .leftJoin(qCntrlHstryAreaEntity)
.on(qCntrlBasEntity.cntrlId.eq(qCntrlHstryAreaEntity.cntrlId)) .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) .where(builder)
.orderBy(qCntrlBasEntity.cntrlStDt.desc())
.fetchCount(); .fetchCount();
return count; return count;
@ -197,33 +182,21 @@ public class CtrCntrlQueryRepository{
@Cacheable(value = "cntrl-list") @Cacheable(value = "cntrl-list")
public PageImpl<AnlsHstryRsModel> listCntrlBasRs(AnlsHstryGroupModel rq, int cstmrSno, String userAccount, Pageable pageable){ public PageImpl<AnlsHstryRsModel> listCntrlBasRs(AnlsHstryGroupModel rq, String userAccount, Pageable pageable){
QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas; QCtrCntrlBas qCntrlBasEntity = QCtrCntrlBas.ctrCntrlBas;
QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea;
QComIdntfBas qComIdntfBasEntity = QComIdntfBas.comIdntfBas; QComIdntfBas qComIdntfBasEntity = QComIdntfBas.comIdntfBas;
QComArcrftBas qComArcrftBasEntity = QComArcrftBas.comArcrftBas; QComArcrftBas qComArcrftBasEntity = QComArcrftBas.comArcrftBas;
QFltPlanBas qFltPlanBasEntity = QFltPlanBas.fltPlanBas; QCtrCntrlHstryArea qCntrlHstryAreaEntity = QCtrCntrlHstryArea.ctrCntrlHstryArea;
QPtyCstmrGroup qPtyCstmrGroupEntity = QPtyCstmrGroup.ptyCstmrGroup;
BooleanBuilder builder = new BooleanBuilder(); 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(); Calendar end = Calendar.getInstance();
end.setTime(DateUtils.stringToDate(rq.getEndDate())); end.setTime(DateUtils.stringToDate(rq.getEndDate()));
end.add(Calendar.DATE, 1); end.add(Calendar.DATE, 1);
Date endDate = end.getTime(); Date endDate = end.getTime();
builder.and(qCntrlBasEntity.cntrlStDt.after(DateUtils.stringToDate(rq.getStDate()))); builder.and(qComArcrftBasEntity.groupId.eq(rq.getGroupId()));
builder.and(qCntrlBasEntity.cntrlEndDt.before(endDate)); builder.and(qCntrlBasEntity.cntrlStDt.goe(DateUtils.stringToDate(rq.getStDate())));
builder.and(qCntrlBasEntity.cntrlEndDt.loe(endDate));
if(!StringUtils.isEmpty(rq.getSearch1())) { if(!StringUtils.isEmpty(rq.getSearch1())) {
builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%")); builder.and(qCntrlBasEntity.idntfNum.like("%" + rq.getSearch1() + "%"));
@ -233,53 +206,28 @@ public class CtrCntrlQueryRepository{
Projections.bean(AnlsHstryRsModel.class , Projections.bean(AnlsHstryRsModel.class ,
qCntrlBasEntity.cntrlId, qCntrlBasEntity.cntrlId,
qCntrlBasEntity.idntfNum, qCntrlBasEntity.idntfNum,
qCntrlBasEntity.statusCd,
qCntrlBasEntity.objectTypeCd,
qCntrlBasEntity.flghtStDt,
qCntrlBasEntity.flghtEndDt,
qCntrlBasEntity.cntrlStDt, 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.area1,
qCntrlHstryAreaEntity.area2, qCntrlHstryAreaEntity.area2,
qCntrlHstryAreaEntity.area3, qCntrlHstryAreaEntity.area3,
qCntrlHstryAreaEntity.areaNm,
qCntrlHstryAreaEntity.areaType,
qCntrlHstryAreaEntity.landNm, qCntrlHstryAreaEntity.landNm,
qCntrlHstryAreaEntity.landNum, qCntrlHstryAreaEntity.landNum
qCntrlHstryAreaEntity.zipCd,
qComArcrftBasEntity.groupId,
qFltPlanBasEntity.cstmrSno
)) ))
.from(qCntrlBasEntity) .from(qComArcrftBasEntity)
.leftJoin(qComIdntfBasEntity)
.on(qComArcrftBasEntity.arcrftSno.eq(qComIdntfBasEntity.arcrftSno))
.leftJoin(qCntrlBasEntity)
.on(qComIdntfBasEntity.idntfNum.eq(qCntrlBasEntity.idntfNum))
.leftJoin(qCntrlHstryAreaEntity) .leftJoin(qCntrlHstryAreaEntity)
.on(qCntrlBasEntity.cntrlId.eq(qCntrlHstryAreaEntity.cntrlId)) .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) .where(builder)
.orderBy(qCntrlBasEntity.cntrlStDt.asc()) .orderBy(qCntrlBasEntity.cntrlStDt.desc())
.offset(pageable.getOffset()) .offset(pageable.getOffset())
.limit(pageable.getPageSize()) .limit(pageable.getPageSize())
.fetch(); .fetch();
List<AnlsHstryRsModel> result = new ArrayList<>(); List<AnlsHstryRsModel> result = new ArrayList<>();
for(AnlsHstryRsModel model: queryList) { for(AnlsHstryRsModel model: queryList) {
String addr = ""; String addr = "";

4
src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrGroupRepository.java

@ -26,4 +26,8 @@ public interface PtyCstmrGroupRepository extends JpaRepository<PtyCstmrGroup, In
"where p.cstmrSno = :cstmrSno " ) "where p.cstmrSno = :cstmrSno " )
List<PtyCstmrGroup> changeGroupAprvlYn(@Param("cstmrSno") int cstmrSno); List<PtyCstmrGroup> 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);
} }

13
src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java

@ -293,9 +293,22 @@ public class PtyGroupQueryRepository{
}else { }else {
return false; 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;
} }
}
/** /**
* 그룹 사용자 목록 조회 * 그룹 사용자 목록 조회

Loading…
Cancel
Save