Bladeren bron

facility manage ment

shjung 3 jaren geleden
bovenliggende
commit
cc933ff1d6

+ 2 - 2
src/main/java/com/its/api/its/controller/facility/TbFcltCmpyController.java

@@ -1,7 +1,7 @@
 package com.its.api.its.controller.facility;
 
-import com.its.api.its.model.dto.database.TbFcltCmpyDto;
-import com.its.api.its.service.database.TbFcltCmpyService;
+import com.its.api.its.model.dto.facility.TbFcltCmpyDto;
+import com.its.api.its.service.facility.TbFcltCmpyService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;

+ 65 - 0
src/main/java/com/its/api/its/controller/facility/TbFcltInfrController.java

@@ -0,0 +1,65 @@
+package com.its.api.its.controller.facility;
+
+import com.its.api.its.model.dto.facility.TbFcltInfrDto;
+import com.its.api.its.service.facility.TbFcltInfrService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@Api(tags = "01.시설물관리-1.시설물-1.시설물 정보관리")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/facility/manager/info")
+public class TbFcltInfrController {
+
+    private final TbFcltInfrService service;
+
+    @ApiOperation(value = "시설물 정보 전체조회(TB_FCLT_INFR)", response = TbFcltInfrDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbFcltInfrDto> findAllList() {
+        return this.service.findAllList();
+    }
+
+    @ApiOperation(value = "시설물 정보 개별조회(TB_FCLT_INFR)", response = TbFcltInfrDto.class)
+    @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbFcltInfrDto findById(@PathVariable final String id) {
+        return this.service.findById(id);
+    }
+
+    @ApiOperation(value = "시설물 정보 정보변경(TB_FCLT_INFR)", response = TbFcltInfrDto.class)
+    @PutMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbFcltInfrDto updateById(@PathVariable final String id, @RequestBody @Valid final TbFcltInfrDto.TbFcltInfrUpdReq req) {
+        return this.service.updateById(id, req);
+    }
+
+    @ApiOperation(value = "시설물 정보 정보변경/생성-목록(TB_FCLT_INFR)", response = TbFcltInfrDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbFcltInfrDto> mergeInfoList(@RequestBody @Valid final List<TbFcltInfrDto.TbFcltInfrUpdReq> listReq) {
+        return this.service.mergeInfoList(listReq);
+    }
+
+    @ApiOperation(value = "시설물 정보 정보변경/생성-개별(TB_FCLT_INFR)", response = TbFcltInfrDto.class)
+    @PostMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbFcltInfrDto mergeInfo(@PathVariable("id") String id, @RequestBody @Valid final TbFcltInfrDto.TbFcltInfrUpdReq req) {
+        return this.service.mergeInfo(req);
+    }
+
+    @ApiOperation(value = "시설물 정보 정보삭제-개별(TB_FCLT_INFR)", response = TbFcltInfrDto.class)
+    @DeleteMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
+    public TbFcltInfrDto deleteDataById(@PathVariable("id") String id) {
+        return this.service.deleteById(id);
+    }
+
+    @ApiOperation(value = "시설물 정보 정보삭제-목록(TB_FCLT_INFR)", response = TbFcltInfrDto.class, responseContainer = "ArrayList")
+    @DeleteMapping(value = "", produces = {"application/json; charset=utf8"})
+    public List<TbFcltInfrDto> deleteDataByIds(@RequestBody @Valid final List<String> ids) {
+        return this.service.deleteByIds(ids);
+    }
+
+}

+ 2 - 2
src/main/java/com/its/api/its/model/dto/database/TbFcltCmpyDto.java → src/main/java/com/its/api/its/model/dto/facility/TbFcltCmpyDto.java

@@ -1,8 +1,8 @@
-package com.its.api.its.model.dto.database;
+package com.its.api.its.model.dto.facility;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import com.its.api.its.model.entity.database.TbFcltCmpy;
+import com.its.api.its.model.entity.facility.TbFcltCmpy;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;

+ 310 - 0
src/main/java/com/its/api/its/model/dto/facility/TbFcltInfrDto.java

@@ -0,0 +1,310 @@
+package com.its.api.its.model.dto.facility;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.facility.TbFcltInfr;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Positive;
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 시설물 정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbFcltInfrDto(시설물 정보)")
+public class TbFcltInfrDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("시설물 ID")  // N VARCHAR(50)
+    @JsonProperty("fclt_id")
+    private String fcltId;
+
+    @ApiModelProperty("시설물 유형")  // Y VARCHAR(7)
+    @JsonProperty("fclt_type")
+    private String fcltType;
+
+    @ApiModelProperty("시설물 위치")  // Y VARCHAR(100)
+    @JsonProperty("fclt_lctn")
+    private String fcltLctn;
+
+    @ApiModelProperty("설치 위치 주소")  // Y VARCHAR(200)
+    @JsonProperty("istl_lctn_addr")
+    private String istlLctnAddr;
+
+    @ApiModelProperty("자산 유무")  // Y CHAR(1)
+    @JsonProperty("rsce_yn")
+    private String rsceYn;
+
+    @ApiModelProperty("모델 명")  // Y VARCHAR(30)
+    @JsonProperty("mdl_nm")
+    private String mdlNm;
+
+    @ApiModelProperty("사용 년수")  // Y NUMBER(3)
+    @JsonProperty("use_year")
+    private Integer useYear;
+
+    @ApiModelProperty("입고 일시")  // Y VARCHAR(14)
+    @JsonProperty("inwr_dt")
+    private String inwrDt;
+
+    @ApiModelProperty("출고 일시")  // Y VARCHAR(14)
+    @JsonProperty("otwr_dt")
+    private String otwrDt;
+
+    @ApiModelProperty("설치 일시")  // Y VARCHAR(14)
+    @JsonProperty("istl_dt")
+    private String istlDt;
+
+    @ApiModelProperty("반출 일시")  // Y VARCHAR(14)
+    @JsonProperty("takt_dt")
+    private String taktDt;
+
+    @ApiModelProperty("반출 사유")  // Y VARCHAR(100)
+    @JsonProperty("takt_resn")
+    private String taktResn;
+
+    @ApiModelProperty("반입 일시")  // Y VARCHAR(14)
+    @JsonProperty("takn_dt")
+    private String taknDt;
+
+    @ApiModelProperty("폐기 일시")  // Y VARCHAR(14)
+    @JsonProperty("abdn_dt")
+    private String abdnDt;
+
+    //@ApiModelProperty("추가자 명")  // Y VARCHAR(30)
+    //@JsonProperty("adtn_nm")
+    @JsonIgnore
+    private String adtnNm;
+
+    //@ApiModelProperty("추가 일시")  // Y VARCHAR(14)
+    //@JsonProperty("adtn_dt")
+    @JsonIgnore
+    private String adtnDt;
+
+    //@ApiModelProperty("변경자 명")  // Y VARCHAR(30)
+    //@JsonProperty("chng_nm")
+    @JsonIgnore
+    private String chngNm;
+
+    //@ApiModelProperty("변경 일시")  // Y VARCHAR(14)
+    //@JsonProperty("chng_dt")
+    @JsonIgnore
+    private String chngDt;
+
+    @ApiModelProperty("금액")  // Y NUMBER(15)
+    @JsonProperty("amt")
+    private Long amt;
+
+    @ApiModelProperty("삭제 여부")  // Y CHAR(1)
+    @JsonProperty("del_yn")
+    private String delYn;
+
+    @ApiModelProperty("설치 업체 ID")  // Y VARCHAR(30)
+    @JsonProperty("istl_cmpy_id")
+    private String istlCmpyId;
+
+    @ApiModelProperty("제조 업체 ID")  // Y VARCHAR(30)
+    @JsonProperty("mnfc_cmpy_id")
+    private String mnfcCmpyId;
+
+    @ApiModelProperty("RFID ID")  // Y VARCHAR(30)
+    @JsonProperty("rfid_id")
+    private String rfidId;
+
+    // Code Description Field
+    @ApiModelProperty("자산 유무 설명")
+    @JsonProperty("rsce_desc")    // RSCE_YN
+    private String rsceDesc;
+
+    @ApiModelProperty("삭제 여부 설명")
+    @JsonProperty("del_desc")    // DEL_YN
+    private String delDesc;
+
+    @ApiModel("TbFcltInfrUpdReq(시설물 정보 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbFcltInfrUpdReq {
+
+        @ApiModelProperty("시설물 ID, Nullable = N, VARCHAR(50)")  // N VARCHAR(50)
+        @JsonProperty("fclt_id")
+        @Size(min=1, max=50)
+        private String fcltId;
+
+        @ApiModelProperty("시설물 유형, Nullable = Y, VARCHAR(7)")  // Y VARCHAR(7)
+        @JsonProperty("fclt_type")
+        @Size(min=1, max=7)
+        private String fcltType;
+
+        @ApiModelProperty("시설물 위치, Nullable = Y, VARCHAR(100)")  // Y VARCHAR(100)
+        @JsonProperty("fclt_lctn")
+        @Size(min=1, max=100)
+        private String fcltLctn;
+
+        @ApiModelProperty("설치 위치 주소, Nullable = Y, VARCHAR(200)")  // Y VARCHAR(200)
+        @JsonProperty("istl_lctn_addr")
+        @Size(min=1, max=200)
+        private String istlLctnAddr;
+
+        @ApiModelProperty("자산 유무, Nullable = Y, CHAR(1)")  // Y CHAR(1)
+        @JsonProperty("rsce_yn")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String rsceYn;
+
+        @ApiModelProperty("모델 명, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("mdl_nm")
+        @Size(min=1, max=30)
+        private String mdlNm;
+
+        @ApiModelProperty("사용 년수, Nullable = Y, NUMBER(3)")  // Y NUMBER(3)
+        @JsonProperty("use_year")
+        @Positive
+        private Integer useYear;
+
+        @ApiModelProperty("입고 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("inwr_dt")
+        @Size(min=1, max=14)
+        private String inwrDt;
+
+        @ApiModelProperty("출고 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("otwr_dt")
+        @Size(min=1, max=14)
+        private String otwrDt;
+
+        @ApiModelProperty("설치 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("istl_dt")
+        @Size(min=1, max=14)
+        private String istlDt;
+
+        @ApiModelProperty("반출 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("takt_dt")
+        @Size(min=1, max=14)
+        private String taktDt;
+
+        @ApiModelProperty("반출 사유, Nullable = Y, VARCHAR(100)")  // Y VARCHAR(100)
+        @JsonProperty("takt_resn")
+        @Size(min=1, max=100)
+        private String taktResn;
+
+        @ApiModelProperty("반입 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("takn_dt")
+        @Size(min=1, max=14)
+        private String taknDt;
+
+        @ApiModelProperty("폐기 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("abdn_dt")
+        @Size(min=1, max=14)
+        private String abdnDt;
+
+        @ApiModelProperty("추가자 명, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("adtn_nm")
+        @Size(min=1, max=30)
+        private String adtnNm;
+
+        @ApiModelProperty("추가 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("adtn_dt")
+        @Size(min=1, max=14)
+        private String adtnDt;
+
+        @ApiModelProperty("변경자 명, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("chng_nm")
+        @Size(min=1, max=30)
+        private String chngNm;
+
+        @ApiModelProperty("변경 일시, Nullable = Y, VARCHAR(14)")  // Y VARCHAR(14)
+        @JsonProperty("chng_dt")
+        @Size(min=1, max=14)
+        private String chngDt;
+
+        @ApiModelProperty("금액, Nullable = Y, NUMBER(15)")  // Y NUMBER(15)
+        @JsonProperty("amt")
+        @Positive
+        private Long amt;
+
+        @ApiModelProperty("삭제 여부, Nullable = Y, CHAR(1)")  // Y CHAR(1)
+        @JsonProperty("del_yn")
+        @Size(min=1, max=1)
+        @Pattern(regexp = "[YN]")
+        private String delYn;
+
+        @ApiModelProperty("설치 업체 ID, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("istl_cmpy_id")
+        @Size(min=1, max=30)
+        private String istlCmpyId;
+
+        @ApiModelProperty("제조 업체 ID, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("mnfc_cmpy_id")
+        @Size(min=1, max=30)
+        private String mnfcCmpyId;
+
+        @ApiModelProperty("RFID ID, Nullable = Y, VARCHAR(30)")  // Y VARCHAR(30)
+        @JsonProperty("rfid_id")
+        @Size(min=1, max=30)
+        private String rfidId;
+
+        @Builder
+        public TbFcltInfrUpdReq(String fclt_id, String fclt_type, String fclt_lctn, String istl_lctn_addr, String rsce_yn, String mdl_nm, Integer use_year, String inwr_dt, String otwr_dt, String istl_dt, String takt_dt, String takt_resn, String takn_dt, String abdn_dt, String adtn_nm, String adtn_dt, String chng_nm, String chng_dt, Long amt, String del_yn, String istl_cmpy_id, String mnfc_cmpy_id, String rfid_id) {
+            this.fcltId = fclt_id;
+            this.fcltType = fclt_type;
+            this.fcltLctn = fclt_lctn;
+            this.istlLctnAddr = istl_lctn_addr;
+            this.rsceYn = rsce_yn;
+            this.mdlNm = mdl_nm;
+            this.useYear = use_year;
+            this.inwrDt = inwr_dt;
+            this.otwrDt = otwr_dt;
+            this.istlDt = istl_dt;
+            this.taktDt = takt_dt;
+            this.taktResn = takt_resn;
+            this.taknDt = takn_dt;
+            this.abdnDt = abdn_dt;
+            this.adtnNm = adtn_nm;
+            this.adtnDt = adtn_dt;
+            this.chngNm = chng_nm;
+            this.chngDt = chng_dt;
+            this.amt = amt;
+            this.delYn = del_yn;
+            this.istlCmpyId = istl_cmpy_id;
+            this.mnfcCmpyId = mnfc_cmpy_id;
+            this.rfidId = rfid_id;
+        }
+
+        public TbFcltInfr toEntity() {
+            return TbFcltInfr.builder()
+                    .fcltId(this.fcltId)
+                    .fcltType(this.fcltType)
+                    .fcltLctn(this.fcltLctn)
+                    .istlLctnAddr(this.istlLctnAddr)
+                    .rsceYn(this.rsceYn)
+                    .mdlNm(this.mdlNm)
+                    .useYear(this.useYear)
+                    .inwrDt(this.inwrDt)
+                    .otwrDt(this.otwrDt)
+                    .istlDt(this.istlDt)
+                    .taktDt(this.taktDt)
+                    .taktResn(this.taktResn)
+                    .taknDt(this.taknDt)
+                    .abdnDt(this.abdnDt)
+                    .adtnNm(this.adtnNm)
+                    .adtnDt(this.adtnDt)
+                    .chngNm(this.chngNm)
+                    .chngDt(this.chngDt)
+                    .amt(this.amt)
+                    .delYn(this.delYn)
+                    .istlCmpyId(this.istlCmpyId)
+                    .mnfcCmpyId(this.mnfcCmpyId)
+                    .rfidId(this.rfidId)
+                    .build();
+        }
+
+    }
+
+}

+ 2 - 2
src/main/java/com/its/api/its/model/entity/database/TbFcltCmpy.java → src/main/java/com/its/api/its/model/entity/facility/TbFcltCmpy.java

@@ -1,6 +1,6 @@
-package com.its.api.its.model.entity.database;
+package com.its.api.its.model.entity.facility;
 
-import com.its.api.its.model.dto.database.TbFcltCmpyDto;
+import com.its.api.its.model.dto.facility.TbFcltCmpyDto;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.*;

+ 179 - 0
src/main/java/com/its/api/its/model/entity/facility/TbFcltInfr.java

@@ -0,0 +1,179 @@
+package com.its.api.its.model.entity.facility;
+
+import com.its.api.its.model.dto.facility.TbFcltInfrDto;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.io.Serializable;
+
+/**
+ * 시설물 정보 Entity Class
+ */
+@Getter
+@NoArgsConstructor(access = AccessLevel.PROTECTED)
+@Builder
+@AllArgsConstructor
+@ApiModel("시설물 정보")
+@Entity
+@Table(name = "TB_FCLT_INFR")
+public class TbFcltInfr implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("시설물 ID")  // N VARCHAR(50)
+    @Id
+    @Column(name = "FCLT_ID", nullable = false, length = 50)
+    private String fcltId;
+
+    @ApiModelProperty("시설물 유형")  // Y VARCHAR(7)
+    @Column(name = "FCLT_TYPE", length = 7)
+    private String fcltType;
+
+    @ApiModelProperty("시설물 위치")  // Y VARCHAR(100)
+    @Column(name = "FCLT_LCTN", length = 100)
+    private String fcltLctn;
+
+    @ApiModelProperty("설치 위치 주소")  // Y VARCHAR(200)
+    @Column(name = "ISTL_LCTN_ADDR", length = 200)
+    private String istlLctnAddr;
+
+    @ApiModelProperty("자산 유무")  // Y CHAR(1)
+    @Column(name = "RSCE_YN", columnDefinition = "CHAR", length = 1)
+    private String rsceYn;
+
+    @ApiModelProperty("모델 명")  // Y VARCHAR(30)
+    @Column(name = "MDL_NM", length = 30)
+    private String mdlNm;
+
+    @ApiModelProperty("사용 년수")  // Y NUMBER(3)
+    @Column(name = "USE_YEAR", columnDefinition = "NUMBER", length = 3)
+    private Integer useYear;
+
+    @ApiModelProperty("입고 일시")  // Y VARCHAR(14)
+    @Column(name = "INWR_DT", length = 14)
+    private String inwrDt;
+
+    @ApiModelProperty("출고 일시")  // Y VARCHAR(14)
+    @Column(name = "OTWR_DT", length = 14)
+    private String otwrDt;
+
+    @ApiModelProperty("설치 일시")  // Y VARCHAR(14)
+    @Column(name = "ISTL_DT", length = 14)
+    private String istlDt;
+
+    @ApiModelProperty("반출 일시")  // Y VARCHAR(14)
+    @Column(name = "TAKT_DT", length = 14)
+    private String taktDt;
+
+    @ApiModelProperty("반출 사유")  // Y VARCHAR(100)
+    @Column(name = "TAKT_RESN", length = 100)
+    private String taktResn;
+
+    @ApiModelProperty("반입 일시")  // Y VARCHAR(14)
+    @Column(name = "TAKN_DT", length = 14)
+    private String taknDt;
+
+    @ApiModelProperty("폐기 일시")  // Y VARCHAR(14)
+    @Column(name = "ABDN_DT", length = 14)
+    private String abdnDt;
+
+    @ApiModelProperty("추가자 명")  // Y VARCHAR(30)
+    @Column(name = "ADTN_NM", length = 30)
+    private String adtnNm;
+
+    @ApiModelProperty("추가 일시")  // Y VARCHAR(14)
+    @Column(name = "ADTN_DT", length = 14)
+    private String adtnDt;
+
+    @ApiModelProperty("변경자 명")  // Y VARCHAR(30)
+    @Column(name = "CHNG_NM", length = 30)
+    private String chngNm;
+
+    @ApiModelProperty("변경 일시")  // Y VARCHAR(14)
+    @Column(name = "CHNG_DT", length = 14)
+    private String chngDt;
+
+    @ApiModelProperty("금액")  // Y NUMBER(15)
+    @Column(name = "AMT", columnDefinition = "NUMBER", length = 15)
+    private Long amt;
+
+    @ApiModelProperty("삭제 여부")  // Y CHAR(1)
+    @Column(name = "DEL_YN", columnDefinition = "CHAR", length = 1)
+    private String delYn;
+
+    @ApiModelProperty("설치 업체 ID")  // Y VARCHAR(30)
+    @Column(name = "ISTL_CMPY_ID", length = 30)
+    private String istlCmpyId;
+
+    @ApiModelProperty("제조 업체 ID")  // Y VARCHAR(30)
+    @Column(name = "MNFC_CMPY_ID", length = 30)
+    private String mnfcCmpyId;
+
+    @ApiModelProperty("RFID ID")  // Y VARCHAR(30)
+    @Column(name = "RFID_ID", length = 30)
+    private String rfidId;
+
+    public TbFcltInfrDto toDto() {
+        TbFcltInfrDto dto = TbFcltInfrDto.builder()
+                .fcltId(this.fcltId)
+                .fcltType(this.fcltType)
+                .fcltLctn(this.fcltLctn)
+                .istlLctnAddr(this.istlLctnAddr)
+                .rsceYn(this.rsceYn)
+                .mdlNm(this.mdlNm)
+                .useYear(this.useYear)
+                .inwrDt(this.inwrDt)
+                .otwrDt(this.otwrDt)
+                .istlDt(this.istlDt)
+                .taktDt(this.taktDt)
+                .taktResn(this.taktResn)
+                .taknDt(this.taknDt)
+                .abdnDt(this.abdnDt)
+                .adtnNm(this.adtnNm)
+                .adtnDt(this.adtnDt)
+                .chngNm(this.chngNm)
+                .chngDt(this.chngDt)
+                .amt(this.amt)
+                .delYn(this.delYn)
+                .istlCmpyId(this.istlCmpyId)
+                .mnfcCmpyId(this.mnfcCmpyId)
+                .rfidId(this.rfidId)
+                .build();
+
+        return dto;
+    }
+
+    public TbFcltInfr(String fcltId) {
+        this.fcltId = fcltId;
+    }
+
+    public void updateInfo(TbFcltInfrDto.TbFcltInfrUpdReq req) {
+        this.fcltType = req.getFcltType();
+        this.fcltLctn = req.getFcltLctn();
+        this.istlLctnAddr = req.getIstlLctnAddr();
+        this.rsceYn = req.getRsceYn();
+        this.mdlNm = req.getMdlNm();
+        this.useYear = req.getUseYear();
+        this.inwrDt = req.getInwrDt();
+        this.otwrDt = req.getOtwrDt();
+        this.istlDt = req.getIstlDt();
+        this.taktDt = req.getTaktDt();
+        this.taktResn = req.getTaktResn();
+        this.taknDt = req.getTaknDt();
+        this.abdnDt = req.getAbdnDt();
+        this.adtnNm = req.getAdtnNm();
+        this.adtnDt = req.getAdtnDt();
+        this.chngNm = req.getChngNm();
+        this.chngDt = req.getChngDt();
+        this.amt = req.getAmt();
+        this.delYn = req.getDelYn();
+        this.istlCmpyId = req.getIstlCmpyId();
+        this.mnfcCmpyId = req.getMnfcCmpyId();
+        this.rfidId = req.getRfidId();
+    }
+
+}

+ 2 - 2
src/main/java/com/its/api/its/repository/database/TbFcltCmpyRepository.java → src/main/java/com/its/api/its/repository/facility/TbFcltCmpyRepository.java

@@ -1,6 +1,6 @@
-package com.its.api.its.repository.database;
+package com.its.api.its.repository.facility;
 
-import com.its.api.its.model.entity.database.TbFcltCmpy;
+import com.its.api.its.model.entity.facility.TbFcltCmpy;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.stereotype.Repository;

+ 16 - 0
src/main/java/com/its/api/its/repository/facility/TbFcltInfrRepository.java

@@ -0,0 +1,16 @@
+package com.its.api.its.repository.facility;
+
+import com.its.api.its.model.entity.facility.TbFcltInfr;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface TbFcltInfrRepository extends JpaRepository<TbFcltInfr, String>, JpaSpecificationExecutor<TbFcltInfr> {
+
+    @Query("select p from TbFcltInfr p where p.delYn = 'N'")
+    List<TbFcltInfr> findAllList();
+}

+ 4 - 4
src/main/java/com/its/api/its/service/database/TbFcltCmpyService.java → src/main/java/com/its/api/its/service/facility/TbFcltCmpyService.java

@@ -1,8 +1,8 @@
-package com.its.api.its.service.database;
+package com.its.api.its.service.facility;
 
-import com.its.api.its.model.dto.database.TbFcltCmpyDto;
-import com.its.api.its.model.entity.database.TbFcltCmpy;
-import com.its.api.its.repository.database.TbFcltCmpyRepository;
+import com.its.api.its.model.dto.facility.TbFcltCmpyDto;
+import com.its.api.its.model.entity.facility.TbFcltCmpy;
+import com.its.api.its.repository.facility.TbFcltCmpyRepository;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;

+ 112 - 0
src/main/java/com/its/api/its/service/facility/TbFcltInfrService.java

@@ -0,0 +1,112 @@
+package com.its.api.its.service.facility;
+
+import com.its.api.its.model.dto.facility.TbFcltInfrDto;
+import com.its.api.its.model.entity.facility.TbFcltInfr;
+import com.its.api.its.repository.facility.TbFcltInfrRepository;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Optional;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class TbFcltInfrService {
+
+    private final TbFcltInfrRepository repo;
+
+    // 데이터 1건 조회, 없으면 exception
+    private TbFcltInfr requireOne(String id) {
+        return this.repo.findById(id)
+                .orElseThrow(() -> new NoSuchElementException("데이터가 존재하지 않습니다: " + id));
+    }
+
+    // 전체 데이터 조회
+    @Transactional(readOnly = true)
+    public List<TbFcltInfrDto> findAll() {
+        List<TbFcltInfrDto> result = new ArrayList<>();
+        List<TbFcltInfr> data = this.repo.findAll();
+        for (TbFcltInfr entity : data) {
+            result.add(entity.toDto());
+        }
+        return result;
+    }
+
+    /**
+     * 삭제되지 않은 시설물 정보 전체 조회
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<TbFcltInfrDto> findAllList() {
+        List<TbFcltInfrDto> result = new ArrayList<>();
+        List<TbFcltInfr> data = this.repo.findAllList();
+        data.forEach(obj -> {
+            result.add(obj.toDto());
+        });
+        return result;
+    }
+
+    // 데이터 1건 조회(기존 데이터가 반드시 존재해야 함)
+    @Transactional(readOnly = true)
+    public TbFcltInfrDto findById(String id) {
+        TbFcltInfr entity = requireOne(id);
+        return entity.toDto();
+    }
+
+    // 데이터 변경
+    @Transactional
+    public TbFcltInfrDto updateById(String id, TbFcltInfrDto.TbFcltInfrUpdReq req) {
+        TbFcltInfr entity = requireOne(id);
+        entity.updateInfo(req);
+        this.repo.save(entity);
+        return entity.toDto();
+    }
+
+    // 데이터 변경 또는 생성-목록(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public List<TbFcltInfrDto> mergeInfoList(List<TbFcltInfrDto.TbFcltInfrUpdReq> reqList) {
+        List<TbFcltInfrDto> result = new ArrayList<>();
+        for (TbFcltInfrDto.TbFcltInfrUpdReq req : reqList) {
+            TbFcltInfr obj = req.toEntity();
+            this.repo.save(obj);
+            result.add(obj.toDto());
+        }
+        return result;
+    }
+
+    // 데이터 변경 또는 생성-개별(데이터가 존재하면 업데이트 없으면 신규로 생성)
+    @Transactional
+    public TbFcltInfrDto mergeInfo(TbFcltInfrDto.TbFcltInfrUpdReq req) {
+        TbFcltInfr obj = req.toEntity();
+        this.repo.save(obj);
+        return obj.toDto();
+    }
+
+    // 정보 삭제-개별, 데이터 존재하지 않으면 Exception
+    @Transactional
+    public TbFcltInfrDto deleteById(String id) {
+        TbFcltInfr entity = requireOne(id);
+        this.repo.deleteById(id);
+        return entity.toDto();
+    }
+
+    // 정보 삭제-목록, 존재하는 데이터 만 삭제
+    @Transactional
+    public List<TbFcltInfrDto> deleteByIds(List<String> ids) {
+        List<TbFcltInfrDto> result = new ArrayList<>();
+        for (String id : ids) {
+            Optional<TbFcltInfr> obj = this.repo.findById(id);
+            if (obj.isPresent()) {
+                this.repo.deleteById(id);
+                result.add(obj.get().toDto());
+            }
+        }
+        return result;
+    }
+
+}