Browse Source

비행 관제 그룹관리

feature/auth
노승철 2 years ago
parent
commit
15c3f0c1ba
  1. 350
      pom.xml
  2. 8
      src/main/java/com/palnet/Application.java
  3. 9
      src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtGroupModel.java
  4. 13
      src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtUserModel.java
  5. 59
      src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java
  6. 197
      src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java
  7. 12
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAprovRq.java
  8. 35
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanArcrftModel.java
  9. 16
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordModel.java
  10. 23
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaModel.java
  11. 14
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java
  12. 33
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanModel.java
  13. 27
      src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanPilotModel.java
  14. 105
      src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightMapper.java
  15. 257
      src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java
  16. 68
      src/main/java/com/palnet/biz/config/DateTimeConfig.java
  17. 14
      src/main/java/com/palnet/biz/config/JsonConfig.java
  18. 71
      src/main/java/com/palnet/biz/config/SwaggerConfig.java
  19. 11
      src/main/java/com/palnet/biz/jpa/entity/FltPlanArcrft.java
  20. 6
      src/main/java/com/palnet/biz/jpa/entity/FltPlanArea.java
  21. 3
      src/main/java/com/palnet/biz/jpa/entity/FltPlanAreaCoord.java
  22. 13
      src/main/java/com/palnet/biz/jpa/entity/FltPlanBas.java
  23. 10
      src/main/java/com/palnet/biz/jpa/entity/FltPlanPilot.java
  24. 20
      src/main/java/com/palnet/biz/jpa/entity/PtyCrtfyhpBas.java
  25. 3
      src/main/java/com/palnet/biz/jpa/repository/com/ComArcrftBasRepository.java
  26. 5
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanArcrftRepository.java
  27. 4
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaCoordRepository.java
  28. 5
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java
  29. 16
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java
  30. 5
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanPilotRepository.java
  31. 122
      src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java
  32. 13
      src/main/java/com/palnet/biz/jpa/repository/pty/PtyCrtfyhpBasQueryRepository.java
  33. 30
      src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java
  34. 15
      src/main/java/com/palnet/biz/jpa/repository/pty/PtyGroupQueryRepository.java
  35. 3
      src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java
  36. 2
      src/main/java/com/palnet/comn/utils/JsonUtils.java

350
pom.xml

