shjung преди 2 години
родител
ревизия
ae0bd32329

+ 37 - 0
src/main/java/com/its/op/controller/its/facility/FcltReportController.java

@@ -0,0 +1,37 @@
+package com.its.op.controller.its.facility;
+
+import com.its.op.dto.its.common.NewIdLongDto;
+import com.its.op.dto.its.facility.FcltFailActDto;
+import com.its.op.dto.its.facility.TbFcltFailActDto;
+import com.its.op.entity.its.facility.TbFcltFailActKey;
+import com.its.op.service.its.facility.FcltReportService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+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.시설물관리-6.보고서")
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/facility/report")
+public class FcltReportController {
+
+    private final FcltReportService service;
+
+    @ApiOperation(value = "장애처리 실적 관리", response = FcltFailActDto.class, responseContainer = "ArrayList")
+    @GetMapping(value = "/fail-act", produces = {"application/json; charset=utf8"})
+    public List<FcltFailActDto> findAllFcltFailAct(
+            @ApiParam(name = "FROM_DT", value = "조회시작일(YYYYMMDDHH24MISS)", example = "20230101000000", required = true)
+            @RequestParam String FROM_DT,
+            @ApiParam(name = "TO_DT", value = "조회종료일(YYYYMMDDHH24MISS)", example = "20231231235959", required = true)
+            @RequestParam String TO_DT) {
+        return this.service.findAllFcltFailAct(FROM_DT, TO_DT);
+    }
+
+}

+ 1 - 1
src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartController.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.util.List;
 
-@Api(tags = "01.시설물관리-6.부품관리-1.시설물 BOM 구성")
+@Api(tags = "01.시설물관리-5.부품관리-1.시설물 BOM 구성")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartInController.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.util.List;
 
-@Api(tags = "01.시설물관리-6.부품관리-2.부품 입고관리")
+@Api(tags = "01.시설물관리-5.부품관리-2.부품 입고관리")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 1 - 1
src/main/java/com/its/op/controller/its/facility/TbFcltSubjPartOutController.java

@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
 import javax.validation.Valid;
 import java.util.List;
 
-@Api(tags = "01.시설물관리-6.부품관리-3.부품 출고관리")
+@Api(tags = "01.시설물관리-5.부품관리-3.부품 출고관리")
 @Validated
 @RestController
 @RequiredArgsConstructor

+ 15 - 0
src/main/java/com/its/op/dao/mapper/its/facility/FcltFailActMapper.java

@@ -0,0 +1,15 @@
+package com.its.op.dao.mapper.its.facility;
+
+import com.its.op.dto.its.facility.FcltFailActDto;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface FcltFailActMapper {
+
+    // 장애처리실적관리 조회
+    List<FcltFailActDto> findAllFcltFailAct(Map<String, String> param);
+
+}

+ 117 - 0
src/main/java/com/its/op/dto/its/facility/FcltFailActDto.java

