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. 112
      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. 37
      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")
public ResponseEntity<? extends BasicResponse> list(AnlsHstryGroupModel rq) {
List<AnlsHstryRsModel> rs = null;
ComnPagingRs<AnlsHstryRsModel> 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<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;
//비행이력현황 list
public List<AnlsHstryRsModel> list(AnlsHstryGroupModel rq){
public ComnPagingRs<AnlsHstryRsModel> list(AnlsHstryGroupModel rq){
List<JwtGroupModel> group = jwtTokenUtil.getGroupAuthByToken();
Integer cstmrSno = jwtTokenUtil.getCstmrSnoByToken();
String userAccount = null;
@ -92,97 +92,18 @@ public class AnlsHstryService {
idntfNum = "";
}
//GroupId로 ArcrftSno 찾기(그룹별로 비행이력 현황 보여주기 위해)
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 찾기
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);
}
}
PageImpl<AnlsHstryRsModel> result = query.listCntrlBasRs(rq, userAccount, pageable);
//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 total = query.countCntrlBasRs(rq, cstmrSno, userAccount);
long totalPage = total % rq.getRecord() > 0 ? (total/rq.getRecord()) + 1 : total/rq.getRecord();
// 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);
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{

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);
}
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;
}

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

@ -145,30 +145,19 @@ 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() + "%"));
@ -176,19 +165,15 @@ public class CtrCntrlQueryRepository{
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,33 +182,21 @@ public class CtrCntrlQueryRepository{
@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;
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() + "%"));
@ -231,55 +204,30 @@ public class CtrCntrlQueryRepository{
List<AnlsHstryRsModel> 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
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<AnlsHstryRsModel> result = new ArrayList<>();
for(AnlsHstryRsModel model: queryList) {
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 " )
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);
}

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

@ -282,21 +282,34 @@ 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();
if(count == 0) {
return true;
}else {
return false;
}
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;
}
}
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;
}
}
/**
* 그룹 사용자 목록 조회
* @param rq

Loading…
Cancel
Save