@ -1,166 +1,173 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.palnet</groupId>
<artifactId>pav-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>pav-server</name>
<description>Pav Server</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-context</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-autoconfigure</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<dependency>
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.palnet</groupId>
<artifactId>pav-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>pav-server</name>
<description>Pav Server</description>
<properties>
<java.version>11</java.version>
<org.mapstruct.version>1.5.2.Final</org.mapstruct.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-context</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-aws-autoconfigure</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.9.Final</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr353</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<!-- JSON Parsing -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- Spring AMQP -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr353</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<!-- JSON Parsing -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- Spring AMQP -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
<!-- mapstruct -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${org.mapstruct.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
@ -178,11 +185,32 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>11</source>
<target>11</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${org.mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

8
src/main/java/com/palnet/Application.java

@ -14,9 +14,9 @@ public class Application {
SpringApplication.run(Application.class, args);
}
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
// @Bean
// public ObjectMapper objectMapper() {
// return new ObjectMapper();
// }
}

9
src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtGroupModel.java

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

13
src/main/java/com/palnet/biz/api/acnt/jwt/model/JwtUserModel.java

@ -1,13 +1,14 @@
package com.palnet.biz.api.acnt.jwt.model;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.*;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.*;
@Entity
@Data
@ -34,7 +35,9 @@ public class JwtUserModel implements UserDetails {
@Column(name = "CSTMR_STATUS_CD")
private String cstmrStatusCd;
@Transient
private List<JwtGroupModel> group;
// 사용자의 권한을 콜렉션 형태로 반환

59
src/main/java/com/palnet/biz/api/acnt/jwt/utils/JwtTokenUtil.java

@ -1,21 +1,24 @@
package com.palnet.biz.api.acnt.jwt.utils;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel;
import com.palnet.biz.api.acnt.jwt.model.JwtUserModel;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.log4j.Log4j2;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@Component
@Log4j2
@ -30,6 +33,8 @@ public class JwtTokenUtil implements Serializable {
@Value("${spring.jwt.secret}")
private String secret;
@Value("${spring.jwt.prefix}")
private String JWT_PREFIX;
//retrieve username from jwt token
// jwt token으로부터 username을 획득한다.
@ -66,6 +71,7 @@ public class JwtTokenUtil implements Serializable {
Map<String, Object> claims = new HashMap<>();
claims.put("userId", userDetails.getUserId());
claims.put("cstmrSno", userDetails.getCstmrSno());
claims.put("group", userDetails.getGroup());
return doGenerateToken(claims, userDetails.getUsername());
}
@ -101,4 +107,35 @@ public class JwtTokenUtil implements Serializable {
final String username = getUsernameFromToken(token);
return (username.equals(userDetails.getUsername()) && !isTokenExpired(token));
}
public String getUserIdByToken() {
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest rq = sra.getRequest();
String token = rq.getHeader("Authorization");
if(token == null || "".equals(token)) return null;
token = token.substring(JWT_PREFIX.length()).trim();
String userId = getUsernameFromToken(token);
return userId;
}
public Integer getCstmrSnoByToken() {
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest rq = sra.getRequest();
String token = rq.getHeader("Authorization");
if(token == null || "".equals(token)) return null;
token = token.substring(JWT_PREFIX.length()).trim();
Claims payload = getAllClaimsFromToken(token);
Integer cstmrSno = payload.get("cstmrSno",Integer.class);
return cstmrSno;
}
public List<JwtGroupModel> getGroupAuthByToken() {
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest rq = sra.getRequest();
String token = rq.getHeader("Authorization");
if(token == null || "".equals(token)) return null;
token = token.substring(JWT_PREFIX.length()).trim();
Claims payload = getAllClaimsFromToken(token);
List<JwtGroupModel> cstmrSno = payload.get("group",List.class);
return cstmrSno;
}
}

197
src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java

@ -1,27 +1,38 @@
package com.palnet.biz.api.bas.flight.controller;
import com.palnet.biz.api.bas.flight.model.*;
import com.palnet.biz.api.bas.flight.service.BasFlightService;
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.exception.CustomException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping(value = "/api/bas/flight", produces = {MediaType.APPLICATION_JSON_VALUE})
public class BasFlightController {
private final BasFlightService basFlightService;
@GetMapping("/area")
public ResponseEntity<Object> getAirArea() throws IOException, ParseException {
// 1. file read
@ -42,4 +53,182 @@ public class BasFlightController {
return ResponseEntity.ok().body(airArea);
}
// 비행계획서 조회
@GetMapping(value = "/plan/list")
public ResponseEntity<? extends BasicResponse> listPlan(BasFlightPlanListRq rq) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
List<BasFlightPlanModel> result = basFlightService.listPlan(rq);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 비행계획서 상세 조회
@GetMapping(value = "/plan/detail/{planSno}")
public ResponseEntity<? extends BasicResponse> detailPlan(@PathVariable("planSno") Integer planSno) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
BasFlightPlanModel result = basFlightService.detailPlan(planSno);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 비행계획서 등록
@PostMapping(value = "/plan/create")
public ResponseEntity<? extends BasicResponse> createPlan(@RequestBody BasFlightPlanModel rq) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
log.info(">>> rq : {}", rq);
boolean result = basFlightService.createPlan(rq);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 비행계획서 수정
@PutMapping(value = "/plan/update")
public ResponseEntity<? extends BasicResponse> updatePlan(@RequestBody BasFlightPlanModel rq) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
boolean result = basFlightService.updatePlan(rq);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 비행계획서 삭제
@DeleteMapping(value = "/plan/delete/{planSno}")
public ResponseEntity<? extends BasicResponse> deletePlan(@PathVariable("planSno") Integer planSno) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
boolean result = basFlightService.deletePlan(planSno);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 비행계획서 승인/미승인
@PutMapping(value = "/plan/aprove")
public ResponseEntity<? extends BasicResponse> aprovePlan(@RequestBody BasFlightPlanAprovRq rq) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
int result = basFlightService.aprovePlan(rq);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 그룹 조종사 조회
@GetMapping(value = "/plan/pilot/{groupId}")
public ResponseEntity<? extends BasicResponse> findPilot(@PathVariable("groupId") String groupId) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
List<BasFlightPlanPilotModel> result = basFlightService.listPilotByGroup(groupId);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
// 그룹 기체 조회
@GetMapping(value = "/plan/arcrft/{groupId}")
public ResponseEntity<? extends BasicResponse> findArcrft(@PathVariable("groupId") String groupId) {
Map<String, Object> resultMap = new HashMap<String, Object>();
try {
List<BasFlightPlanArcrftModel> result = basFlightService.listArcrftByGroup(groupId);
resultMap.put("result", result);
} catch (CustomException e) {
log.error("IGNORE : {}", e);
resultMap.put("result", false);
resultMap.put("errorCode", e.getErrorCode());
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
} catch (Exception e) {
log.error("IGNORE : {}", e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(new ErrorResponse("Server Error", "-1"));
}
return ResponseEntity.ok().body(new SuccessResponse<Map>(resultMap));
}
}

12
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAprovRq.java

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

35
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanArcrftModel.java

@ -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";
}

16
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaCoordModel.java

@ -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";
}

23
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanAreaModel.java

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

14
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanListRq.java

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

33
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanModel.java

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

27
src/main/java/com/palnet/biz/api/bas/flight/model/BasFlightPlanPilotModel.java

@ -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";
}

105
src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightMapper.java

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

257
src/main/java/com/palnet/biz/api/bas/flight/service/BasFlightService.java

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

68
src/main/java/com/palnet/biz/config/DateTimeConfig.java

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

14
src/main/java/com/palnet/biz/config/JsonConfig.java

@ -1,6 +1,8 @@
package com.palnet.biz.config;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
@ -11,6 +13,8 @@ import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;
@ -22,23 +26,31 @@ public class JsonConfig {
private static final String timeFormat = "HH:mm:ss";
private static final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
/*
*/
@Bean
@Primary
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
return builder -> {
// builder.timeZone(TimeZone.getTimeZone("UTC"));
builder.timeZone(TimeZone.getTimeZone("UTC"));
builder.simpleDateFormat(dateTimeFormat);
builder.serializers(new LocalTimeSerializer(DateTimeFormatter.ofPattern(timeFormat)));
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
builder.serializationInclusion(JsonInclude.Include.NON_NULL);
builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
builder.deserializers(new LocalTimeDeserializer(DateTimeFormatter.ofPattern(timeFormat)));
builder.deserializers(new LocalDateDeserializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.deserializers(new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
builder.featuresToDisable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
builder.featuresToDisable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE);
builder.featuresToDisable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
builder.featuresToDisable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
};
}
}

71
src/main/java/com/palnet/biz/config/SwaggerConfig.java

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

11
src/main/java/com/palnet/biz/jpa/entity/FltPlanArcrft.java

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Date;
@Table(name = "FLT_PLAN_ARCRFT")
@Entity
@ -23,6 +23,9 @@ public class FltPlanArcrft {
@Column(name="ARCRFT_SNO")
private Integer arcrftSno;
@Column(name="IDNTF_NUM")
private String idntfNum;
@Column(name="GROUP_NM")
private String groupNm;
@ -39,7 +42,7 @@ public class FltPlanArcrft {
private String prdctCmpnNm;
@Column(name="PRDCT_DATE")
private LocalDateTime prdctDate;
private Date prdctDate;
@Column(name="ARCRFT_LNGTH")
private double arcrftLngth;
@ -78,13 +81,13 @@ public class FltPlanArcrft {
private String createUserId;
@Column(name="CREATE_DT")
private LocalDateTime createDt;
private Date createDt;
@Column(name="UPDATE_USER_ID")
private String updateUserId;
@Column(name="update_DT")
private LocalDateTime updateDt;
private Date updateDt;
}

6
src/main/java/com/palnet/biz/jpa/entity/FltPlanArea.java

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Date;
@Table(name = "FLT_PLAN_AREA")
@Entity
@ -36,13 +36,13 @@ public class FltPlanArea {
private String createUserId;
@Column(name = "CREATE_DT")
private LocalDateTime createDt;
private Date createDt;
@Column(name = "UPDATE_USER_ID")
private String updateUserId;
@Column(name = "UPDATE_DT")
private LocalDateTime updateDt;
private Date updateDt;
}

3
src/main/java/com/palnet/biz/jpa/entity/FltPlanAreaCoord.java

@ -5,6 +5,7 @@ import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Date;
@Table(name = "FLT_PLAN_AREA_COORD")
@Entity
@ -31,5 +32,5 @@ public class FltPlanAreaCoord {
private String createUserId;
@Column(name = "CREATE_DT")
private LocalDateTime createDt;
private Date createDt;
}

13
src/main/java/com/palnet/biz/jpa/entity/FltPlanBas.java

@ -5,6 +5,7 @@ import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Date;
@Table(name = "FLT_PLAN_BAS")
@Entity
@ -17,8 +18,8 @@ public class FltPlanBas {
@Column(name = "PLAN_SNO")
private Integer planSno;
@Column(name = "GROUP_SNO")
private Integer groupSno;
@Column(name = "GROUP_ID")
private String groupId;
@Column(name = "CSTMR_SNO")
private Integer cstmrSno;
@ -45,10 +46,10 @@ public class FltPlanBas {
private String zip;
@Column(name = "SCH_FLT_ST_DT")
private LocalDateTime schFltStDt;
private Date schFltStDt;
@Column(name = "SCH_FLT_END_DT")
private LocalDateTime schFltEndDt;
private Date schFltEndDt;
@Column(name = "FLT_PURPOSE")
private String fltPurpose;
@ -63,13 +64,13 @@ public class FltPlanBas {
private String createUserId;
@Column(name = "CREATE_DT")
private LocalDateTime createDt;
private Date createDt;
@Column(name = "UPDATE_USER_ID")
private String updateUserId;
@Column(name = "UPDATE_DT")
private LocalDateTime updateDt;
private Date updateDt;
}

10
src/main/java/com/palnet/biz/jpa/entity/FltPlanPilot.java

@ -4,7 +4,7 @@ import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Date;
@Table(name = "FLT_PLAN_PILOT")
@Entity
@ -50,19 +50,19 @@ public class FltPlanPilot {
@Column(name = "QLFC_NO")
private String qlfcNo;
@Column(name = "CARREA")
private String carrea;
@Column(name = "CARRER")
private String carrer;
@Column(name = "CREATE_USER_ID")
private String createUserId;
@Column(name = "CREATE_DT")
private LocalDateTime createDt;
private Date createDt;
@Column(name = "UPDATE_USER_ID")
private String updateUserId;
@Column(name = "UPDATE_DT")
private LocalDateTime updateDt;
private Date updateDt;
}

20
src/main/java/com/palnet/biz/jpa/entity/PtyCrtfyhpBas.java

@ -1,21 +1,11 @@
package com.palnet.biz.jpa.entity;
import java.io.Serializable;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import lombok.Data;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
@ -36,7 +26,7 @@ public class PtyCrtfyhpBas implements Serializable {
@CreationTimestamp
@Column(name="CREATE_DT")
private LocalDateTime createDt;
private Date createDt;
@Column(name="CRTFYHP_NO")
private String crtfyhpNo;

3
src/main/java/com/palnet/biz/jpa/repository/com/ComArcrftBasRepository.java

@ -8,8 +8,11 @@ import com.palnet.biz.jpa.entity.CtrCntrlBas;
import com.palnet.biz.jpa.entity.PtyCstmrGroup;
import com.palnet.biz.jpa.entity.PtyTermsBas;
import java.util.List;
@Repository
public interface ComArcrftBasRepository extends JpaRepository<ComArcrftBas, Integer>{
List<ComArcrftBas> findByGroupIdOrderByArcrftSnoAsc(String groupId);

5
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanArcrftRepository.java

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

4
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaCoordRepository.java

@ -4,5 +4,9 @@ import com.palnet.biz.jpa.entity.FltPlanAreaCoord;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface FltPlanAreaCoordRepository extends JpaRepository<FltPlanAreaCoord, Integer> {
List<FltPlanAreaCoord> findFirstByPlanAreaSnoOrderByPlanAreaCoordSnoAsc(Integer planAreaSno);
}

5
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanAreaRepository.java

@ -4,5 +4,10 @@ import com.palnet.biz.jpa.entity.FltPlanArea;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface FltPlanAreaRepository extends JpaRepository<FltPlanArea, Integer> {
List<FltPlanArea> findByPlanSnoOrderByPlanAreaSnoAsc(Integer planSno);
}

16
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanBasRepository.java

@ -2,6 +2,22 @@ package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.jpa.entity.FltPlanBas;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
public interface FltPlanBasRepository extends JpaRepository<FltPlanBas, Integer> {
Optional<FltPlanBas> findByPlanSnoAndDelYnNot(Integer planSno, String delYn);
@Transactional
@Modifying
@Query("update FltPlanBas f set f.aprvlYn = :aprvlYn where f.planSno in :planSno")
int updateAprvlYnByPlanSnoIn(@Param("planSno") List<Integer> planSnos, @Param("aprvlYn") String aprvlYn);
}

5
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanPilotRepository.java

@ -3,5 +3,10 @@ package com.palnet.biz.jpa.repository.flt;
import com.palnet.biz.jpa.entity.FltPlanPilot;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
import java.util.Optional;
public interface FltPlanPilotRepository extends JpaRepository<FltPlanPilot, Integer> {
List<FltPlanPilot> findByPlanSnoOrderByPlanPilotSnoAsc(Integer planSno);
}

122
src/main/java/com/palnet/biz/jpa/repository/flt/FltPlanQueryRepository.java

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

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

@ -9,7 +9,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@Log4j2
@ -21,11 +22,19 @@ public class PtyCrtfyhpBasQueryRepository{
public List<PtyCrtfyhpBas> confirmSms(String hpno , String crtfyNo){
QPtyCrtfyhpBas qEntity = QPtyCrtfyhpBas.ptyCrtfyhpBas;
Date now = Calendar.getInstance().getTime();
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, -5);
Date prevTime = calendar.getTime();
BooleanBuilder builder = new BooleanBuilder();
builder.and(qEntity.crtfyhpNo.eq(crtfyNo));
builder.and(qEntity.crtfyhpYn.eq("N"));
builder.and(qEntity.createDt.between(LocalDateTime.now().minusMinutes(5), LocalDateTime.now()));
// builder.and(qEntity.createDt.between(LocalDateTime.now().minusMinutes(5), LocalDateTime.now()));
builder.and(qEntity.createDt.goe(prevTime));
builder.and(qEntity.createDt.loe(now));
List<PtyCrtfyhpBas> entity =
query.select(qEntity).from(qEntity)

30
src/main/java/com/palnet/biz/jpa/repository/pty/PtyCstmrQueryRepository.java

@ -1,6 +1,6 @@
package com.palnet.biz.jpa.repository.pty;
import com.palnet.biz.api.acnt.cstmr.model.AcntCstmrGroupModel;
import com.palnet.biz.api.acnt.jwt.model.JwtGroupModel;
import com.palnet.biz.jpa.entity.*;
import org.springframework.stereotype.Repository;
@ -13,6 +13,7 @@ import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import java.util.ArrayList;
import java.util.List;
@Log4j2
@ -73,6 +74,8 @@ public class PtyCstmrQueryRepository{
public JwtUserModel findUserPassword(String userId) {
QPtyCstmrBas basEntity = QPtyCstmrBas.ptyCstmrBas;
QPtyCstmrGroup groupEntity = QPtyCstmrGroup.ptyCstmrGroup;
BooleanBuilder builder = new BooleanBuilder();
builder.and(basEntity.userId.eq(userId));
@ -80,6 +83,19 @@ public class PtyCstmrQueryRepository{
.from(basEntity)
.where(builder)
.fetchFirst();
List<PtyCstmrGroup> pcgEntityList = null;
if(entity != null){
BooleanBuilder groupBuilder = new BooleanBuilder();
groupBuilder.and(groupEntity.cstmrSno.eq(entity.getCstmrSno()));
pcgEntityList = query.select(groupEntity)
.from(groupEntity)
.where(groupBuilder)
.fetch();
}
if(entity != null) {
JwtUserModel model = new JwtUserModel();
model.setAuth(entity.getAuthId());
@ -87,7 +103,17 @@ public class PtyCstmrQueryRepository{
model.setCstmrSno(entity.getCstmrSno());
model.setCstmrStatusCd(entity.getCstmrStatusCd());
model.setUserPswd(entity.getUserPswd());
if(pcgEntityList != null && !pcgEntityList.isEmpty()){
List<JwtGroupModel> groupModelList = new ArrayList<>();
for(PtyCstmrGroup pcgEntity : pcgEntityList){
JwtGroupModel groupModel = new JwtGroupModel();
groupModel.setGroupId(pcgEntity.getGroupId());
groupModel.setGroupAuthCd(pcgEntity.getGroupAuthCd());
groupModelList.add(groupModel);
}
model.setGroup(groupModelList);
}
return model;
}else {

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

@ -1,18 +1,7 @@
package com.palnet.biz.jpa.repository.pty;
import com.palnet.biz.api.acnt.jwt.model.JwtProfileRsModel;
import com.palnet.biz.api.anls.hstry.model.AnlsHstryRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupAprvModel;
import com.palnet.biz.api.bas.group.model.BasGroupAprvRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinModel;
import com.palnet.biz.api.bas.group.model.BasGroupJoinRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupModel;
import com.palnet.biz.api.bas.group.model.BasGroupRqModel;
import com.palnet.biz.api.bas.group.model.BasGroupUserModel;
import com.palnet.biz.api.bas.group.model.BasGroupUserRqModel;
import com.palnet.biz.jpa.entity.PtyCrtfyhpBas;
import com.palnet.biz.jpa.entity.QPtyCrtfyhpBas;
import com.palnet.biz.api.bas.group.model.*;
import com.palnet.biz.jpa.entity.QPtyCstmrBas;
import com.palnet.biz.jpa.entity.QPtyCstmrDtl;
import com.palnet.biz.jpa.entity.QPtyCstmrGroup;
@ -24,11 +13,9 @@ import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQueryFactory;
import lombok.RequiredArgsConstructor;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

3
src/main/java/com/palnet/biz/message/consumer/MessageConsumer.java

@ -3,6 +3,7 @@ package com.palnet.biz.message.consumer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.palnet.biz.message.service.MessageService;
import com.palnet.comn.model.GPDatabaseModel;
import com.palnet.comn.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
@ -22,7 +23,7 @@ public class MessageConsumer {
public MessageConsumer(MessageService messageService, ObjectMapper objectMapper) {
this.messageService = messageService;
this.objectMapper = objectMapper;
this.objectMapper = JsonUtils.getObjectMapper();
}
@RabbitHandler

2
src/main/java/com/palnet/comn/utils/JsonUtils.java

@ -12,7 +12,7 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
public class JsonUtils {
private static ObjectMapper getObjectMapper() {
public static ObjectMapper getObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return mapper;

Loading…
Cancel
Save