@@ -0,0 +1,117 @@
+package com.its.op.dto.its.facility;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 시설물 장애 처리 실적 정보 DTO Class
+ */
+@Data
+@Builder
+@ApiModel("TbFcltFailDto(시설물 장애 처리 실적 정보)")
+public class FcltFailActDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("장애발생번호(YYYYMMNNNN)")  // N VARCHAR2(10)
+    @JsonProperty("fail_no")
+    private String failNo;
+
+    @ApiModelProperty("등록일시")  // N VARCHAR2(14)
+    @JsonProperty("reg_dt")
+    private String regDt;
+
+    @ApiModelProperty("시설물 관리 번호")  // N NUMBER(10)
+    @JsonProperty("fclt_nmbr")
+    private Long fcltNmbr;
+
+    @ApiModelProperty("시설물 유형")  // N VARCHAR2(7)
+    @JsonProperty("fclt_type")
+    private String fcltType;
+
+    @ApiModelProperty("시설물 ID")  // N VARCHAR2(30)
+    @JsonProperty("fclt_id")
+    private String fcltId;
+
+    @ApiModelProperty("시설물 위치")  // Y VARCHAR2(100)
+    @JsonProperty("fclt_lctn")
+    private String fcltLctn;
+
+    @ApiModelProperty("장애 발생 구분코드")  // Y VARCHAR2(7)
+    @JsonProperty("fail_ocrr_cd")
+    private String failOcrrCd;
+
+    @ApiModelProperty("장애품목 관리번호")  // Y NUMBER(10)
+    @JsonProperty("subj_nmbr")
+    private Long subjNmbr;
+
+    @ApiModelProperty("장애발견자명")  // Y VARCHAR2(30)
+    @JsonProperty("find_man")
+    private String findMan;
+
+    @ApiModelProperty("장애발생시각")  // Y VARCHAR2(14)
+    @JsonProperty("str_dt")
+    private String strDt;
+
+    @ApiModelProperty("장애종료시각")  // Y VARCHAR2(14)
+    @JsonProperty("end_dt")
+    private String endDt;
+
+    @ApiModelProperty("진행상태-장애조치('FSTEP')")  // Y VARCHAR2(7)
+    @JsonProperty("step_cd")
+    private String stepCd;
+
+    @ApiModelProperty("진행상태-장애조치('FSTEP') 설명")
+    @JsonProperty("step_desc")    // STEP_CD
+    private String stepDesc;
+
+    @ApiModelProperty("장애명")  // Y VARCHAR2(100)
+    @JsonProperty("fail_nm")
+    private String failNm;
+
+    @ApiModelProperty("장애등록구분('FREG')")  // Y VARCHAR2(7)
+    @JsonProperty("fail_reg_cd")
+    private String failRegCd;
+
+    @ApiModelProperty("장애등록구분('FREG') 설명")
+    @JsonProperty("fail_reg_desc")    // FAIL_REG_CD
+    private String failRegDesc;
+
+    @ApiModelProperty("장애등급구분('FLVL')")  // Y VARCHAR2(7)
+    @JsonProperty("fail_levl_cd")
+    private String failLevlCd;
+
+    @ApiModelProperty("장애등급구분('FLVL') 설명")
+    @JsonProperty("fail_levl_desc")    // FAIL_LEVL_CD
+    private String failLevlDesc;
+
+    @ApiModelProperty("날씨('FWTHR')")  // Y VARCHAR2(7)
+    @JsonProperty("wthr_cd")
+    private String wthrCd;
+
+    @ApiModelProperty("장애내용")  // Y VARCHAR2(256)
+    @JsonProperty("fail_desc")
+    private String failDesc;
+
+    @ApiModelProperty("선조치내용")  // Y VARCHAR2(256)
+    @JsonProperty("bef_act_desc")
+    private String befActDesc;
+
+    @ApiModelProperty("기타비고")  // Y VARCHAR2(256)
+    @JsonProperty("etc_rmk")
+    private String etcRmk;
+
+    @ApiModelProperty("사용여부")  // Y CHAR(1)
+    @JsonProperty("use_yn")
+    private String useYn;
+
+    @ApiModelProperty("조치건수")  // Y CHAR(1)
+    @JsonProperty("act_cnt")
+    private String actCnt;
+
+
+}

+ 9 - 25
src/main/java/com/its/op/entity/its/facility/TbFcltFail.java

@@ -1,6 +1,8 @@
 package com.its.op.entity.its.facility;
 
 import com.its.op.dto.its.facility.TbFcltFailDto;
