노승철
2 years ago
36 changed files with 1356 additions and 241 deletions
@ -0,0 +1,9 @@
|
||||
package com.palnet.biz.api.acnt.jwt.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
@Data |
||||
public class JwtGroupModel { |
||||
private String groupId; |
||||
private String groupAuthCd; |
||||
} |
@ -0,0 +1,12 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
@Data |
||||
public class BasFlightPlanAprovRq { |
||||
private List<Integer> planSnoList; |
||||
private String aprvlYn; |
||||
} |
@ -0,0 +1,35 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
|
||||
@Data |
||||
public class BasFlightPlanArcrftModel { |
||||
private Integer planArcrftSno; |
||||
private Integer planSno; |
||||
private Integer arcrftSno; |
||||
private String idntfNum; |
||||
private String groupNm; |
||||
private String prdctNum; |
||||
private String arcrftTypeCd; |
||||
private String arcrftModelNm; |
||||
private String prdctCmpnNm; |
||||
private Date prdctDate; |
||||
private double arcrftLngth; |
||||
private double arcrftWdth; |
||||
private double arcrftHght; |
||||
private double arcrftWght; |
||||
private String wghtTypeCd; |
||||
private String imageUrl; |
||||
private double takeoffWght; |
||||
private String useYn; |
||||
private String cameraYn; |
||||
private String insrncYn; |
||||
private String ownerNm; |
||||
private String createUserId; |
||||
private Date createDt; |
||||
private String updateUserId; |
||||
private Date updateDt; |
||||
private String docState = "R"; |
||||
} |
@ -0,0 +1,16 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
|
||||
@Data |
||||
public class BasFlightPlanAreaCoordModel { |
||||
private Integer planAreaCoordSno; |
||||
private Integer planAreaSno; |
||||
private double lat; |
||||
private double lon; |
||||
private String createUserId; |
||||
private Date createDt; |
||||
private String docState = "R"; |
||||
} |
@ -0,0 +1,23 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
@Data |
||||
public class BasFlightPlanAreaModel { |
||||
private Integer planAreaSno; |
||||
private Integer planSno; |
||||
private String areaType; |
||||
private String fltMethod; |
||||
private Integer bufferZone; |
||||
private String fltElev; |
||||
private String createUserId; |
||||
private Date createDt; |
||||
private String updateUserId; |
||||
private Date updateDt; |
||||
private String docState = "R"; |
||||
private List<BasFlightPlanAreaCoordModel> coords; |
||||
} |
@ -0,0 +1,14 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.time.LocalDateTime; |
||||
import java.util.Date; |
||||
|
||||
@Data |
||||
public class BasFlightPlanListRq { |
||||
private Date schFltStDt; |
||||
private Date schFltEndDt; |
||||
private LocalDateTime datetime; |
||||
private String aprvlYn; |
||||
} |
@ -0,0 +1,33 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
@Data |
||||
public class BasFlightPlanModel { |
||||
private Integer planSno; |
||||
private String groupId; |
||||
private Integer cstmrSno; |
||||
private String memberName; |
||||
private String email; |
||||
private String hpno; |
||||
private String clncd; |
||||
private String addr; |
||||
private String addrDtlCn; |
||||
private String zip; |
||||
private Date schFltStDt; |
||||
private Date schFltEndDt; |
||||
private String fltPurpose; |
||||
private String aprvlYn; |
||||
private String delYn; |
||||
private String createUserId; |
||||
private Date createDt; |
||||
private String updateUserId; |
||||
private Date updateDt; |
||||
private String docState = "R"; |
||||
private List<BasFlightPlanAreaModel> area; |
||||
private List<BasFlightPlanPilotModel> pilot; |
||||
private List<BasFlightPlanArcrftModel> arcrft; |
||||
} |
@ -0,0 +1,27 @@
|
||||
package com.palnet.biz.api.bas.flight.model; |
||||
|
||||
import lombok.Data; |
||||
|
||||
import java.util.Date; |
||||
|
||||
@Data |
||||
public class BasFlightPlanPilotModel { |
||||
private Integer planPilotSno; |
||||
private Integer planSno; |
||||
private Integer cstmrSno; |
||||
private String groupNm; |
||||
private String memberName; |
||||
private String email; |
||||
private String hpno; |
||||
private String clncd; |
||||
private String addr; |
||||
private String addrDtlCn; |
||||
private String zip; |
||||
private String qlfcNo; |
||||
private String carrer; |
||||
private String createUserId; |
||||
private Date createDt; |
||||
private String updateUserId; |
||||
private Date updateDt; |
||||
private String docState = "R"; |
||||
} |
@ -0,0 +1,105 @@
|
||||
package com.palnet.biz.api.bas.flight.service; |
||||
|
||||
import com.palnet.biz.api.bas.flight.model.*; |
||||
import com.palnet.biz.jpa.entity.*; |
||||
import org.mapstruct.IterableMapping; |
||||
import org.mapstruct.Mapper; |
||||
import org.mapstruct.MappingTarget; |
||||
import org.mapstruct.Named; |
||||
import org.mapstruct.factory.Mappers; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Mapper |
||||
public interface BasFlightMapper { |
||||
BasFlightMapper mapper = Mappers.getMapper(BasFlightMapper.class); |
||||
|
||||
// to entity
|
||||
@Named("toPlanEntity") |
||||
FltPlanBas modelToEntity(BasFlightPlanModel model); |
||||
|
||||
@Named("toAreaEntity") |
||||
FltPlanArea modelToEntity(BasFlightPlanAreaModel model); |
||||
|
||||
@Named("toCoordEntity") |
||||
FltPlanAreaCoord modelToEntity(BasFlightPlanAreaCoordModel model); |
||||
|
||||
@Named("toPilotEntity") |
||||
FltPlanPilot modelToEntity(BasFlightPlanPilotModel model); |
||||
|
||||
@Named("toArcrftEntity") |
||||
FltPlanArcrft modelToEntity(BasFlightPlanArcrftModel model); |
||||
|
||||
// to entity merge
|
||||
@Named("toPlanEntityForMergeModel") |
||||
void updateEntityByModel(@MappingTarget FltPlanBas entity, BasFlightPlanModel model); |
||||
@Named("toAreaEntityForMergeModel") |
||||
void updateEntityByModel(@MappingTarget FltPlanArea entity, BasFlightPlanAreaModel model); |
||||
@Named("toCoordEntityForMergeModel") |
||||
void updateEntityByModel(@MappingTarget FltPlanAreaCoord entity, BasFlightPlanAreaCoordModel model); |
||||
@Named("toPilotEntityForMergeModel") |
||||
void updateEntityByModel(@MappingTarget FltPlanPilot entity, BasFlightPlanPilotModel model); |
||||
@Named("toArcrftEntityForMergeModel") |
||||
void updateEntityByModel(@MappingTarget FltPlanArcrft entity, BasFlightPlanArcrftModel model); |
||||
|
||||
|
||||
// to model
|
||||
@Named("toPlanModel") |
||||
BasFlightPlanModel entityToModel(FltPlanBas entity); |
||||
|
||||
@Named("toAreaModel") |
||||
BasFlightPlanAreaModel entityToModel(FltPlanArea entity); |
||||
|
||||
|
||||
@Named("toCoordModel") |
||||
BasFlightPlanAreaCoordModel entityToModel(FltPlanAreaCoord entity); |
||||
|
||||
@Named("toPilotModel") |
||||
BasFlightPlanPilotModel entityToModel(FltPlanPilot entity); |
||||
|
||||
@Named("toArcrftModel") |
||||
BasFlightPlanArcrftModel entityToModel(FltPlanArcrft entity); |
||||
|
||||
@Named("comArcrftBasToArcrftModel") |
||||
BasFlightPlanArcrftModel entityToModel(ComArcrftBas entity); |
||||
|
||||
|
||||
// to entity - list
|
||||
@Named("toPlanEntity") |
||||
List<FltPlanBas> modelToEntityPlanList(List<BasFlightPlanModel> model); |
||||
|
||||
@Named("toAreaEntity") |
||||
List<FltPlanArea> modelToEntityAreaList(List<BasFlightPlanAreaModel> model); |
||||
|
||||
@Named("toCoordEntity") |
||||
List<FltPlanAreaCoord> modelToEntityCoordList(List<BasFlightPlanAreaCoordModel> model); |
||||
|
||||
@Named("toPilotEntity") |
||||
List<FltPlanPilot> modelToEntityPilotList(List<BasFlightPlanPilotModel> model); |
||||
|
||||
@Named("toArcrftEntity") |
||||
List<FltPlanArcrft> modelToEntityArcrftList(List<BasFlightPlanArcrftModel> model); |
||||
|
||||
|
||||
// to model - list
|
||||
@Named("toPlanModel") |
||||
List<BasFlightPlanModel> entityToModelPlanList(List<FltPlanBas> entity); |
||||
|
||||
@Named("toAreaModel") |
||||
List<BasFlightPlanAreaModel> entityToModeArealList(List<FltPlanArea> entity); |
||||
|
||||
@Named("toCoordModel") |
||||
List<BasFlightPlanAreaCoordModel> entityToModelCoordList(List<FltPlanAreaCoord> entity); |
||||
|
||||
@Named("toPilotModel") |
||||
List<BasFlightPlanPilotModel> entityToModelPilotList(List<FltPlanPilot> entity); |
||||
|
||||
@Named("toArcrftModel") |
||||
List<BasFlightPlanArcrftModel> entityToModelArcrftList(List<FltPlanArcrft> entity); |
||||
|
||||
@Named("comArcrftBasToArcrftModel") |
||||
List<BasFlightPlanArcrftModel> comArcrftEntityToModelArcrftList(List<ComArcrftBas> entity); |
||||
|
||||
|
||||
|
||||
} |
@ -0,0 +1,257 @@
|
||||
package com.palnet.biz.api.bas.flight.service; |
||||
|
||||
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel; |
||||
import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; |
||||
import com.palnet.biz.api.bas.flight.model.*; |
||||
import com.palnet.biz.jpa.entity.*; |
||||
import com.palnet.biz.jpa.repository.com.ComArcrftBasRepository; |
||||
import com.palnet.biz.jpa.repository.flt.*; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.log4j.Log4j2; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
import java.util.ArrayList; |
||||
import java.util.List; |
||||
import java.util.Optional; |
||||
import java.util.stream.Collectors; |
||||
|
||||
|
||||
@Log4j2 |
||||
@RequiredArgsConstructor |
||||
@Service |
||||
public class BasFlightService { |
||||
|
||||
private final FltPlanBasRepository fltPlanBasRepository; |
||||
private final FltPlanArcrftRepository fltPlanArcrftRepository; |
||||
private final FltPlanAreaRepository fltPlanAreaRepository; |
||||
private final FltPlanAreaCoordRepository fltPlanAreaCoordRepository; |
||||
private final FltPlanPilotRepository fltPlanPilotRepository; |
||||
private final FltPlanQueryRepository fltPlanQueryRepository; |
||||
private final ComArcrftBasRepository comArcrftBasRepository; |
||||
|
||||
private final JwtTokenUtil jwtTokenUtil; |
||||
|
||||
// 비행계획서 조회
|
||||
public List<BasFlightPlanModel> listPlan(BasFlightPlanListRq rq) { |
||||
List<JwtGroupModel> groupAuthList = jwtTokenUtil.getGroupAuthByToken(); |
||||
return fltPlanQueryRepository.listPlan(rq); |
||||
} |
||||
|
||||
// 비행계획서 상세 조회
|
||||
public BasFlightPlanModel detailPlan(Integer planSno) { |
||||
BasFlightPlanModel rs = new BasFlightPlanModel(); |
||||
// 비행계획서
|
||||
FltPlanBas planEntity = fltPlanBasRepository.findByPlanSnoAndDelYnNot(planSno, "Y").orElse(null); |
||||
if(planEntity != null){ |
||||
rs = BasFlightMapper.mapper.entityToModel(planEntity); |
||||
// 버퍼영역
|
||||
List<FltPlanArea> areaEntityList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(planSno); |
||||
if (areaEntityList != null && !areaEntityList.isEmpty()) { |
||||
List<BasFlightPlanAreaModel> area = new ArrayList<>(); |
||||
for (FltPlanArea areaEntity : areaEntityList) { |
||||
BasFlightPlanAreaModel areaModel = BasFlightMapper.mapper.entityToModel(areaEntity); |
||||
List<FltPlanAreaCoord> coordEntityList = fltPlanAreaCoordRepository.findFirstByPlanAreaSnoOrderByPlanAreaCoordSnoAsc(areaEntity.getPlanAreaSno()); |
||||
if (coordEntityList != null && !coordEntityList.isEmpty()) { |
||||
areaModel.setCoords(BasFlightMapper.mapper.entityToModelCoordList(coordEntityList)); |
||||
} |
||||
area.add(areaModel); |
||||
} |
||||
rs.setArea(area); |
||||
} |
||||
// 조종사
|
||||
List<FltPlanPilot> pilotList = fltPlanPilotRepository.findByPlanSnoOrderByPlanPilotSnoAsc(planSno); |
||||
if (pilotList != null && !pilotList.isEmpty()) { |
||||
rs.setPilot(BasFlightMapper.mapper.entityToModelPilotList(pilotList)); |
||||
} |
||||
// 기체
|
||||
List<FltPlanArcrft> arcrft = fltPlanArcrftRepository.findByPlanSnoOrderByPlanArcrftSnoAsc(planSno); |
||||
if (arcrft != null && !arcrft.isEmpty()) { |
||||
rs.setArcrft(BasFlightMapper.mapper.entityToModelArcrftList(arcrft)); |
||||
} |
||||
} |
||||
return rs; |
||||
} |
||||
|
||||
// 비행계획서 등록
|
||||
public boolean createPlan(BasFlightPlanModel rq) { |
||||
// 비행계획서
|
||||
FltPlanBas basEntity = BasFlightMapper.mapper.modelToEntity(rq); |
||||
FltPlanBas rBasEntity = fltPlanBasRepository.save(basEntity); |
||||
Integer planSno = rBasEntity.getPlanSno(); |
||||
// 비행구역
|
||||
List<BasFlightPlanAreaModel> areaModelList = rq.getArea(); |
||||
if (areaModelList != null && !areaModelList.isEmpty()) { |
||||
for (BasFlightPlanAreaModel areaModel : areaModelList) { |
||||
FltPlanArea areaEntity = BasFlightMapper.mapper.modelToEntity(areaModel); |
||||
areaEntity.setPlanSno(planSno); |
||||
FltPlanArea rAreaEntity = fltPlanAreaRepository.save(areaEntity); |
||||
Integer planAreaSno = rAreaEntity.getPlanAreaSno(); |
||||
List<BasFlightPlanAreaCoordModel> coordModelList = areaModel.getCoords(); |
||||
if (coordModelList != null && !coordModelList.isEmpty()) { |
||||
for (BasFlightPlanAreaCoordModel coordModel : coordModelList) { |
||||
FltPlanAreaCoord coordEntity = BasFlightMapper.mapper.modelToEntity(coordModel); |
||||
coordEntity.setPlanAreaSno(planAreaSno); |
||||
fltPlanAreaCoordRepository.save(coordEntity); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
// 조종사
|
||||
List<BasFlightPlanPilotModel> pilotModelList = rq.getPilot(); |
||||
if (pilotModelList != null && !pilotModelList.isEmpty()) { |
||||
for (BasFlightPlanPilotModel pilotModel : pilotModelList) { |
||||
FltPlanPilot pilotEntity = BasFlightMapper.mapper.modelToEntity(pilotModel); |
||||
pilotEntity.setPlanSno(planSno); |
||||
fltPlanPilotRepository.save(pilotEntity); |
||||
} |
||||
} |
||||
|
||||
|
||||
// 기체
|
||||
List<BasFlightPlanArcrftModel> arcrftModelList = rq.getArcrft(); |
||||
if (arcrftModelList != null && !arcrftModelList.isEmpty()) { |
||||
for (BasFlightPlanArcrftModel arcrftModel : arcrftModelList) { |
||||
FltPlanArcrft arcrftEntity = BasFlightMapper.mapper.modelToEntity(arcrftModel); |
||||
arcrftEntity.setPlanSno(planSno); |
||||
fltPlanArcrftRepository.save(arcrftEntity); |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
// 비행계획서 수정
|
||||
public boolean updatePlan(BasFlightPlanModel rq) { |
||||
if (rq != null && rq.getPlanSno() != null) { |
||||
Integer planSno = rq.getPlanSno(); |
||||
// 비행계획서
|
||||
FltPlanBas planEntity = fltPlanBasRepository.findById(planSno).orElseThrow(); |
||||
BasFlightMapper.mapper.updateEntityByModel(planEntity, rq); |
||||
fltPlanBasRepository.save(planEntity); |
||||
|
||||
// 비행구역
|
||||
List<BasFlightPlanAreaModel> areaModelList = rq.getArea(); |
||||
if (areaModelList != null && !areaModelList.isEmpty()) { |
||||
List<FltPlanArea> areaEntityList = fltPlanAreaRepository.findByPlanSnoOrderByPlanAreaSnoAsc(planSno); |
||||
for (BasFlightPlanAreaModel areaModel : areaModelList) { |
||||
// FltPlanArea areaEntity = fltPlanAreaRepository.findById(areaModel.getPlanAreaSno()).orElse(null);
|
||||
FltPlanArea areaEntity = areaEntityList.stream().filter(fltPlanArea -> fltPlanArea.getPlanAreaSno() == areaModel.getPlanAreaSno()).findFirst().orElse(null); |
||||
if (areaEntity == null) { |
||||
areaEntity = BasFlightMapper.mapper.modelToEntity(areaModel); |
||||
} else { |
||||
BasFlightMapper.mapper.updateEntityByModel(areaEntity, areaModel); |
||||
} |
||||
fltPlanAreaRepository.save(areaEntity); |
||||
|
||||
|
||||
List<BasFlightPlanAreaCoordModel> coordsModelList = areaModel.getCoords(); |
||||
if (coordsModelList != null && !coordsModelList.isEmpty()) { |
||||
Integer areaSno = areaModel.getPlanAreaSno(); |
||||
List<FltPlanAreaCoord> coordEntityList = fltPlanAreaCoordRepository.findFirstByPlanAreaSnoOrderByPlanAreaCoordSnoAsc(areaSno); |
||||
for (BasFlightPlanAreaCoordModel coordModel : coordsModelList) { |
||||
FltPlanAreaCoord coordEntity = coordEntityList.stream().filter(fltPlanAreaCoord -> fltPlanAreaCoord.getPlanAreaCoordSno() == coordModel.getPlanAreaCoordSno()).findFirst().orElse(null); |
||||
if (coordEntity == null) { |
||||
coordEntity = BasFlightMapper.mapper.modelToEntity(coordModel); |
||||
} else { |
||||
BasFlightMapper.mapper.updateEntityByModel(coordEntity, coordModel); |
||||
} |
||||
fltPlanAreaCoordRepository.save(coordEntity); |
||||
} |
||||
List<FltPlanAreaCoord> deleteCoordEntity = coordEntityList.stream().filter(fltPlanAreaCoord -> { |
||||
for (BasFlightPlanAreaCoordModel coordModel : coordsModelList) { |
||||
if (coordModel.getPlanAreaCoordSno() == fltPlanAreaCoord.getPlanAreaCoordSno()) |
||||
return false; |
||||
} |
||||
return true; |
||||
}).collect(Collectors.toList()); |
||||
fltPlanAreaCoordRepository.deleteAll(deleteCoordEntity); |
||||
} |
||||
|
||||
|
||||
} |
||||
|
||||
List<FltPlanArea> deleteAreaEntity = areaEntityList.stream().filter(fltPlanArea -> { |
||||
for (BasFlightPlanAreaModel areaModel : areaModelList) { |
||||
if (areaModel.getPlanAreaSno() == fltPlanArea.getPlanAreaSno()) |
||||
return false; |
||||
} |
||||
return true; |
||||
}).collect(Collectors.toList()); |
||||
fltPlanAreaRepository.deleteAll(deleteAreaEntity); |
||||
|
||||
|
||||
} |
||||
|
||||
// 조종사
|
||||
List<BasFlightPlanPilotModel> pilotModelList = rq.getPilot(); |
||||
if(pilotModelList != null && !pilotModelList.isEmpty()){ |
||||
List<FltPlanPilot> pilotEntityList = fltPlanPilotRepository.findByPlanSnoOrderByPlanPilotSnoAsc(planSno); |
||||
for(BasFlightPlanPilotModel pilotModel : pilotModelList){ |
||||
FltPlanPilot pilotEntity = pilotEntityList.stream().filter(fltPlanPilot -> fltPlanPilot.getPlanPilotSno() == pilotModel.getPlanPilotSno()).findFirst().orElse(null); |
||||
if(pilotEntity != null){ |
||||
BasFlightMapper.mapper.updateEntityByModel(pilotEntity, pilotModel); |
||||
fltPlanPilotRepository.save(pilotEntity); |
||||
} |
||||
} |
||||
List<FltPlanPilot> deletePilotEntity = pilotEntityList.stream().filter(fltPlanPilot -> { |
||||
for (BasFlightPlanPilotModel pilotModel : pilotModelList) { |
||||
if (pilotModel.getPlanPilotSno() == fltPlanPilot.getPlanPilotSno()) |
||||
return false; |
||||
} |
||||
return true; |
||||
}).collect(Collectors.toList()); |
||||
fltPlanPilotRepository.deleteAll(deletePilotEntity); |
||||
} |
||||
|
||||
// 기체
|
||||
List<BasFlightPlanArcrftModel> arcrftModelList = rq.getArcrft(); |
||||
if(arcrftModelList != null && !arcrftModelList.isEmpty()){ |
||||
List<FltPlanArcrft> arcrftEntityList = fltPlanArcrftRepository.findByPlanSnoOrderByPlanArcrftSnoAsc(planSno); |
||||
for(BasFlightPlanArcrftModel arcrftModel : arcrftModelList){ |
||||
FltPlanArcrft arcrftEntity = arcrftEntityList.stream().filter(fltPlanArcrft -> fltPlanArcrft.getPlanArcrftSno() == arcrftModel.getPlanArcrftSno()).findFirst().orElse(null); |
||||
if(arcrftEntity != null){ |
||||
BasFlightMapper.mapper.updateEntityByModel(arcrftEntity, arcrftModel); |
||||
fltPlanArcrftRepository.save(arcrftEntity); |
||||
} |
||||
} |
||||
List<FltPlanArcrft> deleteArcrftEntity = arcrftEntityList.stream().filter(fltPlanArcrft -> { |
||||
for (BasFlightPlanArcrftModel arcrftModel : arcrftModelList) { |
||||
if (arcrftModel.getPlanArcrftSno() == fltPlanArcrft.getPlanArcrftSno()) |
||||
return false; |
||||
} |
||||
return true; |
||||
}).collect(Collectors.toList()); |
||||
fltPlanArcrftRepository.deleteAll(deleteArcrftEntity); |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
// 비행계획서 삭제
|
||||
public boolean deletePlan(Integer planSno) { |
||||
FltPlanBas planEntity = fltPlanBasRepository.findById(planSno).orElseThrow(); |
||||
planEntity.setDelYn("Y"); |
||||
fltPlanBasRepository.save(planEntity); |
||||
return true; |
||||
} |
||||
|
||||
// 비행계획서 승인/미승인
|
||||
public int aprovePlan(BasFlightPlanAprovRq rq) { |
||||
int cnt = fltPlanBasRepository.updateAprvlYnByPlanSnoIn(rq.getPlanSnoList(), rq.getAprvlYn()); |
||||
return cnt; |
||||
} |
||||
|
||||
// 그룹 조종사 조회
|
||||
public List<BasFlightPlanPilotModel> listPilotByGroup(String groupId) { |
||||
List<BasFlightPlanPilotModel> pilotList = fltPlanQueryRepository.listPilot(groupId); |
||||
return pilotList; |
||||
} |
||||
|
||||
// 그룹 기체 조회
|
||||
public List<BasFlightPlanArcrftModel> listArcrftByGroup(String groupId) { |
||||
List<ComArcrftBas> arcrftEntityList = comArcrftBasRepository.findByGroupIdOrderByArcrftSnoAsc(groupId); |
||||
List<BasFlightPlanArcrftModel> arcrftModelList = BasFlightMapper.mapper.comArcrftEntityToModelArcrftList(arcrftEntityList); |
||||
return arcrftModelList; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,68 @@
|
||||
package com.palnet.biz.config; |
||||
|
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.format.Formatter; |
||||
|
||||
import java.text.ParseException; |
||||
import java.text.SimpleDateFormat; |
||||
import java.time.LocalDate; |
||||
import java.time.LocalDateTime; |
||||
import java.time.format.DateTimeFormatter; |
||||
import java.util.Date; |
||||
import java.util.Locale; |
||||
|
||||
@Configuration |
||||
public class DateTimeConfig { |
||||
|
||||
private static final String DATE_FORMAT = "yyyy-MM-dd"; |
||||
private static final String TIME_FORMAT = "HH:mm:ss"; |
||||
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; |
||||
|
||||
// @Bean
|
||||
// public Formatter<LocalDate> localDateFormatter() {
|
||||
// return new Formatter<LocalDate>() {
|
||||
// @Override
|
||||
// public LocalDate parse(String text, Locale locale) {
|
||||
// return LocalDate.parse(text, DateTimeFormatter.ofPattern("yyyyMMdd", locale));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public String print(LocalDate object, Locale locale) {
|
||||
// return DateTimeFormatter.ISO_DATE.format(object);
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Bean
|
||||
// public Formatter<LocalDateTime> localDateTimeFormatter() {
|
||||
// return new Formatter<LocalDateTime>() {
|
||||
// @Override
|
||||
// public LocalDateTime parse(String text, Locale locale) {
|
||||
// return LocalDateTime.parse(text, DateTimeFormatter.ofPattern("yyyyMMddHHmmss", locale));
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public String print(LocalDateTime object, Locale locale) {
|
||||
// return DateTimeFormatter.ISO_DATE_TIME.format(object);
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
|
||||
@Bean |
||||
public Formatter<Date> DateFormatter() { |
||||
return new Formatter<Date>() { |
||||
@Override |
||||
public Date parse(String text, Locale locale) throws ParseException { |
||||
SimpleDateFormat dt = new SimpleDateFormat(DATE_TIME_FORMAT, locale); |
||||
return dt.parse(text); |
||||
} |
||||
|
||||
@Override |
||||
public String print(Date object, Locale locale) { |
||||
return new SimpleDateFormat(DATE_TIME_FORMAT).format(object); |
||||
} |
||||
}; |
||||
} |
||||
} |
@ -0,0 +1,71 @@
|
||||
package com.palnet.biz.config; |
||||
|
||||
import io.swagger.v3.oas.models.parameters.Parameter; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import springfox.documentation.builders.ApiInfoBuilder; |
||||
import springfox.documentation.builders.PathSelectors; |
||||
import springfox.documentation.builders.RequestHandlerSelectors; |
||||
import springfox.documentation.service.ApiInfo; |
||||
import springfox.documentation.service.ApiKey; |
||||
import springfox.documentation.service.AuthorizationScope; |
||||
import springfox.documentation.service.SecurityReference; |
||||
import springfox.documentation.spi.DocumentationType; |
||||
import springfox.documentation.spi.service.contexts.SecurityContext; |
||||
import springfox.documentation.spring.web.plugins.Docket; |
||||
import springfox.documentation.swagger2.annotations.EnableSwagger2; |
||||
|
||||
import java.time.LocalDate; |
||||
import java.time.LocalDateTime; |
||||
import java.util.Arrays; |
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
@Configuration |
||||
//@EnableSwagger2
|
||||
public class SwaggerConfig { |
||||
|
||||
|
||||
@Bean |
||||
public Docket api() { |
||||
return new Docket(DocumentationType.OAS_30) // open api spec 3.0
|
||||
.apiInfo(new ApiInfoBuilder().version("1.0").title("PAV").build()) |
||||
.forCodeGeneration(true).securitySchemes(Arrays.asList(apiKey())) |
||||
.select() |
||||
.apis(RequestHandlerSelectors.any()) |
||||
.paths(PathSelectors.any()) |
||||
.build() |
||||
.apiInfo(apiInfo()) |
||||
.directModelSubstitute(Date.class, String.class) |
||||
.directModelSubstitute(LocalDate.class, String.class) |
||||
.directModelSubstitute(LocalDateTime.class, String.class) |
||||
.securityContexts(Arrays.asList(securityContext())) |
||||
.securitySchemes(Arrays.asList(apiKey())); |
||||
} |
||||
|
||||
|
||||
private ApiInfo apiInfo() { |
||||
return new ApiInfoBuilder() |
||||
.title("PAV API") |
||||
.description("----") |
||||
.version("1.0") |
||||
.build(); |
||||
} |
||||
|
||||
//ApiKey 정의
|
||||
private ApiKey apiKey() { |
||||
return new ApiKey("Authorization", "Authorization", "header"); |
||||
} |
||||
|
||||
//JWT SecurityContext 구성
|
||||
private SecurityContext securityContext() { |
||||
return SecurityContext.builder().securityReferences(defaultAuth()).build(); |
||||
} |
||||
|
||||
private List<SecurityReference> defaultAuth() { |
||||
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEveryThing"); |
||||
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; |
||||
authorizationScopes[0] = authorizationScope; |
||||
return Arrays.asList(new SecurityReference("Authorization", authorizationScopes)); |
||||
} |
||||
} |
@ -1,8 +1,11 @@
|
||||
package com.palnet.biz.jpa.repository.flt; |
||||
|
||||
import com.palnet.biz.jpa.entity.FltPlanArcrft; |
||||
import com.palnet.biz.jpa.entity.FltPlanBas; |
||||
import org.springframework.data.jpa.repository.JpaRepository; |
||||
|
||||
import java.util.List; |
||||
|
||||
public interface FltPlanArcrftRepository extends JpaRepository<FltPlanArcrft, Integer> { |
||||
List<FltPlanArcrft> findByPlanSnoOrderByPlanArcrftSnoAsc(Integer planSno); |
||||
|
||||
} |
||||
|
@ -0,0 +1,122 @@
|
||||
package com.palnet.biz.jpa.repository.flt; |
||||
|
||||
import com.palnet.biz.api.bas.flight.model.BasFlightPlanAreaModel; |
||||
import com.palnet.biz.api.bas.flight.model.BasFlightPlanListRq; |
||||
import com.palnet.biz.api.bas.flight.model.BasFlightPlanModel; |
||||
import com.palnet.biz.api.bas.flight.model.BasFlightPlanPilotModel; |
||||
import com.palnet.biz.jpa.entity.*; |
||||
import com.querydsl.core.BooleanBuilder; |
||||
import com.querydsl.core.group.GroupBy; |
||||
import com.querydsl.core.types.Projections; |
||||
import com.querydsl.jpa.impl.JPAQueryFactory; |
||||
import lombok.RequiredArgsConstructor; |
||||
import lombok.extern.log4j.Log4j2; |
||||
import org.springframework.stereotype.Repository; |
||||
|
||||
import java.util.List; |
||||
|
||||
@Log4j2 |
||||
@Repository |
||||
@RequiredArgsConstructor |
||||
public class FltPlanQueryRepository { |
||||
|
||||
|
||||
private final JPAQueryFactory query; |
||||
|
||||
|
||||
// 비행계획서 목록
|
||||
// TODO 현재 모두 조회 - 권한에 따른 조회 필요
|
||||
public List<BasFlightPlanModel> listPlan(BasFlightPlanListRq rq) { |
||||
QFltPlanBas bas = QFltPlanBas.fltPlanBas; |
||||
QFltPlanArea area = QFltPlanArea.fltPlanArea; |
||||
|
||||
BooleanBuilder builder = new BooleanBuilder(); |
||||
if (rq.getSchFltEndDt() != null) { |
||||
builder.and(bas.schFltStDt.goe(rq.getSchFltEndDt())); |
||||
} |
||||
if (rq.getSchFltStDt() != null) { |
||||
builder.and(bas.schFltEndDt.loe(rq.getSchFltStDt())); |
||||
} |
||||
if ("Y".equals(rq.getAprvlYn()) || "N".equals(rq.getAprvlYn())) { |
||||
builder.and(bas.aprvlYn.eq(rq.getAprvlYn())); |
||||
} |
||||
builder.and(bas.delYn.ne("Y")); |
||||
|
||||
List<BasFlightPlanModel> r = query |
||||
.from(bas) |
||||
.leftJoin(area) |
||||
.on(bas.planSno.eq(area.planSno)) |
||||
.where(builder) |
||||
.transform( |
||||
GroupBy.groupBy(bas.planSno) |
||||
.list(Projections.bean( |
||||
BasFlightPlanModel.class, |
||||
bas.planSno, |
||||
bas.groupId, |
||||
bas.cstmrSno, |
||||
bas.memberName, |
||||
bas.email, |
||||
bas.hpno, |
||||
bas.clncd, |
||||
bas.addr, |
||||
bas.addrDtlCn, |
||||
bas.zip, |
||||
bas.schFltStDt, |
||||
bas.schFltEndDt, |
||||
bas.fltPurpose, |
||||
bas.aprvlYn, |
||||
bas.delYn, |
||||
bas.createUserId, |
||||
bas.createDt, |
||||
bas.updateUserId, |
||||
bas.updateDt, |
||||
GroupBy.list(Projections.bean( |
||||
BasFlightPlanAreaModel.class, |
||||
area.planAreaSno, |
||||
area.planSno, |
||||
area.areaType, |
||||
area.fltMethod, |
||||
area.bufferZone, |
||||
area.fltElev, |
||||
area.createUserId, |
||||
area.createDt, |
||||
area.updateUserId, |
||||
area.updateDt |
||||
).skipNulls()).as("area") |
||||
)) |
||||
); |
||||
|
||||
return r; |
||||
|
||||
} |
||||
|
||||
// 조종사 조회
|
||||
public List<BasFlightPlanPilotModel> listPilot(String groupId) { |
||||
// QPtyCstmrBas bas = QPtyCstmrBas.ptyCstmrBas;
|
||||
QPtyCstmrDtl dtl = QPtyCstmrDtl.ptyCstmrDtl; |
||||
QPtyCstmrGroup group = QPtyCstmrGroup.ptyCstmrGroup; |
||||
|
||||
BooleanBuilder builder = new BooleanBuilder(); |
||||
builder.and(group.groupId.eq(groupId)); |
||||
|
||||
List<BasFlightPlanPilotModel> r = query |
||||
.select(Projections.bean( |
||||
BasFlightPlanPilotModel.class, |
||||
dtl.cstmrSno, |
||||
dtl.memberName, |
||||
dtl.email, |
||||
dtl.hpno, |
||||
dtl.clncd, |
||||
dtl.addr, |
||||
dtl.addrDtlCn, |
||||
dtl.zip |
||||
)) |
||||
.from(dtl) |
||||
.leftJoin(group) |
||||
.on(dtl.cstmrSno.eq(group.cstmrSno)) |
||||
.where(builder) |
||||
.fetch(); |
||||
return r; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue