Bläddra i källkod

토요일 작업......

shjung 3 år sedan
förälder
incheckning
e5eb04382f
41 ändrade filer med 1158 tillägg och 98 borttagningar
  1. 1 2
      src/main/java/com/its/op/controller/common/CommonControllerByMybatis.java
  2. 22 6
      src/main/java/com/its/op/controller/database/TbAtrdController.java
  3. 3 3
      src/main/java/com/its/op/controller/database/TbIfscController.java
  4. 55 11
      src/main/java/com/its/op/controller/database/TbLeglHldyInfrController.java
  5. 1 1
      src/main/java/com/its/op/controller/database/TbLinkController.java
  6. 1 1
      src/main/java/com/its/op/controller/database/TbNodeController.java
  7. 55 11
      src/main/java/com/its/op/controller/database/TbParkingLotController.java
  8. 4 4
      src/main/java/com/its/op/controller/database/TbRoadController.java
  9. 1 1
      src/main/java/com/its/op/controller/database/TbSectGradStupController.java
  10. 55 11
      src/main/java/com/its/op/controller/database/TbUnitSystController.java
  11. 1 1
      src/main/java/com/its/op/controller/database/mybatis/TbAtrdControllerMybatis.java
  12. 1 2
      src/main/java/com/its/op/controller/database/mybatis/TbIfscControllerMybatis.java
  13. 23 0
      src/main/java/com/its/op/controller/database/mybatis/TbLeglHldyInfrControllerMybatis.java
  14. 1 2
      src/main/java/com/its/op/controller/database/mybatis/TbLinkControllerMybatis.java
  15. 1 2
      src/main/java/com/its/op/controller/database/mybatis/TbNodeControllerMybatis.java
  16. 23 0
      src/main/java/com/its/op/controller/database/mybatis/TbParkingLotControllerMybatis.java
  17. 1 2
      src/main/java/com/its/op/controller/database/mybatis/TbRoadControllerMybatis.java
  18. 35 0
      src/main/java/com/its/op/controller/database/mybatis/TbSectGradStupControllerMybatis.java
  19. 23 0
      src/main/java/com/its/op/controller/database/mybatis/TbUnitSystControllerMybatis.java
  20. 1 2
      src/main/java/com/its/op/controller/traffic/CurrentTrafficControllerByMybatis.java
  21. 12 7
      src/main/java/com/its/op/exception/ErrorResponse.java
  22. 24 5
      src/main/java/com/its/op/exception/ExceptionControllerAdvisor.java
  23. 33 12
      src/main/java/com/its/op/global/CodeManager.java
  24. 33 4
      src/main/java/com/its/op/model/dto/AtrdDto.java
  25. 25 0
      src/main/java/com/its/op/model/dto/AtrdRoadRltnDto.java
  26. 58 0
      src/main/java/com/its/op/model/dto/LeglHldyInfrDto.java
  27. 98 0
      src/main/java/com/its/op/model/dto/ParkingLotDto.java
  28. 94 0
      src/main/java/com/its/op/model/dto/UnitSystDto.java
  29. 11 0
      src/main/java/com/its/op/model/entity/Atrd.java
  30. 41 0
      src/main/java/com/its/op/model/entity/LeglHldyInfr.java
  31. 63 0
      src/main/java/com/its/op/model/entity/ParkingLot.java
  32. 69 0
      src/main/java/com/its/op/model/entity/UnitSyst.java
  33. 9 0
      src/main/java/com/its/op/repository/LeglHldyInfrRepository.java
  34. 9 0
      src/main/java/com/its/op/repository/ParkingLotRepository.java
  35. 9 0
      src/main/java/com/its/op/repository/UnitSystRepository.java
  36. 24 4
      src/main/java/com/its/op/service/database/TbAtrdService.java
  37. 2 2
      src/main/java/com/its/op/service/database/TbIfscService.java
  38. 78 0
      src/main/java/com/its/op/service/database/TbLeglHldyInfrService.java
  39. 78 0
      src/main/java/com/its/op/service/database/TbParkingLotService.java
  40. 2 2
      src/main/java/com/its/op/service/database/TbRoadService.java
  41. 78 0
      src/main/java/com/its/op/service/database/TbUnitSystService.java

+ 1 - 2
src/main/java/com/its/op/controller/common/CommonControllerByMybatis.java

@@ -10,14 +10,13 @@ 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 javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 @Slf4j
 @RequiredArgsConstructor
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/common")
 @Api(tags = "00.교통상황관리-0.메인", description="메인")
 public class CommonControllerByMybatis {

+ 22 - 6
src/main/java/com/its/op/controller/database/TbAtrdController.java

@@ -14,6 +14,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -37,7 +38,7 @@ public class TbAtrdController {
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "서비스링크개별조회(TB_ATRD)", response = AtrdDto.AtrdInfo.class)
+    @ApiOperation(value = "개별조회(TB_ATRD)", response = AtrdDto.AtrdInfo.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<AtrdDto.AtrdInfo> findById(@PathVariable final String id) {
         Atrd obj = this.service.findById(id);
@@ -58,9 +59,9 @@ public class TbAtrdController {
     }
 
     @ApiOperation(value = "간선도로구간개별구성정보조회(TB_ATRD_ROAD_RLTN)", response = RoadIfscRltnDto.RoadIfscRltnUpdateReq.class)
-    @GetMapping(value = "/atrd-rltn/{id}", produces = {"application/json; charset=utf8"})
+    @GetMapping(value = "/road-rltn/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<List<AtrdRoadRltnDto.AtrdRoadRltnInfo>> findLinkRltnById(@PathVariable final String id) {
-        List<AtrdRoadRltn> objs = this.service.findLinkRltnById(id);
+        List<AtrdRoadRltn> objs = this.service.findRltnById(id);
         if (objs != null) {
             List<AtrdRoadRltnDto.AtrdRoadRltnInfo> result = new ArrayList<>();
             for (AtrdRoadRltn obj : objs) {
@@ -71,16 +72,31 @@ public class TbAtrdController {
         return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }
 
+    // 간선도로정보 + 도로구성정보
     @ApiOperation(value = "간선도로구간개별구성정보변경/생성(TB_ATRD_ROAD_RLTN)", response = AtrdDto.AtrdInfo.class)
-    @PutMapping(value = "/atrd-rltn/{id}", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq>> updateNameById(
+    @PostMapping(value = "/road-rltn/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq>> updateRltn(
             @PathVariable final String id,
             @RequestBody final List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> req) {
-        List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> obj = this.service.updateLinkRltn(id, req);
+
+        List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> obj = this.service.updateRltn(id, req);
         if (obj != null) {
             return new ResponseEntity<>(obj, HttpStatus.OK);
         }
         return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }
 
+    // 간선도로정보 생성-업데이트
+    @ApiOperation(value = "간선도로정보변경/생성(TB_ATRD)", response = AtrdDto.AtrdInfo.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<AtrdDto.AtrdInfo> mergeInfo(@RequestBody @Valid final AtrdDto.AtrdUpdateReq req) {
+
+        log.error("{}", req);
+        Atrd obj = this.service.mergeInfo(req);
+        if (obj != null) {
+            return new ResponseEntity<>(new AtrdDto.AtrdInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
 }

+ 3 - 3
src/main/java/com/its/op/controller/database/TbIfscController.java

@@ -36,7 +36,7 @@ public class TbIfscController {
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "서비스링크개별조회(TB_IFSC)", response = IfscDto.IfscInfo.class)
+    @ApiOperation(value = "개별조회(TB_IFSC)", response = IfscDto.IfscInfo.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<IfscDto.IfscInfo> findById(@PathVariable final Long id) {
         Ifsc obj = this.service.findById(id);
@@ -73,10 +73,10 @@ public class TbIfscController {
 
     @ApiOperation(value = "서비스링크개별구성정보변경/생성(TB_IFSC_LINK_RLTN)", response = IfscDto.IfscInfo.class)
     @PutMapping(value = "/link-rltn/{id}", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<IfscLinkRltnDto.IfscLinkRltnUpdateReq>> updateNameById(
+    public ResponseEntity<List<IfscLinkRltnDto.IfscLinkRltnUpdateReq>> updateRltn(
             @PathVariable final Long id,
             @RequestBody final List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> req) {
-        List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> obj = this.service.updateLinkRltn(id, req);
+        List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> obj = this.service.updateRltn(id, req);
         if (obj != null) {
             return new ResponseEntity<>(obj, HttpStatus.OK);
         }

+ 55 - 11
src/main/java/com/its/op/controller/database/TbLeglHldyInfrController.java

@@ -1,24 +1,68 @@
 package com.its.op.controller.database;
 
-import com.its.op.controller.AbstractDatabaseController;
-import com.its.op.service.database.impl.TbLeglHldyInfrServiceImpl;
-import com.its.op.model.vo.database.TbLeglHldyInfrVo;
+import com.its.op.model.dto.LeglHldyInfrDto;
+import com.its.op.model.entity.LeglHldyInfr;
+import com.its.op.service.database.TbLeglHldyInfrService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
+@RequiredArgsConstructor
 @RestController
-@RequestMapping("/api/database//tb-legl-hldy-infr")
+@RequestMapping("/api/database/tb-legl-hldy-infr")
 @Api(tags = "09.기초데이터관리-08.휴일관리", description="휴일관리")
-public class TbLeglHldyInfrController extends AbstractDatabaseController<TbLeglHldyInfrVo> {
+public class TbLeglHldyInfrController {
+
+    private final TbLeglHldyInfrService service;
 
-    private final TbLeglHldyInfrServiceImpl service;
+    @ApiOperation(value = "전체조회(TB_LEGL_HLDY_INFR)", response = LeglHldyInfrDto.LeglHldyInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<LeglHldyInfrDto.LeglHldyInfo>> findAll() {
+        List<LeglHldyInfr> data = this.service.findAll();
+        List<LeglHldyInfrDto.LeglHldyInfo> result = new ArrayList<>();
+        for (LeglHldyInfr obj: data) {
+            result.add(new LeglHldyInfrDto.LeglHldyInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
 
-    public TbLeglHldyInfrController(TbLeglHldyInfrServiceImpl service) {
-        super(service);
-        this.service = service;
+    @ApiOperation(value = "개별조회(TB_LEGL_HLDY_INFR)", response = LeglHldyInfrDto.LeglHldyInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LeglHldyInfrDto.LeglHldyInfo> findById(@PathVariable final String id) {
+        LeglHldyInfr obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new LeglHldyInfrDto.LeglHldyInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }
 
+    @ApiOperation(value = "정보변경/생성(TB_LEGL_HLDY_INFR)", response = LeglHldyInfrDto.LeglHldyInfo.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LeglHldyInfrDto.LeglHldyInfo> mergeInfo(@RequestBody @Valid final LeglHldyInfrDto.LeglHldyUpdateReq req) {
+
+        LeglHldyInfr obj = this.service.mergeInfo(req);
+        if (obj != null) {
+            return new ResponseEntity<>(new LeglHldyInfrDto.LeglHldyInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "정보삭제(TB_LEGL_HLDY_INFR)", response = LeglHldyInfrDto.LeglHldyInfo.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<LeglHldyInfrDto.LeglHldyInfo> deleteDataById(@PathVariable("id") String id) {
+        LeglHldyInfr obj = this.service.deleteById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new LeglHldyInfrDto.LeglHldyInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
 }

+ 1 - 1
src/main/java/com/its/op/controller/database/TbLinkController.java

@@ -34,7 +34,7 @@ public class TbLinkController {
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "링크개별조회(TB_LINK)", response = LinkDto.LinkInfo.class)
+    @ApiOperation(value = "개별조회(TB_LINK)", response = LinkDto.LinkInfo.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<LinkDto.LinkInfo> findById(@PathVariable final Long id) {
         Link obj = this.service.findById(id);

+ 1 - 1
src/main/java/com/its/op/controller/database/TbNodeController.java

@@ -34,7 +34,7 @@ public class TbNodeController {
         return new ResponseEntity<>(result, HttpStatus.OK);
     }
 
-    @ApiOperation(value = "노드개별조회(TB_NODE)", response = NodeDto.NodeInfo.class)
+    @ApiOperation(value = "개별조회(TB_NODE)", response = NodeDto.NodeInfo.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<NodeDto.NodeInfo> findById(@PathVariable final Long id) {
         Node obj = this.service.findById(id);

+ 55 - 11
src/main/java/com/its/op/controller/database/TbParkingLotController.java

@@ -1,24 +1,68 @@
 package com.its.op.controller.database;
 
-import com.its.op.controller.AbstractDatabaseController;
-import com.its.op.service.database.impl.TbParkingLotServiceImpl;
-import com.its.op.model.vo.database.TbParkingLotVo;
+import com.its.op.model.dto.ParkingLotDto;
+import com.its.op.model.entity.ParkingLot;
+import com.its.op.service.database.TbParkingLotService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
+@RequiredArgsConstructor
 @RestController
-@RequestMapping("/api/database//parkinglot")
+@RequestMapping("/api/database/parkinglot")
 @Api(tags = "19.주차장-1.주차장관리", description="주차장관리")
-public class TbParkingLotController extends AbstractDatabaseController<TbParkingLotVo> {
+public class TbParkingLotController {
+
+    private final TbParkingLotService service;
 
-    private final TbParkingLotServiceImpl service;
+    @ApiOperation(value = "전체조회(PARKINGLOT)", response = ParkingLotDto.ParkingLotInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<ParkingLotDto.ParkingLotInfo>> findAll() {
+        List<ParkingLot> data = this.service.findAll();
+        List<ParkingLotDto.ParkingLotInfo> result = new ArrayList<>();
+        for (ParkingLot obj: data) {
+            result.add(new ParkingLotDto.ParkingLotInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
 
-    public TbParkingLotController(TbParkingLotServiceImpl service) {
-        super(service);
-        this.service = service;
+    @ApiOperation(value = "개별조회(PARKINGLOT)", response = ParkingLotDto.ParkingLotInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<ParkingLotDto.ParkingLotInfo> findById(@PathVariable final String id) {
+        ParkingLot obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new ParkingLotDto.ParkingLotInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }
 
+    @ApiOperation(value = "정보변경/생성(PARKINGLOT)", response = ParkingLotDto.ParkingLotInfo.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<ParkingLotDto.ParkingLotInfo> mergeInfo(@RequestBody @Valid final ParkingLotDto.ParkingLotUpdateReq req) {
+
+        ParkingLot obj = this.service.mergeInfo(req);
+        if (obj != null) {
+            return new ResponseEntity<>(new ParkingLotDto.ParkingLotInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "정보삭제(PARKINGLOT)", response = ParkingLotDto.ParkingLotInfo.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<ParkingLotDto.ParkingLotInfo> deleteDataById(@PathVariable("id") String id) {
+        ParkingLot obj = this.service.deleteById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new ParkingLotDto.ParkingLotInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
 }

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

@@ -57,7 +57,7 @@ public class TbRoadController {
     }
 
     @ApiOperation(value = "도로구간개별구성정보조회(TB_ROAD_IFSC_RLTN)", response = RoadIfscRltnDto.RoadIfscRltnUpdateReq.class)
-    @GetMapping(value = "/road-rltn/{id}", produces = {"application/json; charset=utf8"})
+    @GetMapping(value = "/ifsc-rltn/{id}", produces = {"application/json; charset=utf8"})
     public ResponseEntity<List<RoadIfscRltnDto.RoadIfscRltnInfo>> findLinkRltnById(@PathVariable final Long id) {
         List<RoadIfscRltn> objs = this.service.findLinkRltnById(id);
         if (objs != null) {
@@ -72,11 +72,11 @@ public class TbRoadController {
 
 
     @ApiOperation(value = "도로구간개별구성정보변경/생성(TB_ROAD_IFSC_RLTN)", response = RoadDto.RoadInfo.class)
-    @PutMapping(value = "/road-rltn/{id}", produces = {"application/json; charset=utf8"})
-    public ResponseEntity<List<RoadIfscRltnDto.RoadIfscRltnUpdateReq>> updateNameById(
+    @PutMapping(value = "/ifsc-rltn/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<RoadIfscRltnDto.RoadIfscRltnUpdateReq>> updateRltn(
             @PathVariable final Long id,
             @RequestBody final List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> req) {
-        List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> obj = this.service.updateLinkRltn(id, req);
+        List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> obj = this.service.updateRltn(id, req);
         if (obj != null) {
             return new ResponseEntity<>(obj, HttpStatus.OK);
         }

+ 1 - 1
src/main/java/com/its/op/controller/database/TbSectGradStupController.java

@@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest;
 
 @Slf4j
 @RestController
-@RequestMapping("/api/database//tb-sect-grad-stup")
+@RequestMapping("/api/database/tb-sect-grad-stup")
 @Api(tags = "09.기초데이터관리-07.소통등급관리", description="소통등급관리")
 public class TbSectGradStupController extends AbstractDatabaseController<TbSectGradStupVo> {
 

+ 55 - 11
src/main/java/com/its/op/controller/database/TbUnitSystController.java

@@ -1,24 +1,68 @@
 package com.its.op.controller.database;
 
-import com.its.op.controller.AbstractDatabaseController;
-import com.its.op.service.database.impl.TbUnitSystServiceImpl;
-import com.its.op.model.vo.database.TbUnitSystVo;
+import com.its.op.model.dto.UnitSystDto;
+import com.its.op.model.entity.UnitSyst;
+import com.its.op.service.database.TbUnitSystService;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
+@RequiredArgsConstructor
 @RestController
-@RequestMapping("/api/database//tb-unit-syst")
+@RequestMapping("/api/database/tb-unit-syst")
 @Api(tags = "09.기초데이터관리-11.프로세스관리", description="프로세스관리")
-public class TbUnitSystController extends AbstractDatabaseController<TbUnitSystVo> {
+public class TbUnitSystController {
+
+    private final TbUnitSystService service;
 
-    private final TbUnitSystServiceImpl service;
+    @ApiOperation(value = "전체조회(TB_UNIT_SYST)", response = UnitSystDto.UnitSystInfo.class)
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<List<UnitSystDto.UnitSystInfo>> findAll() {
+        List<UnitSyst> data = this.service.findAll();
+        List<UnitSystDto.UnitSystInfo> result = new ArrayList<>();
+        for (UnitSyst obj: data) {
+            result.add(new UnitSystDto.UnitSystInfo(obj));
+        }
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
 
-    public TbUnitSystController(TbUnitSystServiceImpl service) {
-        super(service);
-        this.service = service;
+    @ApiOperation(value = "개별조회(TB_UNIT_SYST)", response = UnitSystDto.UnitSystInfo.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<UnitSystDto.UnitSystInfo> findById(@PathVariable final String id) {
+        UnitSyst obj = this.service.findById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new UnitSystDto.UnitSystInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
     }
 
+    @ApiOperation(value = "정보변경/생성(TB_UNIT_SYST)", response = UnitSystDto.UnitSystInfo.class)
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<UnitSystDto.UnitSystInfo> mergeInfo(@RequestBody @Valid final UnitSystDto.UnitSystUpdateReq req) {
+
+        UnitSyst obj = this.service.mergeInfo(req);
+        if (obj != null) {
+            return new ResponseEntity<>(new UnitSystDto.UnitSystInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
+
+    @ApiOperation(value = "정보삭제(TB_UNIT_SYST)", response = UnitSystDto.UnitSystInfo.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<UnitSystDto.UnitSystInfo> deleteDataById(@PathVariable("id") String id) {
+        UnitSyst obj = this.service.deleteById(id);
+        if (obj != null) {
+            return new ResponseEntity<>(new UnitSystDto.UnitSystInfo(obj), HttpStatus.OK);
+        }
+        return new ResponseEntity<>(null, HttpStatus.NOT_FOUND);//NO_CONTENT);
+    }
 }

+ 1 - 1
src/main/java/com/its/op/controller/database/mybatis/TbAtrdControllerMybatis.java

@@ -15,7 +15,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.List;
 
 @Slf4j
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/database/tb-atrd")
 @Api(tags = "09.기초데이터관리-05.간선도로관리", description="간선도로관리")
 public class TbAtrdControllerMybatis extends AbstractDatabaseController<TbIfscVo> {

+ 1 - 2
src/main/java/com/its/op/controller/database/mybatis/TbIfscControllerMybatis.java

@@ -9,12 +9,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 
 @Slf4j
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/database/tb-ifsc")
 @Api(tags = "09.기초데이터관리-03.서비스링크", description="서비스링크")
 public class TbIfscControllerMybatis extends AbstractDatabaseController<TbIfscVo> {

+ 23 - 0
src/main/java/com/its/op/controller/database/mybatis/TbLeglHldyInfrControllerMybatis.java

@@ -0,0 +1,23 @@
+package com.its.op.controller.database.mybatis;
+
+import com.its.op.controller.AbstractDatabaseController;
+import com.its.op.model.vo.database.TbLeglHldyInfrVo;
+import com.its.op.service.database.impl.TbLeglHldyInfrServiceImpl;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Slf4j
+//@RestController
+@RequestMapping("/api-mybatis/database/tb-legl-hldy-infr")
+@Api(tags = "09.기초데이터관리-08.휴일관리", description="휴일관리")
+public class TbLeglHldyInfrControllerMybatis extends AbstractDatabaseController<TbLeglHldyInfrVo> {
+
+    private final TbLeglHldyInfrServiceImpl service;
+
+    public TbLeglHldyInfrControllerMybatis(TbLeglHldyInfrServiceImpl service) {
+        super(service);
+        this.service = service;
+    }
+
+}

+ 1 - 2
src/main/java/com/its/op/controller/database/mybatis/TbLinkControllerMybatis.java

@@ -9,12 +9,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 
 @Slf4j
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/database/tb-link")
 @Api(tags = "09.기초데이터관리-02.링크", description="링크")
 public class TbLinkControllerMybatis extends AbstractDatabaseController<TbLinkVo> {

+ 1 - 2
src/main/java/com/its/op/controller/database/mybatis/TbNodeControllerMybatis.java

@@ -9,12 +9,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 
 @Slf4j
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/database/tb-node")
 @Api(tags = "09.기초데이터관리-01.노드", description="노드")
 public class TbNodeControllerMybatis extends AbstractDatabaseController<TbNodeVo> {

+ 23 - 0
src/main/java/com/its/op/controller/database/mybatis/TbParkingLotControllerMybatis.java

@@ -0,0 +1,23 @@
+package com.its.op.controller.database.mybatis;
+
+import com.its.op.controller.AbstractDatabaseController;
+import com.its.op.model.vo.database.TbParkingLotVo;
+import com.its.op.service.database.impl.TbParkingLotServiceImpl;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Slf4j
+//@RestController
+@RequestMapping("/api/database/parkinglot")
+@Api(tags = "19.주차장-1.주차장관리", description="주차장관리")
+public class TbParkingLotControllerMybatis extends AbstractDatabaseController<TbParkingLotVo> {
+
+    private final TbParkingLotServiceImpl service;
+
+    public TbParkingLotControllerMybatis(TbParkingLotServiceImpl service) {
+        super(service);
+        this.service = service;
+    }
+
+}

+ 1 - 2
src/main/java/com/its/op/controller/database/mybatis/TbRoadControllerMybatis.java

@@ -9,12 +9,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 
 @Slf4j
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/database/tb-road")
 @Api(tags = "09.기초데이터관리-04.도로", description="도로")
 public class TbRoadControllerMybatis extends AbstractDatabaseController<TbRoadVo> {

+ 35 - 0
src/main/java/com/its/op/controller/database/mybatis/TbSectGradStupControllerMybatis.java

@@ -0,0 +1,35 @@
+package com.its.op.controller.database.mybatis;
+
+import com.its.op.controller.AbstractDatabaseController;
+import com.its.op.model.vo.database.TbSectGradStupVo;
+import com.its.op.service.database.impl.TbSectGradStupServiceImpl;
+import io.swagger.annotations.Api;
+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 javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+//@RestController
+@RequestMapping("/api-mybatis/database/tb-sect-grad-stup")
+@Api(tags = "09.기초데이터관리-07.소통등급관리", description="소통등급관리")
+public class TbSectGradStupControllerMybatis extends AbstractDatabaseController<TbSectGradStupVo> {
+
+    private final TbSectGradStupServiceImpl service;
+
+    public TbSectGradStupControllerMybatis(TbSectGradStupServiceImpl service) {
+        super(service);
+        this.service = service;
+    }
+
+    @GetMapping(value = "/{id}/{sub}", produces = {"application/json; charset=utf8"})
+    public ResponseEntity<TbSectGradStupVo> findById(@PathVariable("id") String id, @PathVariable("sub") String sub, HttpServletRequest request) {
+        TbSectGradStupVo result = this.service.findById(id, sub);
+        return new ResponseEntity<>(result, HttpStatus.OK);
+    }
+
+}

+ 23 - 0
src/main/java/com/its/op/controller/database/mybatis/TbUnitSystControllerMybatis.java

@@ -0,0 +1,23 @@
+package com.its.op.controller.database.mybatis;
+
+import com.its.op.controller.AbstractDatabaseController;
+import com.its.op.model.vo.database.TbUnitSystVo;
+import com.its.op.service.database.impl.TbUnitSystServiceImpl;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+@Slf4j
+//@RestController
+@RequestMapping("/api-mybatis/database/tb-unit-syst")
+@Api(tags = "09.기초데이터관리-11.프로세스관리", description="프로세스관리")
+public class TbUnitSystControllerMybatis extends AbstractDatabaseController<TbUnitSystVo> {
+
+    private final TbUnitSystServiceImpl service;
+
+    public TbUnitSystControllerMybatis(TbUnitSystServiceImpl service) {
+        super(service);
+        this.service = service;
+    }
+
+}

+ 1 - 2
src/main/java/com/its/op/controller/traffic/CurrentTrafficControllerByMybatis.java

@@ -11,12 +11,11 @@ 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.List;
 
 @Slf4j
-@RestController
+//@RestController
 @RequestMapping("/api-mybatis/traffic/current")
 @Api(tags = "00.교통상황관리-1.현재소통정보조회", description="현재소통정보조회")
 public class CurrentTrafficControllerByMybatis {

+ 12 - 7
src/main/java/com/its/op/exception/ErrorResponse.java

@@ -3,32 +3,37 @@ package com.its.op.exception;
 import lombok.Builder;
 import lombok.Getter;
 
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
 @Getter
 public class ErrorResponse {
-    private final int code;
+    private LocalDateTime timestamp;
+    private final int status;
+    private String title;
     private final String message;
-    private List<FieldError> errors;
+    private List<String> errors;
 
     @Builder
-    public ErrorResponse(int code, String message, List<FieldError> errors) {
-        this.code    = code;
+    public ErrorResponse(LocalDateTime timestamp, int status, String title, String message, List<String> errors) {
+        this.timestamp    = timestamp;
+        this.status    = status;
+        this.title = title;
         this.message = message;
-        this.errors  = initErrors(errors);
+        this.errors  = errors;//initErrors(errors);
     }
 
     private List<FieldError> initErrors(List<FieldError> errors) {
         return (errors == null) ? new ArrayList<>() : errors;
     }
-
+/*
     public static ErrorResponse buildError(ErrorCode errorCode) {
         return ErrorResponse.builder()
                 .code(errorCode.getCode())
                 .message(errorCode.getMessage())
                 .build();
-    }
+    }*/
 
     @Getter
     public static class FieldError {

+ 24 - 5
src/main/java/com/its/op/exception/ExceptionControllerAdvisor.java

@@ -1,14 +1,17 @@
 package com.its.op.exception;
 
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.support.DefaultMessageSourceResolvable;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
-import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 
 import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.stream.Collectors;
 
 @Slf4j
 @ControllerAdvice
@@ -36,11 +39,26 @@ public class ExceptionControllerAdvisor {//} extends ResponseEntityExceptionHand
     }*/
 
     @ExceptionHandler(MethodArgumentNotValidException.class)
-    public ResponseEntity<ErrorResponse> methodValidException(MethodArgumentNotValidException e, HttpServletRequest request) {
-        log.warn("MethodArgumentNotValidException 발생!!! url:{}, trace:{}",request.getRequestURI(), e.getStackTrace());
-        ErrorResponse errorResponse = makeErrorResponse(e.getBindingResult());
-        return new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
+    public ResponseEntity<ErrorResponse> methodValidException(MethodArgumentNotValidException ex, HttpServletRequest request) {
+        log.warn("MethodArgumentNotValidException 발생!!! url:{}, trace:{}",request.getRequestURI(), ex.getStackTrace());
+        List<String> errorList = ex
+                .getBindingResult()
+                .getFieldErrors()
+                .stream()
+                .map(DefaultMessageSourceResolvable::getDefaultMessage)
+                .collect(Collectors.toList());
+        //ErrorResponse errorResponse = makeErrorResponse(e.getBindingResult());
+        //return new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
+        return new ResponseEntity<>(
+                ErrorResponse.builder()
+                        .timestamp(LocalDateTime.now())
+                        .status(HttpStatus.BAD_REQUEST.value())
+                        .title("Arguments Not Valid")
+                        .message(ex.getClass().getName())
+                        .errors(errorList)
+                        .build(), HttpStatus.BAD_REQUEST);
     }
+/*
 
     private ErrorResponse makeErrorResponse(BindingResult bindingResult) {
         String code = "";
@@ -68,5 +86,6 @@ public class ExceptionControllerAdvisor {//} extends ResponseEntityExceptionHand
         }
         return new ErrorResponse(0, code, null);
     }
+*/
 
 }

+ 33 - 12
src/main/java/com/its/op/global/CodeManager.java

@@ -26,18 +26,19 @@ public class CodeManager {
     private static final String defUnknownCode = "X";
     private static final String defUnknownDesc = "UNKNOWN";
 
-    public static final String DAY_TYPE_CD      = "DTW";   // 요일유형
-    public static final String CMTR_GRAD_CD     = "LTC";   // 소통등급
-    public static final String ADJS_SORC        = "MCS";   // 보정소스
-    public static final String NODE_TYPE        = "NDT";   // 노드유형
-    public static final String ROAD_USE         = "RDU";   // 도로사용여부
-    public static final String ROAD_RANK        = "RDR";   // 도로등급
-    public static final String ROAD_TYPE        = "RDT";   // 도로유형
-    public static final String MULTI_LINK       = "MLT";   // 중용구간
-    public static final String LINK_CONNECT     = "CTR";   // 연결로
-    public static final String REST_VEH         = "PLV";   // 통행제한차량
-    public static final String SECT_GRAD_CD     = "SRT";   // 구간 등급 코드
-    public static final String DRCT_CD          = "IFD";   // 방향 코드
+    public static final String DAY_TYPE_CD      = "DTW";    // 요일유형
+    public static final String CMTR_GRAD_CD     = "LTC";    // 소통등급
+    public static final String ADJS_SORC        = "MCS";    // 보정소스
+    public static final String NODE_TYPE        = "NDT";    // 노드유형
+    public static final String ROAD_USE         = "RDU";    // 도로사용여부
+    public static final String ROAD_RANK        = "RDR";    // 도로등급
+    public static final String ROAD_TYPE        = "RDT";    // 도로유형
+    public static final String MULTI_LINK       = "MLT";    // 중용구간
+    public static final String LINK_CONNECT     = "CTR";    // 연결로
+    public static final String REST_VEH         = "PLV";    // 통행제한차량
+    public static final String SECT_GRAD_CD     = "SRT";    // 구간 등급 코드
+    public static final String DRCT_CD          = "IFD";    // 방향 코드
+    public static final String HLDY_DAY_CD      = "LHT";    // 휴일유형코드
 
     private static final ConcurrentHashMap<String, HashMap<String, Code>> codes = new ConcurrentHashMap<>();
 
@@ -48,6 +49,7 @@ public class CodeManager {
 
     public void load() {
 
+/*
         loadCode(DAY_TYPE_CD);
         loadCode(CMTR_GRAD_CD);
         loadCode(ADJS_SORC);
@@ -60,6 +62,10 @@ public class CodeManager {
         loadCode(REST_VEH);
         loadCode(DRCT_CD);
         loadCode(SECT_GRAD_CD);
+        loadCode(HLDY_DAY_CD);
+*/
+
+        loadAllCode();
 
         //loadSectGradStup();
         log.info("=== {}", codes);
@@ -85,6 +91,21 @@ public class CodeManager {
         codes.put(CMMN_CLSF_CD, codeMap);
     }
 
+    public void loadAllCode() {
+        List<CmmnCd> codeList = this.repo.findAll();
+        for (CmmnCd cd : codeList) {
+            HashMap<String, Code> codeMap = codes.get(cd.getCMMN_CLSF_CD());
+            if (codeMap == null) {
+                codeMap = new HashMap<>();
+                codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
+                codes.put(cd.getCMMN_CLSF_CD(), codeMap);
+            }
+            else {
+                codeMap.put(cd.getCMMN_CD(), new Code(cd.getCMMN_CD(), cd.getCMMN_CD_KOR_NM(), cd.getCMMN_CD_ENGL_NM()));
+            }
+        }
+    }
+
     public static String getCodeDesc(String CMMN_CLSF_CD, String CMMN_CD) {
         HashMap<String, Code> codeMap = codes.get(CMMN_CLSF_CD);
         if (codeMap != null) {

+ 33 - 4
src/main/java/com/its/op/model/dto/AtrdDto.java

@@ -1,11 +1,10 @@
 package com.its.op.model.dto;
 
 import com.its.op.model.entity.Atrd;
-import lombok.AccessLevel;
-import lombok.Builder;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
 import java.io.Serializable;
 
 public class AtrdDto implements Serializable {
@@ -35,6 +34,7 @@ public class AtrdDto implements Serializable {
     }
 
     @Getter
+    @Setter
     @NoArgsConstructor(access = AccessLevel.PROTECTED)
     public static class AtrdNameUpdateReq {
 
@@ -46,4 +46,33 @@ public class AtrdDto implements Serializable {
         }
     }
 
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    //@NotBlank
+    public static class AtrdUpdateReq {
+
+        @Size(min=1, max=10)
+        private String ATRD_ID;     //	N	VARCHAR2(10)	N			간선도로 ID
+        @Size(min=1, max=30)
+        private String ATRD_NM;     //	N	VARCHAR2(30)	Y			간선도로 명
+        @Size(min=1, max=7)
+        private String DRCT_CD;     //	N	VARCHAR2(7)	    Y			방향 코드
+        @Size(min=1, max=7)
+        private String AREA_CD;     //	N	VARCHAR2(7)	    Y			지역 코드
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String DEL_YN;      //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+        @Builder
+        public AtrdUpdateReq(String ATRD_ID, String ATRD_NM, String DRCT_CD, String AREA_CD, String DEL_YN) {
+            this.ATRD_ID = ATRD_ID;
+            this.ATRD_NM = ATRD_NM;
+            this.DRCT_CD = DRCT_CD;
+            this.AREA_CD = AREA_CD;
+            this.DEL_YN = DEL_YN;
+        }
+    }
+
 }

+ 25 - 0
src/main/java/com/its/op/model/dto/AtrdRoadRltnDto.java

@@ -6,6 +6,7 @@ import com.its.op.model.entity.AtrdRoadRltn;
 import lombok.*;
 
 import java.io.Serializable;
+import java.util.List;
 
 public class AtrdRoadRltnDto implements Serializable {
 
@@ -63,4 +64,28 @@ public class AtrdRoadRltnDto implements Serializable {
         }
     }
 
+    @Getter
+    @Setter
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class AtrdUpdateReq {
+
+        private String ATRD_ID;     //	N	VARCHAR2(10)	N			간선도로 ID
+        private String ATRD_NM;     //	N	VARCHAR2(30)	Y			간선도로 명
+        private String DRCT_CD;     //	N	VARCHAR2(7)	    Y			방향 코드
+        private String AREA_CD;     //	N	VARCHAR2(7)	    Y			지역 코드
+        private String DEL_YN;      //	N	CHAR(1)	        Y	'N'		삭제 여부
+
+        private List<AtrdRoadRltnUpdateReq> rltnList;
+
+        @Builder
+        public AtrdUpdateReq(String ATRD_ID, String ATRD_NM, String DRCT_CD, String AREA_CD, String DEL_YN, List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> rltnList) {
+            this.ATRD_ID = ATRD_ID;
+            this.ATRD_NM = ATRD_NM;
+            this.DRCT_CD = DRCT_CD;
+            this.AREA_CD = AREA_CD;
+            this.DEL_YN = DEL_YN;
+            this.rltnList = rltnList;
+        }
+    }
+
 }

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

@@ -0,0 +1,58 @@
+package com.its.op.model.dto;
+
+import com.its.op.global.CodeManager;
+import com.its.op.model.entity.LeglHldyInfr;
+import lombok.*;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+public class LeglHldyInfrDto implements Serializable {
+
+    @Getter
+    public static class LeglHldyInfo {
+        private final String YMD;             //	N	VARCHAR2(8)	    N			년월일
+        private final String DAY_TYPE_CD;     //	N	VARCHAR2(7)	    Y			요일 유형 코드
+        private final String LEGL_HLDY_NM;    //	N	VARCHAR2(30)	Y			공휴일 명
+        private final String RMRK;            //	N	VARCHAR2(200)	Y			비고
+
+        private final String DAY_TYPE_DESC;   //	요일 유형 설명
+
+        public LeglHldyInfo(LeglHldyInfr entity) {
+            this.YMD = entity.getYMD();
+            this.DAY_TYPE_CD = entity.getDAY_TYPE_CD();
+            this.LEGL_HLDY_NM = entity.getLEGL_HLDY_NM();
+            this.RMRK = entity.getRMRK();
+
+            this.DAY_TYPE_DESC = CodeManager.getCodeDesc(CodeManager.HLDY_DAY_CD, this.DAY_TYPE_CD);
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class LeglHldyUpdateReq {
+
+        @NotEmpty
+        @Size(min=8, max=8)
+        private String YMD;             //	N	VARCHAR2(8)	    N			년월일
+        @NotEmpty
+        @Size(max=7)
+        private String DAY_TYPE_CD;     //	N	VARCHAR2(7)	    Y			요일 유형 코드
+        @Size(max=30)
+        private String LEGL_HLDY_NM;    //	N	VARCHAR2(30)	Y			공휴일 명
+        @Size(max=200)
+        private String RMRK;            //	N	VARCHAR2(200)	Y			비고
+
+        @Builder
+        public LeglHldyUpdateReq(String YMD, String DAY_TYPE_CD, String LEGL_HLDY_NM, String RMRK) {
+            this.YMD = YMD;
+            this.DAY_TYPE_CD = DAY_TYPE_CD;
+            this.LEGL_HLDY_NM = LEGL_HLDY_NM;
+            this.RMRK = RMRK;
+        }
+    }
+
+}

+ 98 - 0
src/main/java/com/its/op/model/dto/ParkingLotDto.java

@@ -0,0 +1,98 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.ParkingLot;
+import lombok.*;
+
+import javax.validation.constraints.DecimalMax;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+public class ParkingLotDto implements Serializable {
+
+    @Getter
+    public static class ParkingLotInfo {
+        private final String PARKINGID;       //	N	VARCHAR2(10)	N   주차장 ID
+        private final String PARKINGNAME;     //	N	VARCHAR2(50)	Y   주차장명
+        private final String LOCATION;        //	N	VARCHAR2(120)	Y   위치
+        private final String ADDRESS;         //	N	VARCHAR2(100)	Y   주소
+        private final String PHONE;           //	N	VARCHAR2(20)	Y   전화번호
+        private final int    PARKINGCNT;      //	N	NUMBER(3)	    Y   주차면수
+        private final double COORDX;          //	N	NUMBER	        Y   위치 X
+        private final double COORDY;          //	N	NUMBER	        Y   위치 Y
+        private final String PISFLAG;         //	N	CHAR(1)	        Y
+        private final String DISTRICTID;      //	N	VARCHAR2(5)	    Y
+        private final String PARKINGENAME;    //	N	VARCHAR2(30)	Y   영문명
+        private final String ELOCATION;       //	N	VARCHAR2(128)	Y   영문위치
+        private final String EADDRESS;        //	N	VARCHAR2(100)	Y   영문주소
+
+        public ParkingLotInfo(ParkingLot entity) {
+            this.PARKINGID    = entity.getPARKINGID();
+            this.PARKINGNAME  = entity.getPARKINGNAME();
+            this.LOCATION     = entity.getLOCATION();
+            this.ADDRESS      = entity.getADDRESS();
+            this.PHONE        = entity.getPHONE();
+            this.PARKINGCNT   = entity.getPARKINGCNT();
+            this.COORDX       = entity.getCOORDX();
+            this.COORDY       = entity.getCOORDY();
+            this.PISFLAG      = entity.getPISFLAG();
+            this.DISTRICTID   = entity.getDISTRICTID();
+            this.PARKINGENAME = entity.getPARKINGENAME();
+            this.ELOCATION    = entity.getELOCATION();
+            this.EADDRESS     = entity.getEADDRESS();
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class ParkingLotUpdateReq {
+
+        @NotEmpty
+        @Size(min=1, max=10)
+        private String PARKINGID;       //	N	VARCHAR2(10)	N   주차장 ID
+        @NotEmpty
+        @Size(max=50)
+        private String PARKINGNAME;     //	N	VARCHAR2(50)	Y   주차장명
+        @Size(max=120)
+        private String LOCATION;        //	N	VARCHAR2(120)	Y   위치
+        @Size(max=100)
+        private String ADDRESS;         //	N	VARCHAR2(100)	Y   주소
+        @Size(max=20)
+        private String PHONE;           //	N	VARCHAR2(20)	Y   전화번호
+        @DecimalMax("999")
+        private int    PARKINGCNT;      //	N	NUMBER(3)	    Y   주차면수
+        private double COORDX;          //	N	NUMBER	        Y   위치 X
+        private double COORDY;          //	N	NUMBER	        Y   위치 Y
+        @Size(max=1)
+        private String PISFLAG;         //	N	CHAR(1)	        Y
+        @Size(max=5)
+        private String DISTRICTID;      //	N	VARCHAR2(5)	    Y
+        @Size(max=30)
+        private String PARKINGENAME;    //	N	VARCHAR2(30)	Y   영문명
+        @Size(max=128)
+        private String ELOCATION;       //	N	VARCHAR2(128)	Y   영문위치
+        @Size(max=100)
+        private String EADDRESS;        //	N	VARCHAR2(100)	Y   영문주소
+
+        @Builder
+        public ParkingLotUpdateReq(String PARKINGID, String PARKINGNAME, String LOCATION, String ADDRESS, String PHONE, int PARKINGCNT, double COORDX, double COORDY, String PISFLAG, String DISTRICTID, String PARKINGENAME, String ELOCATION, String EADDRESS) {
+            this.PARKINGID = PARKINGID;
+            this.PARKINGNAME = PARKINGNAME;
+            this.LOCATION = LOCATION;
+            this.ADDRESS = ADDRESS;
+            this.PHONE = PHONE;
+            this.PARKINGCNT = PARKINGCNT;
+            this.COORDX = COORDX;
+            this.COORDY = COORDY;
+            this.PISFLAG = PISFLAG;
+            this.DISTRICTID = DISTRICTID;
+            this.PARKINGENAME = PARKINGENAME;
+            this.ELOCATION = ELOCATION;
+            this.EADDRESS = EADDRESS;
+        }
+
+    }
+
+}

+ 94 - 0
src/main/java/com/its/op/model/dto/UnitSystDto.java

@@ -0,0 +1,94 @@
+package com.its.op.model.dto;
+
+import com.its.op.model.entity.UnitSyst;
+import lombok.*;
+
+import javax.validation.constraints.DecimalMax;
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+public class UnitSystDto implements Serializable {
+
+    @Getter
+    public static class UnitSystInfo {
+        private final String SYST_ID;         //	N	VARCHAR2(30)	N			시스템 ID
+        private final String SYST_TYPE;       //	N	VARCHAR2(7)	    Y			시스템 유형
+        private final int    SYST_NMBR;       //	N	NUMBER(3)	    Y	0		시스템 번호
+        private final String SYST_NM;         //	N	VARCHAR2(100)	Y			시스템 명
+        private final String SYST_IP_1;       //	N	VARCHAR2(20)	Y			시스템 IP_1
+        private final String SYST_IP_2;       //	N	VARCHAR2(20)	Y			시스템 IP_2
+        private final String PRGM_PORT;       //	N	VARCHAR2(5)	    Y			프로그램 포트
+        private final String HOST_NM;         //	N	VARCHAR2(100)	Y			호스트 명
+        private final String OS_NM;           //	N	VARCHAR2(100)	Y			운영체제 명
+        private final String DEL_YN;          //	N	CHAR(1)	        Y	'N'		삭제 여부
+        private final String STTS_DSPL_YN;    //	N	CHAR(1)	        Y	'N'		프로세스상태표출여불
+
+        public UnitSystInfo(UnitSyst entity) {
+            this.SYST_ID      = entity.getSYST_ID();
+            this.SYST_TYPE    = entity.getSYST_TYPE();
+            this.SYST_NMBR    = entity.getSYST_NMBR();
+            this.SYST_NM      = entity.getSYST_NM();
+            this.SYST_IP_1    = entity.getSYST_IP_1();
+            this.SYST_IP_2    = entity.getSYST_IP_2();
+            this.PRGM_PORT    = entity.getPRGM_PORT();
+            this.HOST_NM      = entity.getHOST_NM();
+            this.OS_NM        = entity.getOS_NM();
+            this.DEL_YN       = entity.getDEL_YN();
+            this.STTS_DSPL_YN = entity.getSTTS_DSPL_YN();
+        }
+    }
+
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class UnitSystUpdateReq {
+
+        @NotEmpty
+        @Size(min=1, max=30)
+        private String SYST_ID;         //	N	VARCHAR2(30)	N			시스템 ID
+        @NotEmpty
+        @Size(max=7)
+        private String SYST_TYPE;       //	N	VARCHAR2(7)	    Y			시스템 유형
+        @DecimalMax("999")
+        private int    SYST_NMBR;       //	N	NUMBER(3)	    Y	0		시스템 번호
+        @NotEmpty
+        @Size(max=100)
+        private String SYST_NM;         //	N	VARCHAR2(100)	Y			시스템 명
+        @Size(max=20)
+        private String SYST_IP_1;       //	N	VARCHAR2(20)	Y			시스템 IP_1
+        @Size(max=20)
+        private String SYST_IP_2;       //	N	VARCHAR2(20)	Y			시스템 IP_2
+        @Size(max=5)
+        private String PRGM_PORT;       //	N	VARCHAR2(5)	    Y			프로그램 포트
+        @Size(max=100)
+        private String HOST_NM;         //	N	VARCHAR2(100)	Y			호스트 명
+        @Size(max=100)
+        private String OS_NM;           //	N	VARCHAR2(100)	Y			운영체제 명
+        @Size(min=1, max=1)
+        @Pattern(regexp="[YN]")
+        private String DEL_YN;          //	N	CHAR(1)	        Y	'N'		삭제 여부
+        @Size(min=1, max=1)
+        @Pattern(regexp="[YN]")
+        private String STTS_DSPL_YN;    //	N	CHAR(1)	        Y	'N'		프로세스상태표출여불
+
+        @Builder
+        public UnitSystUpdateReq(String SYST_ID, String SYST_TYPE, int SYST_NMBR, String SYST_NM, String SYST_IP_1, String SYST_IP_2, String PRGM_PORT, String HOST_NM, String OS_NM, String DEL_YN, String STTS_DSPL_YN) {
+            this.SYST_ID = SYST_ID;
+            this.SYST_TYPE = SYST_TYPE;
+            this.SYST_NMBR = SYST_NMBR;
+            this.SYST_NM = SYST_NM;
+            this.SYST_IP_1 = SYST_IP_1;
+            this.SYST_IP_2 = SYST_IP_2;
+            this.PRGM_PORT = PRGM_PORT;
+            this.HOST_NM = HOST_NM;
+            this.OS_NM = OS_NM;
+            this.DEL_YN = DEL_YN;
+            this.STTS_DSPL_YN = STTS_DSPL_YN;
+        }
+
+    }
+
+}

+ 11 - 0
src/main/java/com/its/op/model/entity/Atrd.java

@@ -40,6 +40,17 @@ public class Atrd {
     @ColumnDefault(value = "N")
     private String DEL_YN;      //	N	CHAR(1)	        Y	'N'		삭제 여부
 
+    public Atrd(String ATRD_ID) {
+        this.ATRD_ID = ATRD_ID;
+    }
+
+    public void updateInfo(AtrdDto.AtrdUpdateReq req) {
+        //this.ATRD_ID = ATRD_ID;
+        this.ATRD_NM = req.getATRD_NM();
+        this.DRCT_CD = req.getDRCT_CD();
+        this.AREA_CD = req.getAREA_CD();
+        this.DEL_YN = req.getDEL_YN();
+    }
     public void updateName(AtrdDto.AtrdNameUpdateReq req) {
         this.ATRD_NM = req.getATRD_NM();
     }

+ 41 - 0
src/main/java/com/its/op/model/entity/LeglHldyInfr.java

@@ -0,0 +1,41 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.LeglHldyInfrDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+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
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_LEGL_HLDY_INFR")
+public class LeglHldyInfr {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 8)
+    private String YMD;             //	N	VARCHAR2(8)	    N			년월일
+    private String DAY_TYPE_CD;     //	N	VARCHAR2(7)	    Y			요일 유형 코드
+    private String LEGL_HLDY_NM;    //	N	VARCHAR2(30)	Y			공휴일 명
+    private String RMRK;            //	N	VARCHAR2(200)	Y			비고
+
+    public LeglHldyInfr(String YMD) {
+        this.YMD = YMD;
+    }
+
+    public void updateInfo(LeglHldyInfrDto.LeglHldyUpdateReq req) {
+        //this.YMD = YMD;
+        this.DAY_TYPE_CD = req.getDAY_TYPE_CD();
+        this.LEGL_HLDY_NM = req.getLEGL_HLDY_NM();
+        this.RMRK = req.getRMRK();
+    }
+}

+ 63 - 0
src/main/java/com/its/op/model/entity/ParkingLot.java

@@ -0,0 +1,63 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.ParkingLotDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+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
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "PARKINGLOT")
+public class ParkingLot {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 10)
+    private String PARKINGID;       //	N	VARCHAR2(10)	N   주차장 ID
+    private String PARKINGNAME;     //	N	VARCHAR2(50)	Y   주차장명
+    private String LOCATION;        //	N	VARCHAR2(120)	Y   위치
+    private String ADDRESS;         //	N	VARCHAR2(100)	Y   주소
+    private String PHONE;           //	N	VARCHAR2(20)	Y   전화번호
+    @Column(columnDefinition = "NUMBER", length = 3)
+    private int    PARKINGCNT;      //	N	NUMBER(3)	    Y   주차면수
+    @Column(columnDefinition = "NUMBER", length = 11, precision = 8)
+    private double COORDX;          //	N	NUMBER	        Y   위치 X
+    @Column(columnDefinition = "NUMBER", length = 10, precision = 8)
+    private double COORDY;          //	N	NUMBER	        Y   위치 Y
+    @Column(columnDefinition = "CHAR", length = 1)
+    private String PISFLAG;         //	N	CHAR(1)	        Y
+    private String DISTRICTID;      //	N	VARCHAR2(5)	    Y
+    private String PARKINGENAME;    //	N	VARCHAR2(30)	Y   영문명
+    private String ELOCATION;       //	N	VARCHAR2(128)	Y   영문위치
+    private String EADDRESS;        //	N	VARCHAR2(100)	Y   영문주소
+
+    public ParkingLot(String PARKINGID) {
+        this.PARKINGID = PARKINGID;
+    }
+
+    public void updateInfo(ParkingLotDto.ParkingLotUpdateReq req) {
+        this.PARKINGID    = req.getPARKINGID();
+        this.PARKINGNAME  = req.getPARKINGNAME();
+        this.LOCATION     = req.getLOCATION();
+        this.ADDRESS      = req.getADDRESS();
+        this.PHONE        = req.getPHONE();
+        this.PARKINGCNT   = req.getPARKINGCNT();
+        this.COORDX       = req.getCOORDX();
+        this.COORDY       = req.getCOORDY();
+        this.PISFLAG      = req.getPISFLAG();
+        this.DISTRICTID   = req.getDISTRICTID();
+        this.PARKINGENAME = req.getPARKINGENAME();
+        this.ELOCATION    = req.getELOCATION();
+        this.EADDRESS     = req.getEADDRESS();
+    }
+}

+ 69 - 0
src/main/java/com/its/op/model/entity/UnitSyst.java

@@ -0,0 +1,69 @@
+package com.its.op.model.entity;
+
+import com.its.op.model.dto.UnitSystDto;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+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
+@NoArgsConstructor
+@AllArgsConstructor
+@Entity
+@Table(name = "TB_UNIT_SYST")
+public class UnitSyst {
+
+    @Id
+    @Column(nullable = false, unique = true, length = 30)
+    private String  SYST_ID;         //	N	VARCHAR2(30)	N			시스템 ID
+    @Column(length = 7)
+    private String  SYST_TYPE;       //	N	VARCHAR2(7)	    Y			시스템 유형
+    @Column(length = 3)
+    private Integer SYST_NMBR;       //	N	NUMBER(3)	    Y	0		시스템 번호
+    @Column(length = 100)
+    private String  SYST_NM;         //	N	VARCHAR2(100)	Y			시스템 명
+    @Column(length = 20)
+    private String  SYST_IP_1;       //	N	VARCHAR2(20)	Y			시스템 IP_1
+    @Column(length = 20)
+    private String  SYST_IP_2;       //	N	VARCHAR2(20)	Y			시스템 IP_2
+    @Column(length = 5)
+    private String  PRGM_PORT;       //	N	VARCHAR2(5)	    Y			프로그램 포트
+    @Column(length = 100)
+    private String  HOST_NM;         //	N	VARCHAR2(100)	Y			호스트 명
+    @Column(length = 100)
+    private String  OS_NM;           //	N	VARCHAR2(100)	Y			운영체제 명
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  DEL_YN;          //	N	CHAR(1)	        Y	'N'		삭제 여부
+    @Column(columnDefinition = "CHAR", length = 1)
+    @ColumnDefault(value = "N")
+    private String  STTS_DSPL_YN;    //	N	CHAR(1)	        Y	'N'		프로세스상태표출여불
+
+    public UnitSyst(String SYST_ID) {
+        this.SYST_ID = SYST_ID;
+    }
+
+    public void updateInfo(UnitSystDto.UnitSystUpdateReq req) {
+        //this.SYST_ID      = req.getSYST_ID();
+        this.SYST_TYPE    = req.getSYST_TYPE();
+        this.SYST_NMBR    = req.getSYST_NMBR();
+        this.SYST_NM      = req.getSYST_NM();
+        this.SYST_IP_1    = req.getSYST_IP_1();
+        this.SYST_IP_2    = req.getSYST_IP_2();
+        this.PRGM_PORT    = req.getPRGM_PORT();
+        this.HOST_NM      = req.getHOST_NM();
+        this.OS_NM        = req.getOS_NM();
+        this.DEL_YN       = req.getDEL_YN();
+        this.STTS_DSPL_YN = req.getSTTS_DSPL_YN();
+
+    }
+}

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

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

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

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

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

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

+ 24 - 4
src/main/java/com/its/op/service/database/TbAtrdService.java

@@ -63,19 +63,19 @@ public class TbAtrdService {
         return null;
     }
 
-    public List<AtrdRoadRltn> findLinkRltnById(String id) {
+    public List<AtrdRoadRltn> findRltnById(String id) {
         try {
             List<AtrdRoadRltn> data = this.repoRltn.findRltnById(id);
             return data;
         }
         catch (Exception e) {
-            log.error("{}.findById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+            log.error("{}.findRltnById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
         }
         return null;
     }
 
     @Transactional
-    public List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> updateLinkRltn(String id, List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> req) {
+    public List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> updateRltn(String id, List<AtrdRoadRltnDto.AtrdRoadRltnUpdateReq> req) {
         try {
             // 기존 데이터를 모두 삭제
             List<AtrdRoadRltn> lists = this.repoRltn.findRltnById(id);
@@ -91,9 +91,29 @@ public class TbAtrdService {
             return req;
         }
         catch (Exception e) {
-            log.error("{}.updateLinkRltn: Object: {}, {}, Exception: {}", getClass().getSimpleName(), id, req, e.getMessage());
+            log.error("{}.updateRltn: Object: {}, {}, Exception: {}", getClass().getSimpleName(), id, req, e.getMessage());
         }
         return null;
     }
 
+    @Transactional
+    public Atrd mergeInfo(AtrdDto.AtrdUpdateReq req) {
+        try {
+            Optional<Atrd> data = this.repo.findById(req.getATRD_ID());
+            Atrd obj;
+            if (data.isPresent()) {
+                obj = data.get();
+            }
+            else {
+                obj = new Atrd(req.getATRD_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;
+    }
 }

+ 2 - 2
src/main/java/com/its/op/service/database/TbIfscService.java

@@ -75,7 +75,7 @@ public class TbIfscService {
     }
 
     @Transactional
-    public List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> updateLinkRltn(Long id, List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> req) {
+    public List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> updateRltn(Long id, List<IfscLinkRltnDto.IfscLinkRltnUpdateReq> req) {
         try {
             // 기존 데이터를 모두 삭제
             List<IfscLinkRltn> lists = this.repoRltn.findRltnById(id);
@@ -91,7 +91,7 @@ public class TbIfscService {
             return req;
         }
         catch (Exception e) {
-            log.error("{}.updateLinkRltn: Object: {}, {}, Exception: {}", getClass().getSimpleName(), id, req, e.getMessage());
+            log.error("{}.updateRltn: Object: {}, {}, Exception: {}", getClass().getSimpleName(), id, req, e.getMessage());
         }
         return null;
     }

+ 78 - 0
src/main/java/com/its/op/service/database/TbLeglHldyInfrService.java

@@ -0,0 +1,78 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.LeglHldyInfrDto;
+import com.its.op.model.entity.LeglHldyInfr;
+import com.its.op.repository.LeglHldyInfrRepository;
+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 TbLeglHldyInfrService {
+
+    private final LeglHldyInfrRepository repo;
+
+    public List<LeglHldyInfr> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<LeglHldyInfr>();
+    }
+    public LeglHldyInfr findById(String id) {
+        try {
+            Optional<LeglHldyInfr> 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;
+    }
+
+    public LeglHldyInfr mergeInfo(LeglHldyInfrDto.LeglHldyUpdateReq req) {
+        try {
+            Optional<LeglHldyInfr> data = this.repo.findById(req.getYMD());
+            LeglHldyInfr obj;
+            if (data.isPresent()) {
+                obj = data.get();
+            }
+            else {
+                obj = new LeglHldyInfr(req.getYMD());
+            }
+            obj.updateInfo(req);
+            this.repo.save(obj);
+            return obj;
+        }
+        catch (Exception e) {
+            log.error("{}.mergeInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return null;
+    }
+
+    public LeglHldyInfr deleteById(String id) {
+        try {
+            Optional<LeglHldyInfr> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                LeglHldyInfr obj = data.get();
+                this.repo.deleteById(id);
+                return obj;
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.deleteById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+}

+ 78 - 0
src/main/java/com/its/op/service/database/TbParkingLotService.java

@@ -0,0 +1,78 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.ParkingLotDto;
+import com.its.op.model.entity.ParkingLot;
+import com.its.op.repository.ParkingLotRepository;
+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 TbParkingLotService {
+
+    private final ParkingLotRepository repo;
+
+    public List<ParkingLot> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<ParkingLot>();
+    }
+    public ParkingLot findById(String id) {
+        try {
+            Optional<ParkingLot> 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;
+    }
+
+    public ParkingLot mergeInfo(ParkingLotDto.ParkingLotUpdateReq req) {
+        try {
+            Optional<ParkingLot> data = this.repo.findById(req.getPARKINGID());
+            ParkingLot obj;
+            if (data.isPresent()) {
+                obj = data.get();
+             }
+            else {
+                obj = new ParkingLot(req.getPARKINGID());
+            }
+            obj.updateInfo(req);
+            this.repo.save(obj);
+            return obj;
+        }
+        catch (Exception e) {
+            log.error("{}.mergeInfo: Object: {}, Exception: {}", getClass().getSimpleName(), req, e.getMessage());
+        }
+        return null;
+    }
+
+    public ParkingLot deleteById(String id) {
+        try {
+            Optional<ParkingLot> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                ParkingLot obj = data.get();
+                this.repo.deleteById(id);
+                return obj;
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.deleteById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+}

+ 2 - 2
src/main/java/com/its/op/service/database/TbRoadService.java

@@ -75,7 +75,7 @@ public class TbRoadService {
     }
 
     @Transactional
-    public List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> updateLinkRltn(Long id, List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> req) {
+    public List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> updateRltn(Long id, List<RoadIfscRltnDto.RoadIfscRltnUpdateReq> req) {
         try {
             // 기존 데이터를 모두 삭제
             List<RoadIfscRltn> lists = this.repoRltn.findRltnById(id);
@@ -91,7 +91,7 @@ public class TbRoadService {
             return req;
         }
         catch (Exception e) {
-            log.error("{}.updateLinkRltn: Object: {}, {}, Exception: {}", getClass().getSimpleName(), id, req, e.getMessage());
+            log.error("{}.updateRltn: Object: {}, {}, Exception: {}", getClass().getSimpleName(), id, req, e.getMessage());
         }
         return null;
     }

+ 78 - 0
src/main/java/com/its/op/service/database/TbUnitSystService.java

@@ -0,0 +1,78 @@
+package com.its.op.service.database;
+
+import com.its.op.model.dto.UnitSystDto;
+import com.its.op.model.entity.UnitSyst;
+import com.its.op.repository.UnitSystRepository;
+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 TbUnitSystService {
+
+    private final UnitSystRepository repo;
+
+    public List<UnitSyst> findAll() {
+        try {
+            return this.repo.findAll();
+        }
+        catch (Exception e) {
+            log.error("{}.findAll: Exception: {}", getClass().getSimpleName(), e.getMessage());
+        }
+        return new ArrayList<UnitSyst>();
+    }
+    public UnitSyst findById(String id) {
+        try {
+            Optional<UnitSyst> 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;
+    }
+
+    public UnitSyst mergeInfo(UnitSystDto.UnitSystUpdateReq req) {
+        try {
+            Optional<UnitSyst> data = this.repo.findById(req.getSYST_ID());
+            UnitSyst obj;
+            if (data.isPresent()) {
+                obj = data.get();
+             }
+            else {
+                obj = new UnitSyst(req.getSYST_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;
+    }
+
+    public UnitSyst deleteById(String id) {
+        try {
+            Optional<UnitSyst> data = this.repo.findById(id);
+            if (data.isPresent()) {
+                UnitSyst obj = data.get();
+                this.repo.deleteById(id);
+                return obj;
+            }
+        }
+        catch (Exception e) {
+            log.error("{}.deleteById: Object: {}, Exception: {}", getClass().getSimpleName(), id, e.getMessage());
+        }
+        return null;
+    }
+
+}