+import com.its.op.global.CodeManager;
+import com.its.op.global.FcltCodeManager;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -122,32 +124,14 @@ public class TbFcltFail implements Serializable {
                 .build();
 
         if (this.fclt != null) {
-            // TODO
-            // 시설물 대분류, 시설물 군분류
+            dto.setFcltGroup(CodeManager.getCodeDescShort("FMITS", this.fclt.getFcltType()));
         }
-        //        @ApiModelProperty("장애 발생 구분코드 설명")
-//        @JsonProperty("fail_ocrr_desc")    // FAIL_OCRR_CD
-//        private String failOcrrDesc;
-//
-//        @ApiModelProperty("진행상태-장애조치('FSTEP') 설명")
-//        @JsonProperty("step_desc")    // STEP_CD
-//        private String stepDesc;
-//
-//        @ApiModelProperty("장애등록구분('FREG') 설명")
-//        @JsonProperty("fail_reg_desc")    // FAIL_REG_CD
-//        private String failRegDesc;
-//
-//        @ApiModelProperty("장애등급구분('FLVL') 설명")
-//        @JsonProperty("fail_levl_desc")    // FAIL_LEVL_CD
-//        private String failLevlDesc;
-//
-//        @ApiModelProperty("날씨('FWTHR') 설명")
-//        @JsonProperty("wthr_desc")    // WTHR_CD
-//        private String wthrDesc;
-//
-//        @ApiModelProperty("사용여부 설명")
-//        @JsonProperty("use_desc")    // USE_YN
-//        private String useDesc;
+
+        dto.setFailOcrrDesc(FcltCodeManager.getFailOcrrTypeName(this.failOcrrCd));
+        dto.setStepDesc(CodeManager.getCodeDescShort("FSTEP", this.stepCd));
+        dto.setFailRegDesc(CodeManager.getCodeDescShort("FREG", this.failRegCd));
+        dto.setFailLevlDesc(CodeManager.getCodeDescShort("FLVL", this.failLevlCd));
+        dto.setWthrDesc(CodeManager.getCodeDescShort("FWTHR", this.wthrCd));
 
         return dto;
     }

+ 7 - 2
src/main/java/com/its/op/entity/its/facility/TbFcltFailAct.java

@@ -1,6 +1,8 @@
 package com.its.op.entity.its.facility;
 
 import com.its.op.dto.its.facility.TbFcltFailActDto;
+import com.its.op.global.CodeManager;
+import com.its.op.global.FcltCodeManager;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;
@@ -111,8 +113,11 @@ public class TbFcltFailAct implements Serializable {
                 .useYn(this.useYn)
                 .build();
 
-        // TODO
-        // 코드 설명 추가
+        dto.setStepDesc(CodeManager.getCodeDescShort("FSTEP", this.stepCd));
+        dto.setFailOcrrDesc(FcltCodeManager.getFailOcrrTypeName(this.failOcrrCd));
+        dto.setFailDesc(FcltCodeManager.getFailTypeName(this.failCd));
+        dto.setFailActDesc(FcltCodeManager.getFailTypeActName(this.failActCd));
+
         return dto;
     }
 

+ 5 - 0
src/main/java/com/its/op/entity/its/facility/TbFcltInfr.java

@@ -170,6 +170,11 @@ public class TbFcltInfr implements Serializable {
         if (this.subUser != null) {
             dto.setSubUserNm(this.subUser.getName());
         }
+        String fcltGroup = CodeManager.getCodeDescShort("FMITS", this.fcltType);
+//        if (CodeManager.defUnknownDesc.equals(fcltGroup)) {
+//            fcltGroup = CodeManager.getCodeDescShort("FMS", this.fcltType);
+//        }
+        dto.setFcltGroup(fcltGroup);
         return dto;
     }
 

+ 87 - 0
src/main/java/com/its/op/global/FcltCodeManager.java

