Переглянути джерело

auto generate before last commit

shjung 3 роки тому
батько
коміт
707f9b1d5d

+ 1 - 1
src/main/java/com/its/op/ItsOpServerApplication.java

@@ -31,7 +31,7 @@ import java.util.Date;
 @CrossOrigin("*")
 public class ItsOpServerApplication implements CommandLineRunner, ApplicationListener<ContextClosedEvent>, InitializingBean, DisposableBean {
 
-    private static final String applicationName = "traf-prcs-server";
+    private static final String applicationName = "its-op-server";
 
     public static void main(String[] args) {
         //System.setProperty("log4j.skipJansi", String.valueOf(true));

+ 0 - 9
src/main/java/com/its/op/TestClass.java

@@ -1,9 +0,0 @@
-package com.its.op;
-
-import lombok.Data;
-
-@Data
-public class TestClass {
-
-    private String field1;
-}

+ 35 - 33
src/main/java/com/its/op/common/controller/TbAtrdController.java

@@ -2,62 +2,64 @@ package com.its.op.common.controller;
 
 import com.its.op.common.dto.TbAtrdDto;
 import com.its.op.common.service.TbAtrdService;
-import com.its.op.common.vo.TbAtrdQueryVo;
-import com.its.op.common.vo.TbAtrdUpdateVo;
-import com.its.op.common.vo.TbAtrdVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.springframework.data.domain.Page;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import java.util.List;
 
 @Api(tags = "간선도로")
 @Validated
 @RestController
 @RequiredArgsConstructor
-@RequestMapping("/tbAtrd")
+@RequestMapping("/api/tb_atrd")
 public class TbAtrdController {
 
-    private final TbAtrdService tbAtrdService;
+    private final TbAtrdService service;
 
-    @PostMapping
-    @ApiOperation("Save 간선도로")
-    public String save(@Valid @RequestBody TbAtrdVo vo) {
-        return tbAtrdService.save(vo).toString();
+    @ApiOperation(value = "간선도로 전체조회(TB_ATRD)", response = TbAtrdDto.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbAtrdDto> findAll() {
+        return service.findAll();
     }
 
-    @DeleteMapping("/{id}")
-    @ApiOperation("Delete 간선도로")
-    public void delete(@Valid @NotNull @PathVariable("id") String id) {
-        tbAtrdService.delete(id);
+    @ApiOperation(value = "간선도로 개별조회(TB_ATRD)", response = TbAtrdDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbAtrdDto findById(@PathVariable final String id) {
+        return this.service.findById(id);
     }
 
-    @PutMapping("/{id}")
-    @ApiOperation("Update 간선도로")
-    public void update(@Valid @NotNull @PathVariable("id") String id,
-                       @Valid @RequestBody TbAtrdUpdateVo vo) {
-        tbAtrdService.update(id, vo);
+    @ApiOperation(value = "간선도로 정보변경(TB_ATRD)", response = TbAtrdDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbAtrdDto updateById(@PathVariable final String id, @RequestBody @Valid final TbAtrdDto.TbAtrdUpdReq req) {
+        return this.service.updateById(id, req);
     }
 
-    @GetMapping("/{id}")
-    @ApiOperation("Retrieve by ID 간선도로")
-    public TbAtrdDto getById(@Valid @NotNull @PathVariable("id") String id) {
-        return tbAtrdService.getById(id);
+    @ApiOperation(value = "간선도로 정보변경/생성-목록(TB_ATRD)", response = TbAtrdDto.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbAtrdDto> mergeInfoList(@RequestBody @Valid final List<TbAtrdDto.TbAtrdUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
     }
 
-    @GetMapping
-    @ApiOperation("Retrieve by query 간선도로")
-    public Page<TbAtrdDto> query(@Valid TbAtrdQueryVo vo) {
-        return tbAtrdService.query(vo);
+    @ApiOperation(value = "간선도로 정보변경/생성-개별(TB_ATRD)", response = TbAtrdDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbAtrdDto mergeInfo(@PathVariable("id") String id, @RequestBody @Valid final TbAtrdDto.TbAtrdUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "간선도로 정보삭제-개별(TB_ATRD)", response = TbAtrdDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbAtrdDto deleteDataById(@PathVariable("id") String id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "간선도로 정보삭제-목록(TB_ATRD)", response = TbAtrdDto.class)
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbAtrdDto> deleteDataByIds(@RequestBody @Valid final List<String> ids) {
+        return this.service.deleteByIds(ids);
     }
 
-    /*@GetMapping
-    @ApiOperation("Retrieve by query 간선도로")
-    public Page<TbAtrdDto> query(@Valid TbAtrdQueryVo vo) {
-        return tbAtrdService.query(vo);
-    }*/
 }

+ 90 - 27
src/main/java/com/its/op/common/dto/TbAtrdDto.java

@@ -1,49 +1,112 @@
 package com.its.op.common.dto;
 
-
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.op.common.entity.TbAtrd;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
+import lombok.*;
 
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
 import java.io.Serializable;
 
+/**
+ * 간선도로 DTO Class
+ */
 @Data
-@ApiModel("간선도로")
+@Builder
+@ApiModel("TbAtrdDto(간선도로)")
 public class TbAtrdDto implements Serializable {
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 간선도로 ID
-     */
-    @ApiModelProperty("간선도로 ID")
+    @ApiModelProperty("간선도로 ID")  // N VARCHAR(10)
+    @JsonProperty("atrd_id")
     private String atrdId;
 
-
-    /**
-     * 간선도로 명
-     */
-    @ApiModelProperty("간선도로 명")
+    @ApiModelProperty("간선도로 명")  // Y VARCHAR(30)
+    @JsonProperty("atrd_nm")
     private String atrdNm;
 
-
-    /**
-     * 방향 코드
-     */
-    @ApiModelProperty("방향 코드")
+    @ApiModelProperty("방향 코드")  // Y VARCHAR(7)
+    @JsonProperty("drct_cd")
     private String drctCd;
 
-
-    /**
-     * 지역 코드
-     */
-    @ApiModelProperty("지역 코드")
+    @ApiModelProperty("지역 코드")  // Y VARCHAR(7)
+    @JsonProperty("area_cd")
     private String areaCd;
 
-
-    /**
-     * 삭제 여부
-     */
-    @ApiModelProperty("삭제 여부")
+    @ApiModelProperty("삭제 여부")  // Y CHAR(1)
+    @JsonProperty("del_yn")
     private String delYn;
 
+    // Code Description Field
+    @ApiModelProperty("방향 코드 설명")
+    @JsonProperty("drct_desc")    // DRCT_CD
+    private String drctDesc;
+
+    @ApiModelProperty("지역 코드 설명")
+    @JsonProperty("area_desc")    // AREA_CD
+    private String areaDesc;
+
+    @ApiModelProperty("삭제 여부 설명")
+    @JsonProperty("del_desc")    // DEL_YN
+    private String delDesc;
+
+    @ApiModel("TbAtrdUpdReq(간선도로 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbAtrdUpdReq {
+
+        @ApiModelProperty("간선도로 ID, Nullable = N, VARCHAR(10)")  // N VARCHAR(10)
+        @JsonProperty("atrd_id")
+        @Size(min=1, max=10)
+        private String atrdId;
+
+        @ApiModelProperty("간선도로 명, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("atrd_nm")
+        @Size(min=1, max=30)
+        private String atrdNm;
+
+        @ApiModelProperty("방향 코드, Nullable = Y, VARCHAR(7)")  // Y VARCHAR(7)
+        @JsonProperty("drct_cd")
+        @Size(min=1, max=7)
+        private String drctCd;
+
+        @ApiModelProperty("지역 코드, Nullable = Y, VARCHAR(7)")  // Y VARCHAR(7)
+        @JsonProperty("area_cd")
+        @Size(min=1, max=7)
+        private String areaCd;
+
+        @ApiModelProperty("삭제 여부, Nullable = Y, CHAR(1)")  // Y CHAR(1)
+        @JsonProperty("del_yn")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String delYn;
+
+        @Builder
+        public TbAtrdUpdReq(String atrd_id, String atrd_nm, String drct_cd, String area_cd, String del_yn) {
+            this.atrdId = atrd_id;
+            this.atrdNm = atrd_nm;
+            this.drctCd = drct_cd;
+            this.areaCd = area_cd;
+            this.delYn = del_yn;
+        }
+
+
+        public TbAtrd toEntity() {
+            TbAtrd entity = TbAtrd.builder()
+                    .atrdId(this.atrdId)
+                    .atrdNm(this.atrdNm)
+                    .drctCd(this.drctCd)
+                    .areaCd(this.areaCd)
+                    .delYn(this.delYn)
+                    .build();
+
+            return entity;
+        }
+
+    }
+
 }

+ 41 - 35
src/main/java/com/its/op/common/entity/TbAtrd.java

@@ -1,9 +1,9 @@
 package com.its.op.common.entity;
 
+import com.its.op.common.dto.TbAtrdDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;
-import lombok.experimental.Accessors;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -12,54 +12,60 @@ import javax.persistence.Table;
 import java.io.Serializable;
 
 /**
- * 간선도로
+ * 간선도로 Entity Class
  */
-@Getter @Setter
-@NoArgsConstructor
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
 @Builder
 @AllArgsConstructor
-@Entity
 @ApiModel("간선도로")
+@Entity
 @Table(name = "TB_ATRD")
-@Accessors(chain = true)
 public class TbAtrd implements Serializable {
-
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 간선도로 ID
-     */
+    @ApiModelProperty("간선도로 ID")  // N VARCHAR(10)
     @Id
-    @ApiModelProperty("간선도로 ID")
-    @Column(name = "ATRD_ID", nullable = false)
+    @Column(name = "ATRD_ID", nullable = false, length = 10)
     private String atrdId;
 
-    /**
-     * 간선도로 명
-     */
-    @Column(name = "ATRD_NM")
-    @ApiModelProperty("간선도로 명")
+    @ApiModelProperty("간선도로 명")  // Y VARCHAR(30)
+    @Column(name = "ATRD_NM", length = 30)
     private String atrdNm;
 
-    /**
-     * 방향 코드
-     */
-    @Column(name = "DRCT_CD")
-    @ApiModelProperty("방향 코드")
-    private String drctCd = "";
+    @ApiModelProperty("방향 코드")  // Y VARCHAR(7)
+    @Column(name = "DRCT_CD", length = 7)
+    private String drctCd;
+
+    @ApiModelProperty("지역 코드")  // Y VARCHAR(7)
+    @Column(name = "AREA_CD", length = 7)
+    private String areaCd;
+
+    @ApiModelProperty("삭제 여부")  // Y CHAR(1)
+    @Column(name = "DEL_YN", columnDefinition = "CHAR", length = 1)
+    private String delYn;
+
+    public TbAtrdDto toDto() {
+        TbAtrdDto dto = TbAtrdDto.builder()
+                .atrdId(this.atrdId)
+                .atrdNm(this.atrdNm)
+                .drctCd(this.drctCd)
+                .areaCd(this.areaCd)
+                .delYn(this.delYn)
+                .build();
+
+        return dto;
+    }
 
-    /**
-     * 지역 코드
-     */
-    @Column(name = "AREA_CD")
-    @ApiModelProperty("지역 코드")
-    private String areaCd = "";
+    public TbAtrd(String atrdId) {
+        this.atrdId = atrdId;
+    }
 
-    /**
-     * 삭제 여부
-     */
-    @Column(name = "DEL_YN")
-    @ApiModelProperty("삭제 여부")
-    private String delYn = "N";
+    public void updateInfo(TbAtrdDto.TbAtrdUpdReq req) {
+        this.atrdNm = req.getAtrdNm();
+        this.drctCd = req.getDrctCd();
+        this.areaCd = req.getAreaCd();
+        this.delYn = req.getDelYn();
+    }
 
 }

+ 1 - 1
src/main/java/com/its/op/common/repository/TbAtrdRepository.java

@@ -8,4 +8,4 @@ import org.springframework.stereotype.Repository;
 @Repository
 public interface TbAtrdRepository extends JpaRepository<TbAtrd, String>, JpaSpecificationExecutor<TbAtrd> {
 
-}
+}

+ 61 - 29
src/main/java/com/its/op/common/service/TbAtrdService.java

@@ -3,56 +3,88 @@ package com.its.op.common.service;
 import com.its.op.common.dto.TbAtrdDto;
 import com.its.op.common.entity.TbAtrd;
 import com.its.op.common.repository.TbAtrdRepository;
-import com.its.op.common.vo.TbAtrdQueryVo;
-import com.its.op.common.vo.TbAtrdUpdateVo;
-import com.its.op.common.vo.TbAtrdVo;
 import lombok.RequiredArgsConstructor;
-import org.springframework.beans.BeanUtils;
-import org.springframework.data.domain.Page;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 
+@Slf4j
 @RequiredArgsConstructor
 @Service
 public class TbAtrdService {
 
-    private final TbAtrdRepository tbAtrdRepository;
+    private final TbAtrdRepository repo;
 
-    public String save(TbAtrdVo vo) {
-        TbAtrd bean = new TbAtrd();
-        BeanUtils.copyProperties(vo, bean);
-        bean = tbAtrdRepository.save(bean);
-        return bean.getAtrdId();
+    // 데이터 1건 조회, 없으면 exception
+    private TbAtrd requireOne(String id) {
+        return repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
     }
 
-    public void delete(String id) {
-        tbAtrdRepository.deleteById(id);
+    // 전체 데이터 조회
+    public List<TbAtrdDto> findAll() {
+        List<TbAtrdDto> result = new ArrayList<>();
+        List<TbAtrd> data = this.repo.findAll();
+        for (TbAtrd entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
     }
 
-    public void update(String id, TbAtrdUpdateVo vo) {
-        TbAtrd bean = requireOne(id);
-        BeanUtils.copyProperties(vo, bean);
-        tbAtrdRepository.save(bean);
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    public TbAtrdDto findById(String id) {
+        TbAtrd entity = requireOne(id);
+        return entity.toDto();
     }
 
-    public TbAtrdDto getById(String id) {
-        TbAtrd original = requireOne(id);
-        return toDto(original);
+    // 데이터 변경
+    public TbAtrdDto updateById(String id, TbAtrdDto.TbAtrdUpdReq req) {
+        TbAtrd entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
     }
 
-    public Page<TbAtrdDto> query(TbAtrdQueryVo vo) {
-        throw new UnsupportedOperationException();
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    public List<TbAtrdDto> mergeInfoList(List<TbAtrdDto.TbAtrdUpdReq> reqList) {
+        List<TbAtrdDto> result = new ArrayList<>();
+        for (TbAtrdDto.TbAtrdUpdReq req : reqList) {
+            TbAtrd obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
     }
 
-    private TbAtrdDto toDto(TbAtrd original) {
-        TbAtrdDto bean = new TbAtrdDto();
-        BeanUtils.copyProperties(original, bean);
-        return bean;
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    public TbAtrdDto mergeInfo(TbAtrdDto.TbAtrdUpdReq req) {
+        TbAtrd obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
     }
 
-    private TbAtrd requireOne(String id) {
-        return tbAtrdRepository.findById(id)
-                .orElseThrow(() -> new NoSuchElementException("Resource not found: " + id));
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    public TbAtrdDto deleteById(String id) {
+        TbAtrd entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
     }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    public List<TbAtrdDto> deleteByIds(List<String> ids) {
+        List<TbAtrdDto> result = new ArrayList<>();
+        for (String id : ids) {
+            Optional<TbAtrd> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
 }

+ 19 - 0
src/main/java/com/its/op/repository/BaseRepository.java

@@ -0,0 +1,19 @@
+package com.its.op.repository;
+
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.NoRepositoryBean;
+
+import java.io.Serializable;
+
+@NoRepositoryBean
+public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T,ID> {
+
+    Page<T> findAll(Pageable pageable, Integer totalElements);
+    Page<T> findAll(Specification<T> spec, Pageable pageable, Integer totalElements);
+    Page<T> findAll(Specification<T> spec, Pageable pageable, Integer totalElements, Sort sort);
+
+}