Browse Source

database first commit

shjung 3 năm trước cách đây
mục cha
commit
f19cb5f068
38 tập tin đã thay đổi với 1960 bổ sung30 xóa
  1. 18 14
      src/main/java/com/its/op/controller/common/CommonController.java
  2. 50 0
      src/main/java/com/its/op/controller/database/LinkPrcsParaController.java
  3. 41 0
      src/main/java/com/its/op/controller/database/TbClctSystStupController.java
  4. 8 4
      src/main/java/com/its/op/controller/database/TbCmtrGradClsfController.java
  5. 71 0
      src/main/java/com/its/op/controller/database/TbLinkParaClctSystController.java
  6. 66 0
      src/main/java/com/its/op/controller/database/TbLinkParaDetlController.java
  7. 67 0
      src/main/java/com/its/op/controller/database/TbLinkParaStupController.java
  8. 51 0
      src/main/java/com/its/op/controller/traffic/TbRoadTrafController.java
  9. 34 0
      src/main/java/com/its/op/model/dto/ClctSystStupDto.java
  10. 44 0
      src/main/java/com/its/op/model/dto/LinkParaClctSystDto.java
  11. 88 0
      src/main/java/com/its/op/model/dto/LinkParaDetlDto.java
  12. 48 0
      src/main/java/com/its/op/model/dto/LinkParaStupDto.java
  13. 58 0
      src/main/java/com/its/op/model/dto/LinkPrcsParaDto.java
  14. 55 0
      src/main/java/com/its/op/model/dto/RoadTrafDto.java
  15. 44 0
      src/main/java/com/its/op/model/entity/ClctSystStup.java
  16. 61 0
      src/main/java/com/its/op/model/entity/LinkParaClctSyst.java
  17. 20 0
      src/main/java/com/its/op/model/entity/LinkParaClctSystKey.java
  18. 82 0
      src/main/java/com/its/op/model/entity/LinkParaDetl.java
  19. 48 0
      src/main/java/com/its/op/model/entity/LinkParaStup.java
  20. 45 0
      src/main/java/com/its/op/model/entity/RoadTraf.java
  21. 9 0
      src/main/java/com/its/op/repository/ClctSystStupRepository.java
  22. 26 0
      src/main/java/com/its/op/repository/LinkParaClctSystRepository.java
  23. 9 0
      src/main/java/com/its/op/repository/LinkParaDetlRepository.java
  24. 9 0
      src/main/java/com/its/op/repository/LinkParaStupRepository.java
  25. 15 0
      src/main/java/com/its/op/repository/RoadTrafRepository.java
  26. 1 1
      src/main/java/com/its/op/repository/UserInfrRepository.java
  27. 136 0
      src/main/java/com/its/op/repository/dao/BatchDaoService.java
  28. 172 0
      src/main/java/com/its/op/repository/dao/LinkPrcsParaDao.java
  29. 94 0
      src/main/java/com/its/op/service/database/LinkPrcsParaService.java
  30. 29 0
      src/main/java/com/its/op/service/database/TbClctSystStupService.java
  31. 14 11
      src/main/java/com/its/op/service/database/TbCmtrGradClsfService.java
  32. 122 0
      src/main/java/com/its/op/service/database/TbLinkParaClctSystService.java
  33. 95 0
      src/main/java/com/its/op/service/database/TbLinkParaDetlService.java
  34. 95 0
      src/main/java/com/its/op/service/database/TbLinkParaStupService.java
  35. 42 0
      src/main/java/com/its/op/service/traffic/RoadTrafService.java
  36. 47 0
      src/main/java/com/its/op/utils/ItsUtils.java
  37. 4 0
      src/main/resources/application.yml
  38. 42 0
      src/main/resources/mybatis/mapper/LinkPrcsParaMapper.xml

+ 18 - 14
src/main/java/com/its/op/controller/common/CommonController.java

@@ -1,13 +1,9 @@
 package com.its.op.controller.common;
 
 import com.its.op.model.dto.UnitSystSttsDto;
-import com.its.op.model.entity.*;
+import com.its.op.model.entity.VwUnitSystStts;
 import com.its.op.model.mapper.CommonEntityMapper;
 import com.its.op.model.vo.common.*;
-import com.its.op.repository.IfscRepository;
-import com.its.op.repository.LinkRepository;
-import com.its.op.repository.NodeRepository;
-import com.its.op.repository.RoadRepository;
 import com.its.op.service.common.impl.CommonServiceImpl;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -16,13 +12,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