@@ -0,0 +1,87 @@
+package com.its.op.global;
+
+import com.its.op.dto.its.facility.TbFcltFailOcrrTypeDto;
+import com.its.op.dto.its.facility.TbFcltFailTypeActDto;
+import com.its.op.dto.its.facility.TbFcltFailTypeDto;
+import com.its.op.service.its.facility.TbFcltFailOcrrTypeService;
+import com.its.op.service.its.facility.TbFcltFailTypeActService;
+import com.its.op.service.its.facility.TbFcltFailTypeService;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Slf4j
+@RequiredArgsConstructor
+@Getter
+@Component
+public class FcltCodeManager {
+
+    // 시설물 장애 발생 구분
+    private final TbFcltFailOcrrTypeService failOcrrTypeService;
+    // 시설물 장애 유형
+    private final TbFcltFailTypeService failTypeService;
+    // 시설물 장애 유형별 조치
+    private final TbFcltFailTypeActService failTypeActService;
+
+    public static final String defFcltCodeUnknown = "UNKNOWN";
+
+    private static final ConcurrentHashMap<String, TbFcltFailOcrrTypeDto> codeFailOcrrType = new ConcurrentHashMap<>();
+    private static final ConcurrentHashMap<String, TbFcltFailTypeDto> codeFailType = new ConcurrentHashMap<>();
+    private static final ConcurrentHashMap<String, TbFcltFailTypeActDto> codeFailTypeAct = new ConcurrentHashMap<>();
+    //private static final ConcurrentHashMap<String, HashMap<String, Code>> codes = new ConcurrentHashMap<>();
+
+    @PostConstruct
+    void init() {
+        load();
+    }
+
+    public void load() {
+        loadAllCode();
+    }
+
+    public void loadAllCode() {
+        List<TbFcltFailOcrrTypeDto> codeList1 = this.failOcrrTypeService.findAll();
+        for (TbFcltFailOcrrTypeDto code : codeList1) {
+            codeFailOcrrType.put(code.getFailOcrrCd(), code);
+        }
+
+        List<TbFcltFailTypeDto> codeList2 = this.failTypeService.findAll();
+        for (TbFcltFailTypeDto code : codeList2) {
+            codeFailType.put(code.getFailCd(), code);
+        }
+
+        List<TbFcltFailTypeActDto> codeList3 = this.failTypeActService.findAll();
+        for (TbFcltFailTypeActDto code : codeList3) {
+            codeFailTypeAct.put(code.getFailActCd(), code);
+        }
+    }
+
+    public static String getFailOcrrTypeName(String CODE) {
+        TbFcltFailOcrrTypeDto code = codeFailOcrrType.get(CODE);
+        if (code != null) {
+            return code.getFailOcrrCdNm();
+        }
+        return defFcltCodeUnknown;
+    }
+
+    public static String getFailTypeName(String CODE) {
+        TbFcltFailTypeDto code = codeFailType.get(CODE);
+        if (code != null) {
+            return code.getFailCdNm();
+        }
+        return defFcltCodeUnknown;
+    }
+
+    public static String getFailTypeActName(String CODE) {
+        TbFcltFailTypeActDto code = codeFailTypeAct.get(CODE);
+        if (code != null) {
+            return code.getFailActCdNm();
+        }
+        return defFcltCodeUnknown;
+    }
+}

+ 32 - 0
src/main/java/com/its/op/service/its/facility/FcltReportService.java

@@ -0,0 +1,32 @@
+package com.its.op.service.its.facility;
+
+import com.its.op.dao.mapper.its.facility.FcltFailActMapper;
+import com.its.op.dto.its.facility.FcltFailActDto;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@RequiredArgsConstructor
+@Service
+public class FcltReportService {
+
+    private final FcltFailActMapper fcltFailActMapper;
+
+    /**
+     * 장애처리실적 조회
+     * @param fromDt
+     * @param toDt
+     * @return
+     */
+    public List<FcltFailActDto> findAllFcltFailAct(String fromDt, String toDt) {
+        Map<String, String> param = new HashMap<>();
+        param.put("FROM_DT", fromDt);
+        param.put("TO_DT", toDt);
+        return this.fcltFailActMapper.findAllFcltFailAct(param);
+    }
+}

+ 0 - 2
src/main/java/com/its/op/service/its/facility/TbFcltFailService.java

@@ -187,7 +187,6 @@ public class TbFcltFailService {
             data = this.repo.findListContinuous(fromDay + "000000", toDay + "235959");
         }
         for (TbFcltFail entity : data) {
-            // TODO:2023
             result.add(entity.toDto());
         }
         return result;
@@ -212,7 +211,6 @@ public class TbFcltFailService {
             data = this.repo.findListTypeContinuous(fcltType, fromDay + "000000", toDay + "235959");
         }
         for (TbFcltFail entity : data) {
-            // TODO:2023
             result.add(entity.toDto());
         }
         return result;

+ 4 - 1
src/main/java/com/its/op/service/its/facility/TbFcltSttsErrorHsService.java

