Bladeren bron

facility management add

shjung 3 jaren geleden
bovenliggende
commit
b44fe26898

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

@@ -1,6 +1,7 @@
 package com.its.api.its.controller.facility;
 
 import com.its.api.its.model.dto.facility.TbFcltInfrDto;
+import com.its.api.its.model.dto.facility.UnRegisteredFcltInfrDto;
 import com.its.api.its.service.facility.TbFcltInfrService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -26,6 +27,18 @@ public class TbFcltInfrController {
         return this.service.findAllList();
     }
 
+    @ApiOperation(value = "미등록 시설물 정보 전체조회(TB_FCLT_INFR)", response = UnRegisteredFcltInfrDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/unreg", produces = {"application/json; charset=utf8"})
+    public List<UnRegisteredFcltInfrDto> findAllUnRegisteredList() {
+        return this.service.findAllUnRegisteredList();
+    }
+
+    @ApiOperation(value = "시설물 정보 정보등록(TB_FCLT_INFR)", response = TbFcltInfrDto.class, responseContainer = "ArrayList")
+    @PostMapping(value = "/reg", produces = {"application/json; charset=utf8"})
+    public List<TbFcltInfrDto> mergeRegInfoList(@RequestBody @Valid final List<UnRegisteredFcltInfrDto.TbRegFcltInfrUpdReq> listReq) {
+        return this.service.mergeRegInfoList(listReq);
+    }
+
     @ApiOperation(value = "시설물 정보 개별조회(TB_FCLT_INFR)", response = TbFcltInfrDto.class)
     @GetMapping(value = "/{id}", produces = {"application/json; charset=utf8"})
     public TbFcltInfrDto findById(@PathVariable final String id) {

+ 76 - 0
src/main/java/com/its/api/its/model/dto/facility/UnRegisteredFcltInfrDto.java

@@ -0,0 +1,76 @@
+package com.its.api.its.model.dto.facility;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.its.api.its.model.entity.facility.TbFcltInfr;
+import com.its.api.utils.ItsUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.*;
+
+import javax.validation.constraints.Size;
+import java.io.Serializable;
+
+/**
+ * 시설물 정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("UnRegisteredFcltInfrDto(미등록 시설물 정보)")
+public class UnRegisteredFcltInfrDto 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;
+
+    @ApiModel("TbRegFcltInfrUpdReq(시설물 정보 정보변경)")
+    @Getter
+    @Setter
+    @ToString
+    @NoArgsConstructor(access = AccessLevel.PROTECTED)
+    public static class TbRegFcltInfrUpdReq {
+
+        @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;
+
+        @Builder
+        public TbRegFcltInfrUpdReq(String fclt_id, String fclt_type, String fclt_lctn) {
+            this.fcltId = fclt_id;
+            this.fcltType = fclt_type;
+            this.fcltLctn = fclt_lctn;
+        }
+
+        public TbFcltInfr toEntity() {
+            return TbFcltInfr.builder()
+                    .fcltId(this.fcltId)
+                    .fcltType(this.fcltType)
+                    .fcltLctn(this.fcltLctn)
+                    .delYn("N")
+                    .amt(Long.valueOf(0))
+                    .adtnDt(ItsUtils.getSysTime())
+                    .build();
+        }
+
+    }
+
+}

+ 93 - 4
src/main/java/com/its/api/its/service/facility/TbFcltInfrService.java

@@ -1,17 +1,23 @@
 package com.its.api.its.service.facility;
 
+import com.its.api.its.model.dto.cctv.TbCctvCtlrDto;
 import com.its.api.its.model.dto.facility.TbFcltInfrDto;
+import com.its.api.its.model.dto.facility.UnRegisteredFcltInfrDto;
+import com.its.api.its.model.dto.vds.TbVdsCtlrDto;
+import com.its.api.its.model.dto.vms.TbVmsCtlrDto;
 import com.its.api.its.model.entity.facility.TbFcltInfr;
 import com.its.api.its.repository.facility.TbFcltInfrRepository;
+import com.its.api.its.service.cctv.TbCctvCtlrService;
+import com.its.api.its.service.vds.TbVdsCtlrService;
+import com.its.api.its.service.vms.TbVmsCtlrService;
+import com.its.api.utis.model.dto.RsemstDto;
+import com.its.api.utis.service.RsemstService;
 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;
+import java.util.*;
 
 @Slf4j
 @RequiredArgsConstructor
@@ -19,6 +25,10 @@ import java.util.Optional;
 public class TbFcltInfrService {
 
     private final TbFcltInfrRepository repo;
+    private final TbVmsCtlrService vmsCtlrService;
+    private final TbVdsCtlrService vdsCtlrService;
+    private final TbCctvCtlrService cctvCtlrService;
+    private final RsemstService rseMstService;
 
     // 데이터 1건 조회, 없으면 exception
     private TbFcltInfr requireOne(String id) {
@@ -109,4 +119,83 @@ public class TbFcltInfrService {
         return result;
     }
 
+    /**
+     * 미등록 시설물 정보 등록
+     * @param listReq
+     * @return
+     */
+    @Transactional
+    public List<TbFcltInfrDto> mergeRegInfoList(List<UnRegisteredFcltInfrDto.TbRegFcltInfrUpdReq> listReq) {
+        List<TbFcltInfrDto> result = new ArrayList<>();
+        listReq.forEach(obj -> {
+            TbFcltInfr entity = obj.toEntity();
+            this.repo.save(entity);
+            result.add(entity.toDto());
+        });
+        return result;
+    }
+
+    /**
+     * 미등록 시설물 정보 조회
+     * @return
+     */
+    @Transactional(readOnly = true)
+    public List<UnRegisteredFcltInfrDto> findAllUnRegisteredList() {
+        List<UnRegisteredFcltInfrDto> result = new ArrayList<>();
+        Map<String, TbFcltInfrDto> regMap = new HashMap<>();
+        List<TbFcltInfrDto> regList = findAllList();
+        regList.forEach(obj -> {
+            regMap.put(obj.getFcltId(), obj);
+        });
+
+        List<TbVmsCtlrDto> vmsList = this.vmsCtlrService.findAllList();
+        vmsList.forEach(obj -> {
+            TbFcltInfrDto regObj = regMap.get(obj.getVmsCtlrId());
+            if (regObj == null) {
+                result.add(UnRegisteredFcltInfrDto.builder()
+                        .fcltType("VMS")
+                        .fcltId(obj.getVmsCtlrId())
+                        .fcltLctn(obj.getVmsNm())
+                        .build());
+            }
+        });
+
+        List<TbVdsCtlrDto> vdsList = this.vdsCtlrService.findAllList();
+        vdsList.forEach(obj -> {
+            TbFcltInfrDto regObj = regMap.get(obj.getVdsCtlrId());
+            if (regObj == null) {
+                result.add(UnRegisteredFcltInfrDto.builder()
+                        .fcltType("VDS")
+                        .fcltId(obj.getVdsCtlrId())
+                        .fcltLctn(obj.getLctn())
+                        .build());
+            }
+        });
+
+        List<TbCctvCtlrDto> cctvList = this.cctvCtlrService.findAllList();
+        cctvList.forEach(obj -> {
+            TbFcltInfrDto regObj = regMap.get(obj.getCctvCtlrId());
+            if (regObj == null) {
+                result.add(UnRegisteredFcltInfrDto.builder()
+                        .fcltType("CCTV")
+                        .fcltId(obj.getCctvCtlrId())
+                        .fcltLctn(obj.getIstlLctnNm())
+                        .build());
+            }
+        });
+
+        List<RsemstDto> rseList = this.rseMstService.findAllList();
+        rseList.forEach(obj -> {
+            TbFcltInfrDto regObj = regMap.get(obj.getRseid());
+            if (regObj == null) {
+                result.add(UnRegisteredFcltInfrDto.builder()
+                        .fcltType("RSE")
+                        .fcltId(obj.getRseid())
+                        .fcltLctn(obj.getLocation())
+                        .build());
+            }
+        });
+
+        return result;
+    }
 }