-import java.util.Optional;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -32,17 +26,27 @@ import java.util.Optional;
 public class CommonController {
 
     private final CommonServiceImpl service;
-    private final LinkRepository linkRepo;
+    /*private final LinkRepository linkRepo;
     private final IfscRepository ifscRepo;
     private final RoadRepository roadRepo;
     private final NodeRepository nodeRepo;
-
-    @ApiOperation(value = "노드", response = Node.class, responseContainer = "ArrayList")
+*/
+    /*@ApiOperation(value = "노드(TB_NODE)", response = NodeDto.NodeInfo.class, responseContainer = "ArrayList")
     @GetMapping(value = "/nodes", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<Node>> findNodeAll(HttpServletRequest request) {
-        List<Node> result = this.nodeRepo.findAll();
+    public ResponseEntity<List<NodeDto.NodeInfo>> findNodeAll() {
+        List<NodeDto.NodeInfo> result = new ArrayList<>();
+        List<Node> data = this.nodeRepo.findAll();
+        for (Node node : data) {
+            result.add(new NodeDto.NodeInfo(node));
+        }
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
+    @ApiOperation(value = "노드개별(TB_NODE)", response = NodeDto.NodeInfo.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/nodes", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<NodeDto.NodeInfo> findNodeById(@PathVariable final Long id) {
+        Optional<Node> nodeOpt = this.nodeRepo.findById(id);
+        return nodeOpt.map(node -> new ResponseEntity<>(new NodeDto.NodeInfo(node), HttpStatus.OK)).orElseGet(() -> new ResponseEntity<>(null, HttpStatus.NOT_FOUND));
+    }
 
     @ApiOperation(value = "링크", response = Link.class, responseContainer = "ArrayList")
     @GetMapping(value = "/links", produces = {"application/json; charset=utf8"})
@@ -58,7 +62,7 @@ public class CommonController {
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "서비스구간 ID", response = Ifsc.class, responseContainer = "ArrayList")
+    @ApiOperation(value = "서비스구간개별", response = Ifsc.class, responseContainer = "ArrayList")
     @GetMapping(value = "/ifscs/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<Ifsc> findIfscById(@PathVariable("id") Long id) {
         Optional<Ifsc> obj = this.ifscRepo.findById(id);
@@ -71,7 +75,7 @@ public class CommonController {
         List<Road> result = this.roadRepo.findAll();
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
-
+*/
     @ApiOperation(value = "시설물 유형(TB_CMMN_CD)", response = FcltTypeVo.class, responseContainer = "ArrayList")
     @GetMapping(value = "/fclt/type/", produces = {"application/json; charset=utf8"})
     public ResponseEntity<List<FcltTypeVo>> findLinkTrafAll(HttpServletRequest request) {

+ 50 - 0
src/main/java/com/its/op/controller/database/LinkPrcsParaController.java

@@ -0,0 +1,50 @@
+package com.its.op.controller.database;
+
+import com.its.op.model.dto.LinkPrcsParaDto;
+import com.its.op.service.database.LinkPrcsParaService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/database/link-prcs-para")
+@Api(tags = "09.기초데이터관리-09.가공파라미터관리-00.가공파라미터관리", description="00.가공파라미터관리")
+public class LinkPrcsParaController {
+
+    private final LinkPrcsParaService service;
+
+    @ApiOperation(value = "개별정보조회(TB_LINK_PARA_STUP, TB_LINK_PARA_DETL, TB_LINK_PARA_CLCT_SYST)", response = LinkPrcsParaDto.LinkPrcsParaInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkPrcsParaDto.LinkPrcsParaInfo> findById(@PathVariable final Long id) {
+        LinkPrcsParaDto.LinkPrcsParaInfo result = this.service.findListById(id);
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "개별정보변경/생성(TB_LINK_PARA_STUP, TB_LINK_PARA_DETL, TB_LINK_PARA_CLCT_SYST)", response = LinkPrcsParaDto.LinkPrcsParaUpdateReq.class)
+    @PostMapping(value = "/{ids}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkPrcsParaDto.LinkPrcsParaUpdateReq> mergeById(
+            @PathVariable final List<Long> ids,
+            @RequestBody final LinkPrcsParaDto.LinkPrcsParaUpdateReq req) {
+
+        log.error("{}, [{}]", ids.size(), ids);
+        log.error("{}", req);
+        LinkPrcsParaDto.LinkPrcsParaUpdateReq result = this.service.mergeById(ids, req);
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "전체정보변경/생성(TB_LINK_PARA_STUP, TB_LINK_PARA_DETL, TB_LINK_PARA_CLCT_SYST)", response = LinkPrcsParaDto.LinkPrcsParaUpdateReq.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkPrcsParaDto.LinkPrcsParaUpdateReq> updateById(@RequestBody final LinkPrcsParaDto.LinkPrcsParaUpdateReq req) {
+        LinkPrcsParaDto.LinkPrcsParaUpdateReq result = this.service.mergeAll(req);
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+}

+ 41 - 0
src/main/java/com/its/op/controller/database/TbClctSystStupController.java

@@ -0,0 +1,41 @@
+package com.its.op.controller.database;
+
+import com.its.op.model.dto.ClctSystStupDto;
+import com.its.op.model.entity.ClctSystStup;
+import com.its.op.service.database.TbClctSystStupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+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 java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/database/tb-clct-syst-stup")
+@Api(tags = "09.기초데이터관리-09.가공파라미터관리-01.수집시스템(공통)", description="01.수집시스템")
+public class TbClctSystStupController {
+
+    private final TbClctSystStupService service;
+
+    @ApiOperation(value = "전체조회(TB_CLCT_SYST_STUP)", response = ClctSystStupDto.ClctSystStupInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<ClctSystStupDto.ClctSystStupInfo>> findAll() {
+        List<ClctSystStup> data = this.service.findAll();
+        List<ClctSystStupDto.ClctSystStupInfo> result = new ArrayList<>();
+        for (ClctSystStup obj: data) {
+            if (obj.getUSE_YN().equals("Y")) {
+                result.add(new ClctSystStupDto.ClctSystStupInfo(obj));
+            }
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+}

+ 8 - 4
src/main/java/com/its/op/controller/database/TbCmtrGradClsfController.java

@@ -48,10 +48,14 @@ public class TbCmtrGradClsfController {
 
     @ApiOperation(value = "정보변경(TB_CMTR_GRAD_CLSF)", response = CnctIntnDto.CnctIntnInfo.class)
     @PostMapping(value = "", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<CmtrGradClsfDto.CmtrGradClsfInfo> mergeInfo(@RequestBody @Valid final CmtrGradClsfDto.CmtrGradClsfUpdateReq req) {
-        CmtrGradClsf obj = this.service.updateInfo(req);
-        if (obj != null) {
-            return new ResponseEntity<>(new CmtrGradClsfDto.CmtrGradClsfInfo(obj), HttpStatus.OK);
+    public ResponseEntity<List<CmtrGradClsfDto.CmtrGradClsfInfo>> mergeInfo(@RequestBody @Valid final List<CmtrGradClsfDto.CmtrGradClsfUpdateReq> req) {
+        List<CmtrGradClsfDto.CmtrGradClsfInfo> result = new ArrayList<>();
+        List<CmtrGradClsf> data = this.service.updateInfo(req);
+        if (data != null) {
+            for (CmtrGradClsf obj : data) {
+                result.add(new CmtrGradClsfDto.CmtrGradClsfInfo(obj));
+            }
+            return new ResponseEntity<>(result, HttpStatus.OK);
         }
         return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }

+ 71 - 0
src/main/java/com/its/op/controller/database/TbLinkParaClctSystController.java

@@ -0,0 +1,71 @@
+package com.its.op.controller.database;
+
+import com.its.op.model.dto.LinkParaClctSystDto;
+import com.its.op.model.entity.LinkParaClctSyst;
+import com.its.op.service.database.TbLinkParaClctSystService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/database/tb-link-para-clct-syst")
+@Api(tags = "09.기초데이터관리-09.가공파라미터관리-04.링크파라미터수집시스템", description="04.링크파라미터수집시스템")
+public class TbLinkParaClctSystController {
+
+    private final TbLinkParaClctSystService service;
+
+    /*
+    @ApiOperation(value = "전체조회(TB_LINK_PARA_CLCT_SYST)", response = LinkParaClctSystDto.LinkParaClctSystInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkParaClctSystDto.LinkParaClctSystInfo>> findAll() {
+        List<LinkParaClctSyst> objList = this.service.findAll();
+        List<LinkParaClctSystDto.LinkParaClctSystInfo> result = new ArrayList<>();
+        if (objList != null) {
+            for (LinkParaClctSyst obj : objList) {
+                result.add(new LinkParaClctSystDto.LinkParaClctSystInfo(obj));
+            }
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+*/
+
+    @ApiOperation(value = "개별목록조회(TB_LINK_PARA_CLCT_SYST)", response = LinkParaClctSystDto.LinkParaClctSystInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkParaClctSystDto.LinkParaClctSystInfo>> findById(@PathVariable final Long id) {
+        List<LinkParaClctSyst> objList = this.service.findListById(id);
+        List<LinkParaClctSystDto.LinkParaClctSystInfo> result = new ArrayList<>();
+        if (objList != null) {
+            for (LinkParaClctSyst obj : objList) {
+                result.add(new LinkParaClctSystDto.LinkParaClctSystInfo(obj));
+            }
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "개별정보변경/생성(TB_LINK_PARA_CLCT_SYST)", response = LinkParaClctSystDto.LinkParaClctSystUpdateReq.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkParaClctSystDto.LinkParaClctSystUpdateReq>> updateById(
+            @PathVariable final Long id,
+            @RequestBody final List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> req) {
+
+        List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> objList = this.service.mergeById(id, req);
+        return new ResponseEntity<>(objList, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "전체정보변경/생성(TB_LINK_PARA_CLCT_SYST)", response = LinkParaClctSystDto.LinkParaClctSystUpdateReq.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkParaClctSystDto.LinkParaClctSystUpdateReq>> updateById(@RequestBody final List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> req) {
+        List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> objList = this.service.mergeAll(req);
+        return new ResponseEntity<>(objList, HttpStatus.OK);
+    }
+
+}

+ 66 - 0
src/main/java/com/its/op/controller/database/TbLinkParaDetlController.java

@@ -0,0 +1,66 @@
+package com.its.op.controller.database;
+
+import com.its.op.model.dto.LinkParaDetlDto;
+import com.its.op.model.entity.LinkParaDetl;
+import com.its.op.service.database.TbLinkParaDetlService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/database/tb-link-para-detl")
+@Api(tags = "09.기초데이터관리-09.가공파라미터관리-03.링크파라미터상세", description="03.링크파라미터상세")
+public class TbLinkParaDetlController {
+
+    private final TbLinkParaDetlService service;
+
+    /*
+    @ApiOperation(value = "전체조회(TB_LINK_PARA_DETL)", response = LinkParaDetlDto.LinkParaDetlInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkParaDetlDto.LinkParaDetlInfo>> findAll() {
+        List<LinkParaDetl> data = this.service.findAll();
+        List<LinkParaDetlDto.LinkParaDetlInfo> result = new ArrayList<>();
+        for (LinkParaDetl obj: data) {
+            result.add(new LinkParaDetlDto.LinkParaDetlInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+*/
+
+    @ApiOperation(value = "개별조회(TB_LINK_PARA_DETL)", response = LinkParaDetlDto.LinkParaDetlInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkParaDetlDto.LinkParaDetlInfo> findById(@PathVariable final Long id) {
+        LinkParaDetl obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new LinkParaDetlDto.LinkParaDetlInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "개별정보변경/생성(TB_LINK_PARA_DETL)", response = LinkParaDetlDto.LinkParaDetlInfo.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkParaDetlDto.LinkParaDetlInfo> updateById(
+            @PathVariable final Long id,
+            @RequestBody final LinkParaDetlDto.LinkParaDetlUpdateReq req) {
+
+        LinkParaDetl obj = this.service.mergeById(id, req);
+        if (obj != null) {
+            return new ResponseEntity<>(new LinkParaDetlDto.LinkParaDetlInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "전체정보변경/생성(TB_LINK_PARA_DETL)", response = LinkParaDetlDto.LinkParaDetlUpdateReq.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkParaDetlDto.LinkParaDetlUpdateReq> updateById(@RequestBody final LinkParaDetlDto.LinkParaDetlUpdateReq req) {
+        LinkParaDetlDto.LinkParaDetlUpdateReq obj = this.service.mergeAll(req);
+        return new ResponseEntity<>(req, HttpStatus.OK);
+    }
+
+}

+ 67 - 0
src/main/java/com/its/op/controller/database/TbLinkParaStupController.java

@@ -0,0 +1,67 @@
+package com.its.op.controller.database;
+
+import com.its.op.model.dto.LinkParaStupDto;
+import com.its.op.model.entity.LinkParaStup;
+import com.its.op.service.database.TbLinkParaStupService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/database/tb-link-para-stup")
+@Api(tags = "09.기초데이터관리-09.가공파라미터관리-02.링크파라미터설정", description="02.링크파라미터설정")
+public class TbLinkParaStupController {
+
+    private final TbLinkParaStupService service;
+
+    /*
+    @ApiOperation(value = "전체조회(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LinkParaStupDto.LinkParaStupInfo>> findAll() {
+        List<LinkParaStup> data = this.service.findAll();
+        List<LinkParaStupDto.LinkParaStupInfo> result = new ArrayList<>();
+        for (LinkParaStup obj: data) {
+            result.add(new LinkParaStupDto.LinkParaStupInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+*/
+
+    @ApiOperation(value = "개별조회(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkParaStupDto.LinkParaStupInfo> findById(@PathVariable final Long id) {
+        LinkParaStup obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new LinkParaStupDto.LinkParaStupInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "개별정보변경/생성(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupInfo.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkParaStupDto.LinkParaStupInfo> updateById(
+            @PathVariable final Long id,
+            @RequestBody final LinkParaStupDto.LinkParaStupUpdateReq req) {
+
+        LinkParaStup obj = this.service.mergeById(id, req);
+        if (obj != null) {
+            return new ResponseEntity<>(new LinkParaStupDto.LinkParaStupInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "전체정보변경/생성(TB_LINK_PARA_STUP)", response = LinkParaStupDto.LinkParaStupUpdateReq.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LinkParaStupDto.LinkParaStupUpdateReq> updateById(@RequestBody final LinkParaStupDto.LinkParaStupUpdateReq req) {
+        LinkParaStupDto.LinkParaStupUpdateReq obj = this.service.mergeAll(req);
+        return new ResponseEntity<>(req, HttpStatus.OK);
+
+    }
+
+}

+ 51 - 0
src/main/java/com/its/op/controller/traffic/TbRoadTrafController.java

@@ -0,0 +1,51 @@
+package com.its.op.controller.traffic;
+
+import com.its.op.model.dto.AtrdDto;
+import com.its.op.model.dto.RoadTrafDto;
+import com.its.op.model.entity.RoadTraf;
+import com.its.op.service.traffic.RoadTrafService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/api/tb-road-traf")
+@Api(tags = "00.교통상황관리-1.현재소통정보조회-3.도로소통정보", description="3.도로소통정보")
+public class TbRoadTrafController {
+
+    private final RoadTrafService service;
+
+    @ApiOperation(value = "전체조회(TB_ROAD_TRAF)", response = RoadTrafDto.RoadTrafInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<RoadTrafDto.RoadTrafInfo>> findAll() {
+        List<RoadTraf> data = this.service.findAll();
+        List<RoadTrafDto.RoadTrafInfo> result = new ArrayList<>();
+        for (RoadTraf obj: data) {
+            result.add(new RoadTrafDto.RoadTrafInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+    @ApiOperation(value = "개별조회(TB_ROAD_TRAF)", response = AtrdDto.AtrdInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<RoadTrafDto.RoadTrafInfo> findById(@PathVariable final Long id) {
+        RoadTraf obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new RoadTrafDto.RoadTrafInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+}

+ 34 - 0
src/main/java/com/its/op/model/dto/ClctSystStupDto.java

@@ -0,0 +1,34 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.ClctSystStup;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+public class ClctSystStupDto implements Serializable {
+
+    @Getter
+    public static class ClctSystStupInfo {
+        private final String  CLCT_SYST_CD;     //	N	VARCHAR2(7)	    N			수집 시스템 코드
+        private final Integer CLCT_SYST_NMBR;   //	N	NUMBER(2)	    Y			수집 시스템 번호
+        private final String  CLCT_SYST_NM;     //	N	VARCHAR2(30)	N			수집 시스템 명
+        private final String  CLCT_SYST_EXPL;   //	N	VARCHAR2(100)	Y			수집 시스템 설명
+        private final Integer CLCT_MAX_NUM;     //	N	NUMBER(7)	    Y	0		수집 최대 개수
+        private final String  USE_YN;           //	N	CHAR(1)	        Y	'N'		사용 여부
+
+        private final String  CLCT_SYST_DESC;
+
+        public ClctSystStupInfo(ClctSystStup entity) {
+            this.CLCT_SYST_CD   = entity.getCLCT_SYST_CD();
+            this.CLCT_SYST_NMBR = entity.getCLCT_SYST_NMBR();
+            this.CLCT_SYST_NM   = entity.getCLCT_SYST_NM();
+            this.CLCT_SYST_EXPL = entity.getCLCT_SYST_EXPL();
+            this.CLCT_MAX_NUM   = entity.getCLCT_MAX_NUM();
+            this.USE_YN         = entity.getUSE_YN();
+
+            this.CLCT_SYST_DESC = "[" + this.CLCT_SYST_CD + "] " + this.CLCT_SYST_NM;
+
+        }
+    }
+
+}

+ 44 - 0
src/main/java/com/its/op/model/dto/LinkParaClctSystDto.java

@@ -0,0 +1,44 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.LinkParaClctSyst;
+import lombok.*;
+
+import java.io.Serializable;
+
+public class LinkParaClctSystDto implements Serializable {
+
+    @Getter
+    public static class LinkParaClctSystInfo {
+        private final Long    LINK_ID;        //	N	NUMBER(10)	N			링크ID
+        private final String  CLCT_SYST_CD;   //	N	VARCHAR2(7)	N			수집 시스템 코드
+        private final Integer FUSN_PRRT;      //	N	NUMBER(2)	Y	0		퓨전 우선순위
+        private final Double  FUSN_WGHT;      //	N	NUMBER(5,2)	Y	0		퓨전 가중치
+
+        public LinkParaClctSystInfo(LinkParaClctSyst entity) {
+            this.LINK_ID      = entity.getLINK_ID();
+            this.CLCT_SYST_CD = entity.getCLCT_SYST_CD();
+            this.FUSN_PRRT    = entity.getFUSN_PRRT();
+            this.FUSN_WGHT    = entity.getFUSN_WGHT();
+
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class LinkParaClctSystUpdateReq {
+
+        private String  CLCT_SYST_CD;   //	N	VARCHAR2(7)	N			수집 시스템 코드
+        private Integer FUSN_PRRT;      //	N	NUMBER(2)	Y	0		퓨전 우선순위
+        private Double  FUSN_WGHT;      //	N	NUMBER(5,2)	Y	0		퓨전 가중치
+
+        @Builder
+        public LinkParaClctSystUpdateReq(String CLCT_SYST_CD, Integer FUSN_PRRT, Double FUSN_WGHT) {
+            this.CLCT_SYST_CD = CLCT_SYST_CD;
+            this.FUSN_PRRT = FUSN_PRRT;
+            this.FUSN_WGHT = FUSN_WGHT;
+        }
+    }
+
+}

+ 88 - 0
src/main/java/com/its/op/model/dto/LinkParaDetlDto.java

@@ -0,0 +1,88 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.LinkParaDetl;
+import lombok.*;
+
+import java.io.Serializable;
+
+public class LinkParaDetlDto implements Serializable {
+
+    @Getter
+    public static class LinkParaDetlInfo {
+        private final Long    LINK_ID;                    //	N	NUMBER(10)	N			링크ID
+        private final Integer FLTR_MIN_TFVL;              //	N	NUMBER(6)	Y	0		필터링 최소 교통량
+        private final Integer FLTR_MAX_TFVL;              //	N	NUMBER(6)	Y	0		필터링 최대 교통량
+        private final Integer FLTR_LWST_SPED;             //	N	NUMBER(3)	Y	0		필터링 최저 속도
+        private final Integer FLTR_HGHS_SPED;             //	N	NUMBER(3)	Y	0		필터링 최고 속도
+        private final Double  ADJS_WGHT_AVRG_PRE_1CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 1주기
+        private final Double  ADJS_WGHT_AVRG_PRE_2CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 2주기
+        private final Double  ADJS_WGHT_AVRG_PRE_3CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 3주기
+        private final String  ADJS_15M_PTRN_APLY_YN;      //	N	CHAR(1)	    Y	'N'		보정 15분 패턴 적용 여부
+        private final Integer ADJS_SHTR_MISS_DECS_CYCL;   //	N	NUMBER(2)	Y			보정 단기 결측 판단 주기
+        private final Double  SMTH_LWST_SPED_FCTR;        //	N	NUMBER(3,2)	Y	0		평활화 최저 속도 계수
+        private final Double  SMTH_HGHS_SPED_FCTR;        //	N	NUMBER(3,2)	Y	0		평활화 최고 속도 계수
+        private final Double  SMTH_WGHT_AVRG_PRST;        //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 현재
+        private final Double  SMTH_WGHT_AVRG_PRE_1CYCL;   //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 이전 1주기
+        private final Double  SMTH_WGHT_AVRG_PRE_2CYCL;   //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 이전 2주기
+
+        public LinkParaDetlInfo(LinkParaDetl entity) {
+            this.LINK_ID                  = entity.getLINK_ID();
+            this.FLTR_MIN_TFVL            = entity.getFLTR_MIN_TFVL();
+            this.FLTR_MAX_TFVL            = entity.getFLTR_MAX_TFVL();
+            this.FLTR_LWST_SPED           = entity.getFLTR_LWST_SPED();
+            this.FLTR_HGHS_SPED           = entity.getFLTR_HGHS_SPED();
+            this.ADJS_WGHT_AVRG_PRE_1CYCL = entity.getADJS_WGHT_AVRG_PRE_1CYCL();
+            this.ADJS_WGHT_AVRG_PRE_2CYCL = entity.getADJS_WGHT_AVRG_PRE_2CYCL();
+            this.ADJS_WGHT_AVRG_PRE_3CYCL = entity.getADJS_WGHT_AVRG_PRE_3CYCL();
+            this.ADJS_15M_PTRN_APLY_YN    = entity.getADJS_15M_PTRN_APLY_YN();
+            this.ADJS_SHTR_MISS_DECS_CYCL = entity.getADJS_SHTR_MISS_DECS_CYCL();
+            this.SMTH_LWST_SPED_FCTR      = entity.getSMTH_LWST_SPED_FCTR();
+            this.SMTH_HGHS_SPED_FCTR      = entity.getSMTH_HGHS_SPED_FCTR();
+            this.SMTH_WGHT_AVRG_PRST      = entity.getSMTH_WGHT_AVRG_PRST();
+            this.SMTH_WGHT_AVRG_PRE_1CYCL = entity.getSMTH_WGHT_AVRG_PRE_1CYCL();
+            this.SMTH_WGHT_AVRG_PRE_2CYCL = entity.getSMTH_WGHT_AVRG_PRE_2CYCL();
+
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class LinkParaDetlUpdateReq {
+
+        private Integer FLTR_MIN_TFVL;              //	N	NUMBER(6)	Y	0		필터링 최소 교통량
+        private Integer FLTR_MAX_TFVL;              //	N	NUMBER(6)	Y	0		필터링 최대 교통량
+        private Integer FLTR_LWST_SPED;             //	N	NUMBER(3)	Y	0		필터링 최저 속도
+        private Integer FLTR_HGHS_SPED;             //	N	NUMBER(3)	Y	0		필터링 최고 속도
+        private Double  ADJS_WGHT_AVRG_PRE_1CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 1주기
+        private Double  ADJS_WGHT_AVRG_PRE_2CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 2주기
+        private Double  ADJS_WGHT_AVRG_PRE_3CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 3주기
+        private String  ADJS_15M_PTRN_APLY_YN;      //	N	CHAR(1)	    Y	'N'		보정 15분 패턴 적용 여부
+        private Integer ADJS_SHTR_MISS_DECS_CYCL;   //	N	NUMBER(2)	Y			보정 단기 결측 판단 주기
+        private Double  SMTH_LWST_SPED_FCTR;        //	N	NUMBER(3,2)	Y	0		평활화 최저 속도 계수
+        private Double  SMTH_HGHS_SPED_FCTR;        //	N	NUMBER(3,2)	Y	0		평활화 최고 속도 계수
+        private Double  SMTH_WGHT_AVRG_PRST;        //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 현재
+        private Double  SMTH_WGHT_AVRG_PRE_1CYCL;   //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 이전 1주기
+        private Double  SMTH_WGHT_AVRG_PRE_2CYCL;   //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 이전 2주기
+
+        @Builder
+        public LinkParaDetlUpdateReq(Integer FLTR_MIN_TFVL, Integer FLTR_MAX_TFVL, Integer FLTR_LWST_SPED, Integer FLTR_HGHS_SPED, Double ADJS_WGHT_AVRG_PRE_1CYCL, Double ADJS_WGHT_AVRG_PRE_2CYCL, Double ADJS_WGHT_AVRG_PRE_3CYCL, String ADJS_15M_PTRN_APLY_YN, Integer ADJS_SHTR_MISS_DECS_CYCL, Double SMTH_LWST_SPED_FCTR, Double SMTH_HGHS_SPED_FCTR, Double SMTH_WGHT_AVRG_PRST, Double SMTH_WGHT_AVRG_PRE_1CYCL, Double SMTH_WGHT_AVRG_PRE_2CYCL) {
+            this.FLTR_MIN_TFVL = FLTR_MIN_TFVL;
+            this.FLTR_MAX_TFVL = FLTR_MAX_TFVL;
+            this.FLTR_LWST_SPED = FLTR_LWST_SPED;
+            this.FLTR_HGHS_SPED = FLTR_HGHS_SPED;
+            this.ADJS_WGHT_AVRG_PRE_1CYCL = ADJS_WGHT_AVRG_PRE_1CYCL;
+            this.ADJS_WGHT_AVRG_PRE_2CYCL = ADJS_WGHT_AVRG_PRE_2CYCL;
+            this.ADJS_WGHT_AVRG_PRE_3CYCL = ADJS_WGHT_AVRG_PRE_3CYCL;
+            this.ADJS_15M_PTRN_APLY_YN = ADJS_15M_PTRN_APLY_YN;
+            this.ADJS_SHTR_MISS_DECS_CYCL = ADJS_SHTR_MISS_DECS_CYCL;
+            this.SMTH_LWST_SPED_FCTR = SMTH_LWST_SPED_FCTR;
+            this.SMTH_HGHS_SPED_FCTR = SMTH_HGHS_SPED_FCTR;
+            this.SMTH_WGHT_AVRG_PRST = SMTH_WGHT_AVRG_PRST;
+            this.SMTH_WGHT_AVRG_PRE_1CYCL = SMTH_WGHT_AVRG_PRE_1CYCL;
+            this.SMTH_WGHT_AVRG_PRE_2CYCL = SMTH_WGHT_AVRG_PRE_2CYCL;
+        }
+    }
+
+}

+ 48 - 0
src/main/java/com/its/op/model/dto/LinkParaStupDto.java

@@ -0,0 +1,48 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.LinkParaStup;
+import lombok.*;
+
+import java.io.Serializable;
+
+public class LinkParaStupDto implements Serializable {
+
+    @Getter
+    public static class LinkParaStupInfo {
+        private final Long   LINK_ID;         //	N	NUMBER(10)	N			링크ID
+        private final String FLTR_MTHD_CD;    //	N	VARCHAR2(7)	Y			필터링 방법 코드
+        private final String FUSN_MTHD_CD;    //	N	VARCHAR2(7)	Y			퓨전 방법 코드
+        private final String ADJS_MTHD_CD;    //	N	VARCHAR2(7)	Y			보정 방법 코드
+        private final String SMTH_MTHD_CD;    //	N	VARCHAR2(7)	Y			평활화 방법 코드
+
+        public LinkParaStupInfo(LinkParaStup entity) {
+            this.LINK_ID      = entity.getLINK_ID();
+            this.FLTR_MTHD_CD = entity.getFLTR_MTHD_CD();
+            this.FUSN_MTHD_CD = entity.getFUSN_MTHD_CD();
+            this.ADJS_MTHD_CD = entity.getADJS_MTHD_CD();
+            this.SMTH_MTHD_CD = entity.getSMTH_MTHD_CD();
+
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class LinkParaStupUpdateReq {
+
+        private String FLTR_MTHD_CD;    //	N	VARCHAR2(7)	Y			필터링 방법 코드
+        private String FUSN_MTHD_CD;    //	N	VARCHAR2(7)	Y			퓨전 방법 코드
+        private String ADJS_MTHD_CD;    //	N	VARCHAR2(7)	Y			보정 방법 코드
+        private String SMTH_MTHD_CD;    //	N	VARCHAR2(7)	Y			평활화 방법 코드
+
+        @Builder
+        public LinkParaStupUpdateReq(String FLTR_MTHD_CD, String FUSN_MTHD_CD, String ADJS_MTHD_CD, String SMTH_MTHD_CD) {
+            this.FLTR_MTHD_CD = FLTR_MTHD_CD;
+            this.FUSN_MTHD_CD = FUSN_MTHD_CD;
+            this.ADJS_MTHD_CD = ADJS_MTHD_CD;
+            this.SMTH_MTHD_CD = SMTH_MTHD_CD;
+        }
+    }
+
+}

+ 58 - 0
src/main/java/com/its/op/model/dto/LinkPrcsParaDto.java

@@ -0,0 +1,58 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.LinkParaClctSyst;
+import com.its.op.model.entity.LinkParaDetl;
+import com.its.op.model.entity.LinkParaStup;
+import lombok.*;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+public class LinkPrcsParaDto implements Serializable {
+
+    @Getter
+    public static class LinkPrcsParaInfo {
+
+        private LinkParaStupDto.LinkParaStupInfo stup = null;
+        private LinkParaDetlDto.LinkParaDetlInfo detl = null;
+        private List<LinkParaClctSystDto.LinkParaClctSystInfo> systList = new ArrayList<>();
+
+        public LinkPrcsParaInfo(
+                LinkParaStup stup,
+                LinkParaDetl detl,
+                List<LinkParaClctSyst> systList) {
+
+            if (stup != null) {
+                this.stup = new LinkParaStupDto.LinkParaStupInfo(stup);
+            }
+            if (detl != null) {
+                this.detl = new LinkParaDetlDto.LinkParaDetlInfo(detl);
+            }
+            for (LinkParaClctSyst syst : systList) {
+                this.systList.add(new LinkParaClctSystDto.LinkParaClctSystInfo(syst));
+            }
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class LinkPrcsParaUpdateReq {
+
+        private LinkParaStupDto.LinkParaStupUpdateReq stup;
+        private LinkParaDetlDto.LinkParaDetlUpdateReq detl;
+        private List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> systList;
+
+        @Builder
+        public LinkPrcsParaUpdateReq(
+                LinkParaStupDto.LinkParaStupUpdateReq stup,
+                LinkParaDetlDto.LinkParaDetlUpdateReq detl,
+                List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> systList) {
+            this.stup = stup;
+            this.detl = detl;
+            this.systList = systList;
+        }
+    }
+}

+ 55 - 0
src/main/java/com/its/op/model/dto/RoadTrafDto.java

@@ -0,0 +1,55 @@
+package com.its.op.model.dto;
+
+import com.its.op.global.CodeManager;
+import com.its.op.model.entity.RoadTraf;
+import com.its.op.utils.ItsUtils;
+import lombok.Getter;
+
+import java.io.Serializable;
+
+public class RoadTrafDto implements Serializable {
+
+    @Getter
+    public static class RoadTrafInfo {
+        private final Long    ROAD_ID;        //	N	NUMBER(10)	    N			도로 ID
+        private final String  PRCN_DT;        //	N	VARCHAR2(14)	Y			가공 일시
+        private final Integer TFVL;           //	N	NUMBER(6)	    Y	0		교통량
+        private final Integer SPED;           //	N	NUMBER(3)	    Y	0		속도
+        private final Integer PTRN_SPED;      //	N	NUMBER(3)	    Y	0		패턴 속도
+        private final Double  OCPY_RATE;      //	N	NUMBER(5,2)	    Y	0		점유 율
+        private final Integer TRVL_HH;        //	N	NUMBER(6)	    Y	0		통행 시간
+        private final String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
+        private final Integer DATA_NUM;       //	N	NUMBER(3)	    Y	0		데이터 개수
+
+        private final String DRCT_CD_DESC;
+        private final String CMTR_GRAD_DESC;
+
+        private final String ROAD_NAME;       // 도로 명
+        private final String STRT_NM;         // 시점 명
+        private final String END_NM;          // 종점 명
+        private final String DRCT_CD;         // 방향 코드
+        private final String MISS_YN;
+
+        public RoadTrafInfo(RoadTraf entity) {
+            this.ROAD_ID      = entity.getROAD_ID();
+            this.PRCN_DT      = entity.getPRCN_DT();
+            this.TFVL         = entity.getTFVL();
+            this.SPED         = entity.getSPED();
+            this.PTRN_SPED    = entity.getPTRN_SPED();
+            this.OCPY_RATE    = entity.getOCPY_RATE();
+            this.TRVL_HH      = entity.getTRVL_HH();
+            this.CMTR_GRAD_CD = entity.getCMTR_GRAD_CD();
+            this.DATA_NUM     = entity.getDATA_NUM();
+
+            this.ROAD_NAME    = entity.getRoad().getROAD_NAME();
+            this.STRT_NM      = entity.getRoad().getSTRT_NM();
+            this.END_NM       = entity.getRoad().getEND_NM();
+            this.DRCT_CD      = entity.getRoad().getDRCT_CD();
+            this.MISS_YN      = ItsUtils.getMissYn(this.PRCN_DT, this.CMTR_GRAD_CD);
+
+            this.DRCT_CD_DESC = CodeManager.getCodeDesc(CodeManager.DRCT_CD, this.DRCT_CD);
+            this.CMTR_GRAD_DESC = CodeManager.getCodeDesc(CodeManager.CMTR_GRAD_CD, this.CMTR_GRAD_CD);
+        }
+    }
+
+}

+ 44 - 0
src/main/java/com/its/op/model/entity/ClctSystStup.java

@@ -0,0 +1,44 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_CLCT_SYST_STUP")
+public class ClctSystStup {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 7)
+    private String  CLCT_SYST_CD;       //	N	VARCHAR2(7)	    N			수집 시스템 코드
+
+    private Integer CLCT_SYST_NMBR;     //	N	NUMBER(2)	    Y			수집 시스템 번호
+
+    @Column(nullable = false, length = 30)
+    private String  CLCT_SYST_NM;       //	N	VARCHAR2(30)	N			수집 시스템 명
+
+    @Column(length = 100)
+    private String  CLCT_SYST_EXPL;     //	N	VARCHAR2(100)	Y			수집 시스템 설명
+    private Integer CLCT_MAX_NUM;       //	N	NUMBER(7)	    Y	0		수집 최대 개수
+
+
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  USE_YN;             //	N	CHAR(1)	        Y	'N'		사용 여부
+
+}

+ 61 - 0
src/main/java/com/its/op/model/entity/LinkParaClctSyst.java

@@ -0,0 +1,61 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.LinkParaClctSystDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+import org.springframework.data.domain.Persistable;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_LINK_PARA_CLCT_SYST")
+@IdClass(LinkParaClctSystKey.class)
+public class LinkParaClctSyst implements Persistable {
+
+    @Id
+    @Column(nullable = false, length = 7)
+    private Long    LINK_ID;        //	N	NUMBER(10)	N			링크ID
+    @Id
+    @Column(nullable = false, length = 7)
+    private String  CLCT_SYST_CD;   //	N	VARCHAR2(7)	N			수집 시스템 코드
+    @Column(length = 2)
+    private Integer FUSN_PRRT;      //	N	NUMBER(2)	Y	0		퓨전 우선순위
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  FUSN_WGHT;      //	N	NUMBER(5,2)	Y	0		퓨전 가중치
+
+    @Transient
+    private boolean isNew = true;
+
+    @PrePersist
+    @PostLoad
+    public void markNew() {
+        this.isNew = false;
+    }
+
+    @Override
+    public Object getId() {
+        return this.LINK_ID + "*" + this.CLCT_SYST_CD;
+    }
+
+    public LinkParaClctSyst(Long LINK_ID) {
+        this.LINK_ID = LINK_ID;
+    }
+
+    public void updateInfo(LinkParaClctSystDto.LinkParaClctSystUpdateReq req) {
+        this.CLCT_SYST_CD = req.getCLCT_SYST_CD();
+        this.FUSN_PRRT = req.getFUSN_PRRT();
+        this.FUSN_WGHT = req.getFUSN_WGHT();
+
+    }
+
+}

+ 20 - 0
src/main/java/com/its/op/model/entity/LinkParaClctSystKey.java

@@ -0,0 +1,20 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+//@Embeddable
+public class LinkParaClctSystKey implements Serializable {
+
+    //@Id @Column(nullable = false, length = 10)
+    private Long    LINK_ID;        //	N	NUMBER(10)	N			링크ID
+    //@Id @Column(nullable = false, length = 7)
+    private String  CLCT_SYST_CD;   //	N	VARCHAR2(7)	N			수집 시스템 코드
+
+}

+ 82 - 0
src/main/java/com/its/op/model/entity/LinkParaDetl.java

@@ -0,0 +1,82 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.LinkParaDetlDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.ColumnDefault;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_LINK_PARA_DETL")
+public class LinkParaDetl {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 7)
+    private Long    LINK_ID;                    //	N	NUMBER(10)	N			링크ID
+    @Column(length = 6)
+    private Integer FLTR_MIN_TFVL;              //	N	NUMBER(6)	Y	0		필터링 최소 교통량
+    @Column(length = 6)
+    private Integer FLTR_MAX_TFVL;              //	N	NUMBER(6)	Y	0		필터링 최대 교통량
+    @Column(length = 6)
+    private Integer FLTR_LWST_SPED;             //	N	NUMBER(3)	Y	0		필터링 최저 속도
+    @Column(length = 3)
+    private Integer FLTR_HGHS_SPED;             //	N	NUMBER(3)	Y	0		필터링 최고 속도
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  ADJS_WGHT_AVRG_PRE_1CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 1주기
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  ADJS_WGHT_AVRG_PRE_2CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 2주기
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  ADJS_WGHT_AVRG_PRE_3CYCL;   //	N	NUMBER(5,2)	Y	0		보정 가중치 평균 이전 3주기
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  ADJS_15M_PTRN_APLY_YN;      //	N	CHAR(1)	    Y	'N'		보정 15분 패턴 적용 여부
+    @Column(length = 2)
+    private Integer ADJS_SHTR_MISS_DECS_CYCL;   //	N	NUMBER(2)	Y			보정 단기 결측 판단 주기
+    @Column(columnDefinition = "NUMBER", length = 3, precision = 2)
+    private Double  SMTH_LWST_SPED_FCTR;        //	N	NUMBER(3,2)	Y	0		평활화 최저 속도 계수
+    @Column(columnDefinition = "NUMBER", length = 3, precision = 2)
+    private Double  SMTH_HGHS_SPED_FCTR;        //	N	NUMBER(3,2)	Y	0		평활화 최고 속도 계수
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  SMTH_WGHT_AVRG_PRST;        //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 현재
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  SMTH_WGHT_AVRG_PRE_1CYCL;   //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 이전 1주기
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  SMTH_WGHT_AVRG_PRE_2CYCL;   //	N	NUMBER(5,2)	Y	0		평활화 가중치 평균 이전 2주기
+
+
+    public LinkParaDetl(Long LINK_ID) {
+        this.LINK_ID = LINK_ID;
+    }
+
+    public void updateInfo(LinkParaDetlDto.LinkParaDetlUpdateReq req) {
+        this.FLTR_MIN_TFVL            = req.getFLTR_MIN_TFVL();
+        this.FLTR_MAX_TFVL            = req.getFLTR_MAX_TFVL();
+        this.FLTR_LWST_SPED           = req.getFLTR_LWST_SPED();
+        this.FLTR_HGHS_SPED           = req.getFLTR_HGHS_SPED();
+        this.ADJS_WGHT_AVRG_PRE_1CYCL = req.getADJS_WGHT_AVRG_PRE_1CYCL();
+        this.ADJS_WGHT_AVRG_PRE_2CYCL = req.getADJS_WGHT_AVRG_PRE_2CYCL();
+        this.ADJS_WGHT_AVRG_PRE_3CYCL = req.getADJS_WGHT_AVRG_PRE_3CYCL();
+        this.ADJS_15M_PTRN_APLY_YN    = req.getADJS_15M_PTRN_APLY_YN();
+        this.ADJS_SHTR_MISS_DECS_CYCL = req.getADJS_SHTR_MISS_DECS_CYCL();
+        this.SMTH_LWST_SPED_FCTR      = req.getSMTH_LWST_SPED_FCTR();
+        this.SMTH_HGHS_SPED_FCTR      = req.getSMTH_HGHS_SPED_FCTR();
+        this.SMTH_WGHT_AVRG_PRST      = req.getSMTH_WGHT_AVRG_PRST();
+        this.SMTH_WGHT_AVRG_PRE_1CYCL = req.getSMTH_WGHT_AVRG_PRE_1CYCL();
+        this.SMTH_WGHT_AVRG_PRE_2CYCL = req.getSMTH_WGHT_AVRG_PRE_2CYCL();
+
+    }
+}

+ 48 - 0
src/main/java/com/its/op/model/entity/LinkParaStup.java

@@ -0,0 +1,48 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.LinkParaStupDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_LINK_PARA_STUP")
+public class LinkParaStup {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 7)
+    private Long   LINK_ID;         //	N	NUMBER(10)	N			링크ID
+    @Column(nullable = false, length = 7)
+    private String FLTR_MTHD_CD;    //	N	VARCHAR2(7)	Y			필터링 방법 코드
+    @Column(nullable = false, length = 7)
+    private String FUSN_MTHD_CD;    //	N	VARCHAR2(7)	Y			퓨전 방법 코드
+    @Column(nullable = false, length = 7)
+    private String ADJS_MTHD_CD;    //	N	VARCHAR2(7)	Y			보정 방법 코드
+    @Column(nullable = false, length = 7)
+    private String SMTH_MTHD_CD;    //	N	VARCHAR2(7)	Y			평활화 방법 코드
+
+    public LinkParaStup(Long LINK_ID) {
+        this.LINK_ID = LINK_ID;
+    }
+
+    public void updateInfo(LinkParaStupDto.LinkParaStupUpdateReq req) {
+        this.FLTR_MTHD_CD = req.getFLTR_MTHD_CD();
+        this.FUSN_MTHD_CD = req.getFUSN_MTHD_CD();
+        this.ADJS_MTHD_CD = req.getADJS_MTHD_CD();
+        this.SMTH_MTHD_CD = req.getSMTH_MTHD_CD();
+    }
+}

+ 45 - 0
src/main/java/com/its/op/model/entity/RoadTraf.java

@@ -0,0 +1,45 @@
+package com.its.op.model.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+
+import javax.persistence.*;
+
+@DynamicInsert
+@DynamicUpdate
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_ROAD_TRAF")
+public class RoadTraf {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private Long    ROAD_ID;        //	N	NUMBER(10)	    N			도로 ID
+    @Column(length = 14)
+    private String  PRCN_DT;        //	N	VARCHAR2(14)	Y			가공 일시
+    @Column(length = 6)
+    private Integer TFVL;           //	N	NUMBER(6)	    Y	0		교통량
+    @Column(length = 3)
+    private Integer SPED;           //	N	NUMBER(3)	    Y	0		속도
+    @Column(length = 3)
+    private Integer PTRN_SPED;      //	N	NUMBER(3)	    Y	0		패턴 속도
+    @Column(columnDefinition = "NUMBER", length = 5, precision = 2)
+    private Double  OCPY_RATE;      //	N	NUMBER(5,2)	    Y	0		점유 율
+    @Column(length = 6)
+    private Integer TRVL_HH;        //	N	NUMBER(6)	    Y	0		통행 시간
+    @Column(length = 7)
+    private String  CMTR_GRAD_CD;   //	N	VARCHAR2(7)	    Y			소통 등급 코드
+    @Column(length = 3)
+    private Integer DATA_NUM;       //	N	NUMBER(3)	    Y	0		데이터 개수
+
+    @OneToOne
+    @JoinColumn(insertable=false, updatable=false, name="ROAD_ID", referencedColumnName = "ROAD_ID")
+    private Road road = new Road();
+}

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

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.ClctSystStup;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ClctSystStupRepository extends JpaRepository<ClctSystStup, String> {
+}

+ 26 - 0
src/main/java/com/its/op/repository/LinkParaClctSystRepository.java

@@ -0,0 +1,26 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.LinkParaClctSyst;
+import com.its.op.model.entity.LinkParaClctSystKey;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface LinkParaClctSystRepository extends JpaRepository<LinkParaClctSyst, LinkParaClctSystKey> {
+
+    @Query(value = "select distinct p from LinkParaClctSyst p where p.LINK_ID = ?1")
+    List<LinkParaClctSyst> findListById(Long LINK_ID);
+
+    @Modifying // select 문이 아님을 나타낸다
+    @Query(value = "DELETE from LinkParaClctSyst m", nativeQuery = true)
+    void deleteDataAll() throws Exception;
+
+    @Modifying // select 문이 아님을 나타낸다
+    @Query(value = "DELETE from LinkParaClctSyst m where m.LINK_ID = :link_id", nativeQuery = true)
+    void deleteListById(@Param("link_id")Long link_id) throws Exception;
+}

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

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.LinkParaDetl;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LinkParaDetlRepository extends JpaRepository<LinkParaDetl, Long> {
+}

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

@@ -0,0 +1,9 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.LinkParaStup;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface LinkParaStupRepository extends JpaRepository<LinkParaStup, Long> {
+}

+ 15 - 0
src/main/java/com/its/op/repository/RoadTrafRepository.java

@@ -0,0 +1,15 @@
+package com.its.op.repository;
+
+import com.its.op.model.entity.RoadTraf;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface RoadTrafRepository extends JpaRepository<RoadTraf, Long> {
+
+    @Query(value = "select distinct p from RoadTraf p inner join p.road")
+    List<RoadTraf> findAll();
+}

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

@@ -11,6 +11,6 @@ import org.springframework.stereotype.Repository;
 public interface UserInfrRepository extends JpaRepository<UserInfr, String> {
 
     @Modifying // select 문이 아님을 나타낸다
-    @Query(value = "UPDATE UserInfr m set m.PWD = :passwordwhere m.USER_ID = :user_id", nativeQuery = true)
+    @Query(value = "UPDATE UserInfr m set m.PWD = :password where m.USER_ID = :user_id", nativeQuery = true)
     void changePwd(@Param("password")String password, @Param("user_id")String user_id) throws Exception;
 }

+ 136 - 0
src/main/java/com/its/op/repository/dao/BatchDaoService.java

@@ -0,0 +1,136 @@
+package com.its.op.repository.dao;
+
+import com.its.op.utils.Elapsed;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Data
+@Slf4j
+public abstract class BatchDaoService {
+
+    protected final int MAX_BATCH_SIZE = 1000;
+
+    protected final SqlSessionFactory sqlSessionFactory;
+    protected String serviceName;
+    protected String mapperName;
+    protected String mapper;
+    protected int count;
+
+    public BatchDaoService(SqlSessionFactory sqlSessionFactory) {
+        this.sqlSessionFactory = sqlSessionFactory;
+    }
+
+    public int getCount() {
+        return this.count;
+    }
+    public String getMapper() {
+        return this.mapper;
+    }
+    public String getServiceName() {
+        return this.serviceName;
+    }
+    public String getMapperName() {
+        return this.mapperName;
+    }
+
+    public int execute(String mapper) {
+        log.info("{}.insertBatch: {}: START.", this.serviceName, mapper);
+
+        this.mapper = mapper;
+        String mapperName = this.mapperName + this.mapper;
+        Elapsed elapsed = new Elapsed();
+        int total = 0;
+                SqlSession sqlSession = null;
+        try {
+            sqlSession = this.sqlSessionFactory.openSession(ExecutorType.SIMPLE, false);
+            total = sqlSession.update(mapperName);
+        }
+        catch (Exception e) {
+            log.error("{}.update: {}: ERROR. Exception: {}.", this.serviceName, mapperName, e.getMessage());
+        }
+        finally {
+            if (sqlSession != null) {
+                sqlSession.commit();
+                sqlSession.close();
+            }
+        }
+        log.info("{}.insertBatch: {}: ..END. {} EA. {} ms.", this.serviceName, mapper, total, elapsed.milliSeconds());
+        return total;
+    }
+
+    public int insertBatch(String mapper, List<HashMap<String, Object>> lists) {
+        log.info("{}.insertBatch: {}: START.", this.serviceName, mapper);
+
+        this.mapper = mapper;
+        String mapperName = this.mapperName + this.mapper;
+        Elapsed elapsed = new Elapsed();
+        int total = lists.size();
+        int jobCnt = 0;
+        SqlSession sqlSession = null;
+        try {
+            sqlSession = this.sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+            for (Map<String, Object> param : lists) {
+                sqlSession.insert(mapperName, param);
+                jobCnt++;
+                if (jobCnt % this.MAX_BATCH_SIZE == 0 || jobCnt == total) {
+                    sqlSession.flushStatements();
+                    sqlSession.clearCache();
+                }
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.insertBatch: {}: ERROR. Exception: {}.", this.serviceName, mapperName, e.getMessage());
+        }
+        finally {
+            if (sqlSession != null) {
+                sqlSession.commit();
+                sqlSession.close();
+            }
+        }
+        this.count = total;
+        log.info("{}.insertBatch: {}: ..END. {} EA. {} ms.", this.serviceName, mapper, total, elapsed.milliSeconds());
+        return this.count;
+    }
+
+    public int updateBatch(String mapper, List<HashMap<String, Object>> lists) {
+        log.info("{}.updateBatch: {}: START.", this.serviceName, mapper);
+
+        this.mapper = mapper;
+        String mapperName = this.mapperName + this.mapper;
+        Elapsed elapsed = new Elapsed();
+        int total = lists.size();
+        int jobCnt = 0;
+        SqlSession sqlSession = null;
+        try {
+            sqlSession = this.sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+            for (Map<String, Object> param : lists) {
+                sqlSession.update(mapperName, param);
+                jobCnt++;
+                if (jobCnt % this.MAX_BATCH_SIZE == 0 || jobCnt == total) {
+                    sqlSession.flushStatements();
+                    sqlSession.clearCache();
+                }
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.updateBatch: {}: ERROR. Exception: {}.", this.serviceName, mapperName, e.getMessage());
+        }
+        finally {
+            if (sqlSession != null) {
+                sqlSession.commit();
+                sqlSession.close();
+            }
+        }
+        this.count = total;
+        log.info("{}.updateBatch: {}: ..END. {} EA. {} ms.", this.serviceName, mapper, total, elapsed.milliSeconds());
+        return this.count;
+    }
+
+}

+ 172 - 0
src/main/java/com/its/op/repository/dao/LinkPrcsParaDao.java

@@ -0,0 +1,172 @@
+package com.its.op.repository.dao;
+
+import com.its.op.model.dto.LinkParaClctSystDto;
+import com.its.op.model.dto.LinkParaDetlDto;
+import com.its.op.model.dto.LinkParaStupDto;
+import com.its.op.model.dto.LinkPrcsParaDto;
+import com.its.op.model.entity.Link;
+import com.its.op.utils.Elapsed;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.ibatis.session.ExecutorType;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.springframework.stereotype.Repository;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Repository
+public class LinkPrcsParaDao extends BatchDaoService {
+
+    public LinkPrcsParaDao(SqlSessionFactory sqlSessionFactory) {
+        super(sqlSessionFactory);
+        this.serviceName = "LinkPrcsParaDao";
+        this.mapperName  = "mapper.LinkPrcsParaMapper.";
+    }
+
+    public LinkPrcsParaDto.LinkPrcsParaUpdateReq mergeAll(LinkPrcsParaDto.LinkPrcsParaUpdateReq req, List<Link> links) {
+
+        log.info("{}.mergeAll: START.", this.serviceName);
+        Elapsed elapsed = new Elapsed();
+        int total = 0;
+        SqlSession sqlSession = null;
+        try {
+            sqlSession = this.sqlSessionFactory.openSession(ExecutorType.BATCH, false);
+
+            this.mapper = this.mapperName + "deleteLinkParaStup";
+            sqlSession.update(this.mapper);
+
+            this.mapper = this.mapperName + "insertLinkParaStup";
+            total += insertBatch(sqlSession, makeStup(req, links));
+
+            this.mapper = this.mapperName + "deleteLinkParaDetl";
+            sqlSession.update(this.mapper);
+
+            this.mapper = this.mapperName + "insertLinkParaDetl";
+            total += insertBatch(sqlSession, makeDetl(req, links));
+
+            this.mapper = this.mapperName + "deleteLinkParaClctSyst";
+            sqlSession.update(this.mapper);
+
+            this.mapper = this.mapperName + "insertLinkParaClctSyst";
+            total += insertBatch(sqlSession, makeClctSyst(req, links));
+
+            sqlSession.commit();
+        }
+        catch (Exception e) {
+            log.error("{}.update: {}: ERROR. Exception: {}.", this.serviceName, this.mapper, e.getMessage());
+            if (sqlSession != null) {
+                sqlSession.rollback();
+            }
+        }
+        finally {
+            if (sqlSession != null) {
+                sqlSession.close();
+            }
+        }
+        log.info("{}.mergeAll: ..END. {} EA. {} ms.", this.serviceName, total, elapsed.milliSeconds());
+
+        return req;
+    }
+
+    public int insertBatch(SqlSession sqlSession, List<HashMap<String, Object>> lists) throws Exception {
+        log.info("{}.insertBatch: {}: START.", this.serviceName, this.mapper);
+
+        Elapsed elapsed = new Elapsed();
+        int total = lists.size();
+        int jobCnt = 0;
+
+        for (Map<String, Object> param : lists) {
+            sqlSession.insert(this.mapper, param);
+            jobCnt++;
+            if (jobCnt % this.MAX_BATCH_SIZE == 0 || jobCnt == total) {
+                sqlSession.flushStatements();
+                sqlSession.clearCache();
+            }
+        }
+        log.info("{}.insertBatch: {}: ..END. {} EA. {} ms.", this.serviceName, this.mapper, total, elapsed.milliSeconds());
+        return total;
+    }
+
+    private List<HashMap<String, Object>> makeStup(LinkPrcsParaDto.LinkPrcsParaUpdateReq req, List<Link> links) {
+
+        List<HashMap<String, Object>> lists = new ArrayList<HashMap<String, Object>>();
+        LinkParaStupDto.LinkParaStupUpdateReq stup = req.getStup();
+        if (stup == null) return lists;
+
+        for (Link link : links) {
+            if (link.getDEL_YN().equals("Y")) {
+                continue;
+            }
+
+            HashMap<String, Object> param = new HashMap<String, Object>();
+            param.put("LINK_ID",      link.getLINK_ID());
+            param.put("FLTR_MTHD_CD", stup.getFLTR_MTHD_CD());
+            param.put("FUSN_MTHD_CD", stup.getFUSN_MTHD_CD());
+            param.put("ADJS_MTHD_CD", stup.getADJS_MTHD_CD());
+            param.put("SMTH_MTHD_CD", stup.getSMTH_MTHD_CD());
+            lists.add(param);
+        }
+        return lists;
+    }
+
+    private List<HashMap<String, Object>> makeDetl(LinkPrcsParaDto.LinkPrcsParaUpdateReq req, List<Link> links) {
+
+        List<HashMap<String, Object>> lists = new ArrayList<HashMap<String, Object>>();
+        LinkParaDetlDto.LinkParaDetlUpdateReq detl = req.getDetl();
+        if (detl == null) return lists;
+
+        for (Link link : links) {
+            if (link.getDEL_YN().equals("Y")) {
+                continue;
+            }
+
+            HashMap<String, Object> param = new HashMap<String, Object>();
+            param.put("LINK_ID",      link.getLINK_ID());
+            param.put("FLTR_MIN_TFVL",            detl.getFLTR_MIN_TFVL());
+            param.put("FLTR_MAX_TFVL",            detl.getFLTR_MAX_TFVL());
+            param.put("FLTR_LWST_SPED",           detl.getFLTR_LWST_SPED());
+            param.put("FLTR_HGHS_SPED",           detl.getFLTR_HGHS_SPED());
+            param.put("ADJS_WGHT_AVRG_PRE_1CYCL", detl.getADJS_WGHT_AVRG_PRE_1CYCL());
+            param.put("ADJS_WGHT_AVRG_PRE_2CYCL", detl.getADJS_WGHT_AVRG_PRE_2CYCL());
+            param.put("ADJS_WGHT_AVRG_PRE_3CYCL", detl.getADJS_WGHT_AVRG_PRE_3CYCL());
+            param.put("ADJS_15M_PTRN_APLY_YN",    detl.getADJS_15M_PTRN_APLY_YN());
+            param.put("ADJS_SHTR_MISS_DECS_CYCL", detl.getADJS_SHTR_MISS_DECS_CYCL());
+            param.put("SMTH_LWST_SPED_FCTR",      detl.getSMTH_LWST_SPED_FCTR());
+            param.put("SMTH_HGHS_SPED_FCTR",      detl.getSMTH_HGHS_SPED_FCTR());
+            param.put("SMTH_WGHT_AVRG_PRST",      detl.getSMTH_WGHT_AVRG_PRST());
+            param.put("SMTH_WGHT_AVRG_PRE_1CYCL", detl.getSMTH_WGHT_AVRG_PRE_1CYCL());
+            param.put("SMTH_WGHT_AVRG_PRE_2CYCL", detl.getSMTH_WGHT_AVRG_PRE_2CYCL());
+
+            lists.add(param);
+        }
+        return lists;
+    }
+
+    private List<HashMap<String, Object>> makeClctSyst(LinkPrcsParaDto.LinkPrcsParaUpdateReq req, List<Link> links) {
+
+        List<HashMap<String, Object>> lists = new ArrayList<HashMap<String, Object>>();
+        List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> systList = req.getSystList();
+        if (systList == null) return lists;
+
+        for (Link link : links) {
+            if (link.getDEL_YN().equals("Y")) {
+                continue;
+            }
+
+            for (LinkParaClctSystDto.LinkParaClctSystUpdateReq syst : systList) {
+                HashMap<String, Object> param = new HashMap<String, Object>();
+                param.put("LINK_ID", link.getLINK_ID());
+                param.put("CLCT_SYST_CD", syst.getCLCT_SYST_CD());
+                param.put("FUSN_PRRT",    syst.getFUSN_PRRT());
+                param.put("FUSN_WGHT",    syst.getFUSN_WGHT());
+                lists.add(param);
+            }
+        }
+        return lists;
+    }
+
+}

+ 94 - 0
src/main/java/com/its/op/service/database/LinkPrcsParaService.java

@@ -0,0 +1,94 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.LinkParaClctSystDto;
+import com.its.op.model.dto.LinkPrcsParaDto;
+import com.its.op.model.entity.Link;
+import com.its.op.model.entity.LinkParaClctSyst;
+import com.its.op.model.entity.LinkParaDetl;
+import com.its.op.model.entity.LinkParaStup;
+import com.its.op.repository.LinkParaClctSystRepository;
+import com.its.op.repository.LinkParaDetlRepository;
+import com.its.op.repository.LinkParaStupRepository;
+import com.its.op.repository.LinkRepository;
+import com.its.op.repository.dao.LinkPrcsParaDao;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class LinkPrcsParaService {
+
+    private final LinkParaStupRepository stupRepo;
+    private final LinkParaDetlRepository detlRepo;
+    private final LinkParaClctSystRepository systRepo;
+
+    private final LinkRepository linkRepo;
+    private final LinkPrcsParaDao dao;
+
+    public LinkPrcsParaDto.LinkPrcsParaInfo findListById(Long id) {
+
+        LinkPrcsParaDto.LinkPrcsParaInfo result = null;
+        try {
+            LinkParaStup stup = null;
+            LinkParaDetl detl = null;
+            Optional<LinkParaStup> stupOpt = this.stupRepo.findById(id);
+            Optional<LinkParaDetl> detlOpt = this.detlRepo.findById(id);
+            List<LinkParaClctSyst> systOpt = this.systRepo.findListById(id);
+            if (stupOpt.isPresent()) {
+                stup = stupOpt.get();
+            }
+            if (detlOpt.isPresent()) {
+                detl = detlOpt.get();
+            }
+            result = new LinkPrcsParaDto.LinkPrcsParaInfo(stup, detl, systOpt);
+        }
+        catch (Exception e) {
+            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return result;
+    }
+
+    @Transactional
+    public LinkPrcsParaDto.LinkPrcsParaUpdateReq mergeById(List<Long> ids, LinkPrcsParaDto.LinkPrcsParaUpdateReq req) {
+        try {
+            for (Long id : ids) {
+                LinkParaStup stup = new LinkParaStup(id);
+                stup.updateInfo(req.getStup());
+                this.stupRepo.save(stup);
+
+                LinkParaDetl detl = new LinkParaDetl(id);
+                detl.updateInfo(req.getDetl());
+                this.detlRepo.save(detl);
+
+                this.systRepo.deleteListById(id);
+                for (LinkParaClctSystDto.LinkParaClctSystUpdateReq obj : req.getSystList()) {
+                    LinkParaClctSyst syst = new LinkParaClctSyst(id);
+                    syst.updateInfo(obj);
+                    this.systRepo.save(syst);
+                }
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.mergeInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return req;
+    }
+
+    @Transactional
+    public LinkPrcsParaDto.LinkPrcsParaUpdateReq mergeAll(LinkPrcsParaDto.LinkPrcsParaUpdateReq req) {
+        try {
+            List<Link> links = this.linkRepo.findAll();
+            this.dao.mergeAll(req, links);
+        }
+        catch (Exception e) {
+            log.error("{}.mergeAll: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return req;
+    }
+}

+ 29 - 0
src/main/java/com/its/op/service/database/TbClctSystStupService.java

@@ -0,0 +1,29 @@
+package com.its.op.service.database;
+
+import com.its.op.model.entity.ClctSystStup;
+import com.its.op.repository.ClctSystStupRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbClctSystStupService {
+
+    private final ClctSystStupRepository repo;
+
+    public List<ClctSystStup> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<ClctSystStup>();
+    }
+
+}

+ 14 - 11
src/main/java/com/its/op/service/database/TbCmtrGradClsfService.java

@@ -43,22 +43,25 @@ public class TbCmtrGradClsfService {
         return null;
     }
 
-    public CmtrGradClsf updateInfo(CmtrGradClsfDto.CmtrGradClsfUpdateReq req) {
+    public List<CmtrGradClsf> updateInfo(List<CmtrGradClsfDto.CmtrGradClsfUpdateReq> reqList) {
+        List<CmtrGradClsf> result = new ArrayList<>();
         try {
-            CmtrGradClsfKey key = new CmtrGradClsfKey(req.getSECT_GRAD_CD(), req.getCMTR_GRAD_CD());
-            Optional<CmtrGradClsf> data = this.repo.findById(key);
-            CmtrGradClsf obj;
-            if (data.isPresent()) {
-                obj = data.get();
-                obj.updateInfo(req);
-                this.repo.save(obj);
-                return obj;
+            for (CmtrGradClsfDto.CmtrGradClsfUpdateReq req : reqList) {
+                CmtrGradClsfKey key = new CmtrGradClsfKey(req.getSECT_GRAD_CD(), req.getCMTR_GRAD_CD());
+                Optional<CmtrGradClsf> data = this.repo.findById(key);
+                CmtrGradClsf obj;
+                if (data.isPresent()) {
+                    obj = data.get();
+                    obj.updateInfo(req);
+                    this.repo.save(obj);
+                    result.add(obj);
+                }
             }
         }
         catch (Exception e) {
-            log.error("{}.updateInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+            log.error("{}.updateInfo: Object: {}, Exception: {}", getClass().getSimpleName(), reqList, e.getMessage());
         }
-        return null;
+        return result;
     }
 
 }

+ 122 - 0
src/main/java/com/its/op/service/database/TbLinkParaClctSystService.java

@@ -0,0 +1,122 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.LinkParaClctSystDto;
+import com.its.op.model.entity.Link;
+import com.its.op.model.entity.LinkParaClctSyst;
+import com.its.op.repository.LinkParaClctSystRepository;
+import com.its.op.repository.LinkRepository;
+import com.its.op.repository.dao.LinkPrcsParaDao;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbLinkParaClctSystService {
+
+    private final LinkParaClctSystRepository repo;
+    private final LinkRepository linkRepo;
+    private final LinkPrcsParaDao dao;
+
+    public List<LinkParaClctSyst> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<LinkParaClctSyst>();
+    }
+
+    public List<LinkParaClctSyst> findListById(Long id) {
+        try {
+            List<LinkParaClctSyst> data = this.repo.findListById(id);
+            return data;
+        }
+        catch (Exception e) {
+            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return new ArrayList<LinkParaClctSyst>();
+    }
+
+    @Transactional
+    public List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> mergeById(Long id, List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> req) {
+        try {
+            this.repo.deleteListById(id);
+            for (LinkParaClctSystDto.LinkParaClctSystUpdateReq obj : req) {
+                LinkParaClctSyst newObj = new LinkParaClctSyst(id);
+                newObj.updateInfo(obj);
+                this.repo.save(newObj);
+            }
+            return req;
+        }
+        catch (Exception e) {
+            log.error("{}.mergeInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return null;
+    }
+
+    @Transactional
+    public List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> mergeAll(List<LinkParaClctSystDto.LinkParaClctSystUpdateReq> req) {
+        try {
+            this.dao.execute("deleteLinkParaClctSyst");
+
+            List<HashMap<String, Object>> lists = new ArrayList<HashMap<String, Object>>();
+
+            List<Link> links = this.linkRepo.findAll();
+            for (Link link : links) {
+                if (link.getDEL_YN().equals("Y")) {
+                    continue;
+                }
+                for (LinkParaClctSystDto.LinkParaClctSystUpdateReq obj : req) {
+                    HashMap<String, Object> param = new HashMap<String, Object>();
+                    param.put("LINK_ID",      link.getLINK_ID());
+                    param.put("CLCT_SYST_CD", obj.getCLCT_SYST_CD());
+                    param.put("FUSN_PRRT",    obj.getFUSN_PRRT());
+                    param.put("FUSN_WGHT",    obj.getFUSN_WGHT());
+                    lists.add(param);
+                }
+            }
+            log.info("{} EA", lists.size());
+            int cnt = this.dao.insertBatch("insertLinkParaClctSyst", lists);
+            log.info("{} EA", lists.size());
+        }
+        catch (Exception e) {
+            log.error("{}.mergeAll: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return req;
+
+        /*try {
+            this.repo.deleteAllInBatch();
+
+            List<LinkParaClctSyst> jobs = new ArrayList<>();
+
+            //this.repo.deleteDataAll();//deleteAll();
+            List<Link> links = this.linkRepo.findAll();
+            for (Link link : links) {
+                if (link.getDEL_YN().equals("Y")) {
+                    continue;
+                }
+
+                for (LinkParaClctSystDto.LinkParaClctSystUpdateReq obj : req) {
+                    LinkParaClctSyst newObj = new LinkParaClctSyst(link.getLINK_ID());
+                    newObj.updateInfo(obj);
+                    //this.repo.save(newObj);
+                    jobs.add(newObj);
+                }
+            }
+            this.repo.saveAll(jobs);
+            log.error("{} EA", jobs.size());
+        }
+        catch (Exception e) {
+            log.error("{}.mergeAll: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return req;*/
+    }
+}

+ 95 - 0
src/main/java/com/its/op/service/database/TbLinkParaDetlService.java

@@ -0,0 +1,95 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.LinkParaDetlDto;
+import com.its.op.model.entity.Link;
+import com.its.op.model.entity.LinkParaDetl;
+import com.its.op.repository.LinkParaDetlRepository;
+import com.its.op.repository.LinkRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbLinkParaDetlService {
+
+    private final LinkParaDetlRepository repo;
+    private final LinkRepository linkRepo;
+
+    public List<LinkParaDetl> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<LinkParaDetl>();
+    }
+
+    public LinkParaDetl findById(Long id) {
+        try {
+            Optional<LinkParaDetl> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                return data.get();
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+    @Transactional
+    public LinkParaDetl mergeById(Long id, LinkParaDetlDto.LinkParaDetlUpdateReq req) {
+        try {
+            Optional<LinkParaDetl> data = this.repo.findById(id);
+            LinkParaDetl obj;
+            if (data.isPresent()) {
+                obj = data.get();
+                //this.repo.delete(obj);
+            }
+            else {
+                obj = new LinkParaDetl(id);
+            }
+            obj.updateInfo(req);
+            this.repo.save(obj);
+            return obj;
+        }
+        catch (Exception e) {
+            log.error("{}.mergeById: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return null;
+    }
+
+    @Transactional
+    public LinkParaDetlDto.LinkParaDetlUpdateReq mergeAll(LinkParaDetlDto.LinkParaDetlUpdateReq req) {
+        try {
+            List<Link> links = this.linkRepo.findAll();
+            for (Link link : links) {
+                if (link.getDEL_YN().equals("Y")) {
+                    continue;
+                }
+
+                Optional<LinkParaDetl> data = this.repo.findById(link.getLINK_ID());
+                LinkParaDetl obj;
+                if (data.isPresent()) {
+                    obj = data.get();
+                } else {
+                    obj = new LinkParaDetl(link.getLINK_ID());
+                }
+                obj.updateInfo(req);
+                this.repo.save(obj);
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.mergeAll: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return req;
+    }
+}

+ 95 - 0
src/main/java/com/its/op/service/database/TbLinkParaStupService.java

@@ -0,0 +1,95 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.LinkParaStupDto;
+import com.its.op.model.entity.Link;
+import com.its.op.model.entity.LinkParaStup;
+import com.its.op.repository.LinkParaStupRepository;
+import com.its.op.repository.LinkRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbLinkParaStupService {
+
+    private final LinkParaStupRepository repo;
+    private final LinkRepository linkRepo;
+
+    public List<LinkParaStup> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<LinkParaStup>();
+    }
+
+    public LinkParaStup findById(Long id) {
+        try {
+            Optional<LinkParaStup> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                return data.get();
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+    @Transactional
+    public LinkParaStup mergeById(Long id, LinkParaStupDto.LinkParaStupUpdateReq req) {
+        try {
+            Optional<LinkParaStup> data = this.repo.findById(id);
+            LinkParaStup obj;
+            if (data.isPresent()) {
+                obj = data.get();
+                //this.repo.delete(obj);
+            }
+            else {
+                obj = new LinkParaStup(id);
+            }
+            obj.updateInfo(req);
+            this.repo.save(obj);
+            return obj;
+        }
+        catch (Exception e) {
+            log.error("{}.mergeInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return null;
+    }
+
+    @Transactional
+    public LinkParaStupDto.LinkParaStupUpdateReq mergeAll(LinkParaStupDto.LinkParaStupUpdateReq req) {
+        try {
+            List<Link> links = this.linkRepo.findAll();
+            for (Link link : links) {
+                if (link.getDEL_YN().equals("Y")) {
+                    continue;
+                }
+
+                Optional<LinkParaStup> data = this.repo.findById(link.getLINK_ID());
+                LinkParaStup obj;
+                if (data.isPresent()) {
+                    obj = data.get();
+                } else {
+                    obj = new LinkParaStup(link.getLINK_ID());
+                }
+                obj.updateInfo(req);
+                this.repo.save(obj);
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.mergeAll: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return req;
+    }
+}

+ 42 - 0
src/main/java/com/its/op/service/traffic/RoadTrafService.java

@@ -0,0 +1,42 @@
+package com.its.op.service.traffic;
+
+import com.its.op.model.entity.RoadTraf;
+import com.its.op.repository.RoadTrafRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class RoadTrafService {
+
+    private final RoadTrafRepository repo;
+
+    public List<RoadTraf> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<RoadTraf>();
+    }
+    public RoadTraf findById(Long id) {
+        try {
+            Optional<RoadTraf> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                return data.get();
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+}

+ 47 - 0
src/main/java/com/its/op/utils/ItsUtils.java

@@ -0,0 +1,47 @@
+package com.its.op.utils;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+public final class ItsUtils
+{
+	public static Date getPrcsDt(String prcsDt) {
+		SimpleDateFormat transFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+		Date to = null;
+		try {
+			to = transFormat.parse(prcsDt);
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		return to;
+	}
+
+	public static String getMissYn(String prcsDt, String CMTR_GRAD_CD) {
+
+		if (CMTR_GRAD_CD.equals("LTC0")) {
+			return "Y";
+		}
+		if (prcsDt == null || prcsDt.length() != 14) {
+			return "Y";
+		}
+
+		Date startDateTime = getPrcsDt(prcsDt);
+		if (startDateTime == null) {
+			return "Y";
+		}
+		Calendar currDateTime = Calendar.getInstance();
+
+		GregorianCalendar gcStartDateTime = new GregorianCalendar();
+		GregorianCalendar gcEndDateTime = new GregorianCalendar();
+		gcStartDateTime.setTime(startDateTime);
+		gcEndDateTime.setTime(currDateTime.getTime());
+
+		long gap = gcEndDateTime.getTimeInMillis() - gcStartDateTime.getTimeInMillis();
+		long min = gap / 1000L / 60L;
+		return min >= 10 ? "Y" : "N";
+	}
+
+}

+ 4 - 0
src/main/resources/application.yml

@@ -40,6 +40,10 @@ spring:
     database: Oracle
     properties:
       hibernate:
+        jdbc:
+          batch-size: 1000
+        #order_insert: true
+        #order_update: true
         format_sql: true
         implicit_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
         physical_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy

+ 42 - 0
src/main/resources/mybatis/mapper/LinkPrcsParaMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="mapper.LinkPrcsParaMapper">
+
+
+    <delete id="deleteLinkParaStup">
+        DELETE TB_LINK_PARA_STUP
+    </delete>
+
+    <insert id="insertLinkParaStup" parameterType="java.util.Map">
+        INSERT INTO TB_LINK_PARA_STUP (LINK_ID, FLTR_MTHD_CD, FUSN_MTHD_CD, ADJS_MTHD_CD, SMTH_MTHD_CD)
+        VALUES (#{LINK_ID}, #{FLTR_MTHD_CD}, #{FUSN_MTHD_CD}, #{ADJS_MTHD_CD}, #{SMTH_MTHD_CD})
+    </insert>
+
+    <delete id="deleteLinkParaDetl">
+        DELETE TB_LINK_PARA_DETL
+    </delete>
+
+    <insert id="insertLinkParaDetl" parameterType="java.util.Map">
+        INSERT INTO TB_LINK_PARA_DETL (LINK_ID, FLTR_MIN_TFVL, FLTR_MAX_TFVL, FLTR_LWST_SPED, FLTR_HGHS_SPED,
+                                       ADJS_WGHT_AVRG_PRE_1CYCL, ADJS_WGHT_AVRG_PRE_2CYCL, ADJS_WGHT_AVRG_PRE_3CYCL,
+                                       ADJS_15M_PTRN_APLY_YN, ADJS_SHTR_MISS_DECS_CYCL,
+                                       SMTH_LWST_SPED_FCTR, SMTH_HGHS_SPED_FCTR, SMTH_WGHT_AVRG_PRST,
+                                       SMTH_WGHT_AVRG_PRE_1CYCL, SMTH_WGHT_AVRG_PRE_2CYCL)
+        VALUES (#{LINK_ID}, #{FLTR_MIN_TFVL}, #{FLTR_MAX_TFVL}, #{FLTR_LWST_SPED}, #{FLTR_HGHS_SPED},
+                #{ADJS_WGHT_AVRG_PRE_1CYCL}, #{ADJS_WGHT_AVRG_PRE_2CYCL}, #{ADJS_WGHT_AVRG_PRE_3CYCL},
+                #{ADJS_15M_PTRN_APLY_YN}, #{ADJS_SHTR_MISS_DECS_CYCL},
+                #{SMTH_LWST_SPED_FCTR}, #{SMTH_HGHS_SPED_FCTR}, #{SMTH_WGHT_AVRG_PRST},
+                #{SMTH_WGHT_AVRG_PRE_1CYCL}, #{SMTH_WGHT_AVRG_PRE_2CYCL})
+    </insert>
+
+    <delete id="deleteLinkParaClctSyst">
+        DELETE TB_LINK_PARA_CLCT_SYST
+    </delete>
+
+    <insert id="insertLinkParaClctSyst" parameterType="java.util.Map">
+        INSERT INTO TB_LINK_PARA_CLCT_SYST (LINK_ID, CLCT_SYST_CD, FUSN_PRRT, FUSN_WGHT)
+                                    VALUES (#{LINK_ID}, #{CLCT_SYST_CD}, #{FUSN_PRRT}, #{FUSN_WGHT})
+    </insert>
+
+</mapper>