@@ -38,7 +38,6 @@ public class TbFcltSttsErrorHsService {
      */
     @Transactional(readOnly = true)
     public List<FcltSttsErrorDto> findAllFcltSttsErrorList(String type, String fromDt, String toDt) throws NoSuchElementException {
-        //TODO:2023
         if (("WCAM").equalsIgnoreCase(type)) {
             return findAllStatisticsCommErrByDateRangeResult(this.wcamSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), type);
         }
@@ -62,16 +61,20 @@ public class TbFcltSttsErrorHsService {
         }
         else
         if (("ALL").equalsIgnoreCase(type)) {
+            List<FcltSttsErrorDto> wcamList = findAllStatisticsCommErrByDateRangeResult(this.wcamSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), "WCAM");
             List<FcltSttsErrorDto> cctvList = findAllStatisticsCommErrByDateRangeResult(this.cctvSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), "CCTV");
             List<FcltSttsErrorDto> vmsList = findAllStatisticsCommErrByDateRangeResult(this.vmsSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), "VMS");
             List<FcltSttsErrorDto> vdsList = findAllStatisticsCommErrByDateRangeResult(this.vdsSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), "VDS");
             List<FcltSttsErrorDto> rseList = findAllStatisticsCommErrByDateRangeResult(this.rseSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), "DSRC");
+            List<FcltSttsErrorDto> ccamList = findAllStatisticsCommErrByDateRangeResult(this.ccamSttsHsRepo.findAllSttsErrorByDateRange(fromDt, toDt), "CCAM");
 
             final List<FcltSttsErrorDto> result = new ArrayList<>();
+            result.addAll(wcamList);
             result.addAll(cctvList);
             result.addAll(vmsList);
             result.addAll(vdsList);
             result.addAll(rseList);
+            result.addAll(ccamList);
             return result;
         }
         else {

+ 43 - 0
src/main/resources/mybatis/mapper/its/facility/FcltFailActMapper.xml

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.its.op.dao.mapper.its.facility.FcltFailActMapper">
+
+    <select id="findAllFcltFailAct" parameterType="java.util.HashMap" resultType="com.its.op.dto.its.facility.FcltFailActDto">
+        SELECT X.FAIL_NO AS failNo,
+               X.REG_DT AS regDt,
+               X.FCLT_NMBR AS fcltNmbr,
+               Y.FCLT_TYPE AS fcltType,
+               Y.FCLT_ID AS fcltId,
+               Y.FCLT_LCTN AS fcltLctn,
+               X.FAIL_OCRR_CD AS failOcrrCd,
+               X.SUBJ_NMBR AS subjNmbr,
+               X.FIND_MAN AS findMan,
+               X.STR_DT AS strDt,
+               X.END_DT AS endDt,
+               X.STEP_CD AS stepCd,
+               fn_codeName('FSTEP', X.STEP_CD) AS stepDesc,
+               X.FAIL_NM AS failNm,
+               X.FAIL_REG_CD AS failRegCd,
+               fn_codeName('FREG', X.FAIL_REG_CD) AS failRegDesc,
+               X.FAIL_LEVL_CD AS failLevlCd,
+               fn_codeName('FLVL', X.FAIL_LEVL_CD) AS failLevlDesc,
+               X.WTHR_CD AS wthrCd,
+               X.FAIL_DESC AS failDesc,
+               X.BEF_ACT_DESC AS befActDesc,
+               X.ETC_RMK AS etcRmk,
+               X.USE_YN AS useYn,
+               NVL(Z.ACT_CNT, 0) AS actCnt
+        FROM TB_FCLT_FAIL X
+        LEFT JOIN TB_FCLT_INFR Y
+               ON X.FCLT_NMBR = Y.FCLT_NMBR
+        LEFT OUTER JOIN (SELECT FAIL_NO, COUNT(1) AS ACT_CNT
+                          FROM TB_FCLT_FAIL_ACT
+                          WHERE REG_DT BETWEEN #{FROM_DT} AND #{TO_DT}
+                          GROUP BY FAIL_NO) Z
+                     ON X.REG_DT BETWEEN #{FROM_DT} AND #{TO_DT}
+                    AND X.USE_YN = 'Y'
+                    AND X.FAIL_NO = Z.FAIL_NO
+    </select>
+
+</mapper>