From 55d4685d08e51e91966f5fb0a383e39a91e0f4b7 Mon Sep 17 00:00:00 2001 From: won503 Date: Mon, 15 May 2023 11:26:12 +0900 Subject: [PATCH] =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=EC=A0=90?= =?UTF-8?q?=EA=B2=80=20=EC=9D=B4=EB=A0=A5=EC=A1=B0=ED=9A=8C=20back?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/kr/co/uplus/ez/WebApplication.java | 4 +- .../uplus/ez/api/sysMgt/SysMgtController.java | 14 ++ .../co/uplus/ez/api/sysMgt/SysMgtMapper.java | 3 + .../co/uplus/ez/api/sysMgt/SysMgtService.java | 144 ++++++++++++++++++ .../uplus/ez/api/sysMgt/dto/SvcCheckList.java | 34 +++++ .../ez/api/sysMgt/dto/SvcCheckListReqDto.java | 21 +++ .../ez/api/sysMgt/dto/SvcCheckListRes.java | 17 +++ .../ez/api/sysMgt/dto/SvcCheckListResDto.java | 31 ++++ 8 files changed, 266 insertions(+), 2 deletions(-) create mode 100644 src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckList.java create mode 100644 src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListReqDto.java create mode 100644 src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListRes.java create mode 100644 src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListResDto.java diff --git a/src/main/java/kr/co/uplus/ez/WebApplication.java b/src/main/java/kr/co/uplus/ez/WebApplication.java index 8a5dfd5..3803a94 100644 --- a/src/main/java/kr/co/uplus/ez/WebApplication.java +++ b/src/main/java/kr/co/uplus/ez/WebApplication.java @@ -72,7 +72,7 @@ class CheckProcess implements Runnable { long maxMemory = runtime.maxMemory() / (1024 * 1024); long usedMemory = totalMemory - freeMemory; - log.info("{} Process Monitoring : maxMemory -> {}MB, totalMemory -> {}MB, usedMemory -> {}MB, freeMemory -> {}MB, ActiveThread -> {}", - PROC_NAME, maxMemory, totalMemory, usedMemory, freeMemory, Thread.activeCount()); +// log.info("{} Process Monitoring : maxMemory -> {}MB, totalMemory -> {}MB, usedMemory -> {}MB, freeMemory -> {}MB, ActiveThread -> {}", +// PROC_NAME, maxMemory, totalMemory, usedMemory, freeMemory, Thread.activeCount()); } } \ No newline at end of file diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtController.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtController.java index b239ce8..70f0020 100644 --- a/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtController.java +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtController.java @@ -436,4 +436,18 @@ public class SysMgtController { return sysService.setWorkState(setWorkParam); } + + /** + * data: 2023. 05.09. + * auth: won + * desc: 서비스 점검 이력 조회 + * @return + */ + @ApiOperation(value = "svcCheckList", notes = "서비스 점검 이력 조회") + @RequestMapping(value = "/svcCheckList", method = {RequestMethod.POST}) + @ResponseBody + public SvcCheckListResDto svcCheckList(@RequestBody @Valid SvcCheckListReqDto svcCheckListReqDto) { + return sysService.svcCheckLists(svcCheckListReqDto); + + } } diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtMapper.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtMapper.java index cf05c72..f666967 100644 --- a/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtMapper.java +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtMapper.java @@ -4,7 +4,9 @@ import kr.co.uplus.ez.api.comm.dto.BatchChkDto; import kr.co.uplus.ez.api.homeMgt.dto.NoticeListReqDto; import kr.co.uplus.ez.api.sysMgt.dto.*; import org.apache.ibatis.annotations.Mapper; +import org.springframework.core.io.Resource; +import java.nio.file.Path; import java.util.List; import java.util.Map; @@ -56,4 +58,5 @@ public interface SysMgtMapper { public List notiListSelect(NotiListReqDto notiListReqDto); int notiListSelectCnt(NotiListReqDto notiListReqDto); + } \ No newline at end of file diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtService.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtService.java index 9723d83..114270a 100644 --- a/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtService.java +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/SysMgtService.java @@ -16,17 +16,26 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; import org.springframework.stereotype.Service; +import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; +import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.net.MalformedURLException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import javax.validation.Valid; + @Service @Slf4j public class SysMgtService { @@ -46,6 +55,9 @@ public class SysMgtService { // 파일위치 @Value("${hubeasy_file_info.work-location}") private String dirWorkState; + + // @Value("${spring.servlet.multipart.location}") + private String uploadPath = "/efs/admin"; /** * date : 2022. 4. 25. @@ -588,4 +600,136 @@ public class SysMgtService { logger.debug("setWorkParam={}",setWorkParam); return new SetWorkStateResDto(ApiResponseCode.SUCCESS); } + + //파일 load + public Path load(String filename) { + return Paths.get(uploadPath).resolve(filename); + } + + public Resource loadAsResource(String filename) { + try { + Path file = load(filename); + Resource resource = new UrlResource(file.toUri()); + + if (resource.exists() || resource.isReadable()) { + return resource; + + } else { + throw new RuntimeException("파일을 읽을 수 없습니다. : " + filename); + } + + } catch (MalformedURLException e) { + throw new RuntimeException("파일을 읽을 수 없습니다. : " + filename, e); + } + } + + /** + * data: 2023. 05.09. + * auth: won + * desc: 서비스 점검 이력 조회 + * @return + */ + public SvcCheckListResDto svcCheckLists(@Valid SvcCheckListReqDto svcCheckListReqDto) { + SysMgtMapper sysmgtmapper = sqlSessionSlave.getMapper(SysMgtMapper.class); + + String workStateData = ""; + log.debug("1번 ={}",workStateData); + String [] workStateDataArr = new String[7]; + log.info("getWorkStateCheck START =========================================="); + + //CheckList >= svcCheckList + SvcCheckListRes svcCheckListRes = new SvcCheckListRes(); + List CheckList = new ArrayList<>(); + SvcCheckList svcCheckList = new SvcCheckList(); + + String nowPage = String.valueOf(svcCheckListReqDto.getPage()); + int totalCnt = 0; +// sysmgtmapper.svcCheckListSelectCnt(svcCheckListReqDto); + + try { + //파일 읽기 + Resource file = loadAsResource(dirWorkState); + BufferedReader reader = new BufferedReader(new FileReader(file.getFile())); + StringBuilder sb = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + sb.append(line); + } + reader.close(); + + if(null != sb.toString() && !"".equals(sb.toString())) { + workStateData = sb.toString(); + String[] Data = workStateData.split(","); + + //항목 객체에 값 셋팅 + for (int i = 0; i < Data.length; i++) { + workStateDataArr = Data[i].split("@"); + svcCheckList.setWorkState(workStateDataArr[0]); + svcCheckList.setYear(workStateDataArr[1]); + svcCheckList.setMonth(workStateDataArr[2]); + svcCheckList.setDay(workStateDataArr[3]); + svcCheckList.setStrtHour(workStateDataArr[4]); + svcCheckList.setStrtMin(workStateDataArr[5]); + svcCheckList.setEndHour(workStateDataArr[6]); + svcCheckList.setEndMin(workStateDataArr[7]); + + String Ymd = svcCheckList.getYear()+"-"+ svcCheckList.getMonth()+"-"+ svcCheckList.getDay(); + svcCheckList.setYmd(Ymd); + String StrHd = svcCheckList.getStrtHour()+" : "+ svcCheckList.getStrtMin(); + svcCheckList.setStrHd(StrHd); + String EndHd = svcCheckList.getEndHour()+" : "+ svcCheckList.getEndMin(); + svcCheckList.setEndHd(EndHd); + log.debug("aa번 ={}",svcCheckList.getYmd()); + log.debug("aa번 ={}",svcCheckList.getStrHd()); + log.debug("aa번 ={}",svcCheckList.getEndHd()); + log.debug("2번 ={}",svcCheckList); + + } + // 리스트에 항목 추가 + CheckList.add(svcCheckList); + log.debug("4번 ={}",CheckList.add(svcCheckList)); + totalCnt = Data.length; + int page = svcCheckListReqDto.getPage(); + int pagePerRows = svcCheckListReqDto.getPagePerRows(); + page = (page - 1) * pagePerRows; + svcCheckListReqDto.setPage(page); + + } + } catch (Exception e) { + // 파일 읽기 실패 시 "USE"로 설정하고 결과 반환 + log.error("WORK STATE READ FAIL : {}",e.getMessage(), e); + svcCheckList.setWorkState("USE"); + log.debug("5번 ={}",svcCheckList.getWorkState()); + + String[] Data = workStateData.split(","); + + totalCnt = Data.length; + int page = svcCheckListReqDto.getPage(); + int pagePerRows = svcCheckListReqDto.getPagePerRows(); + page = (page - 1) * pagePerRows; + svcCheckListReqDto.setPage(page); + return new SvcCheckListResDto(ApiResponseCode.SUCCESS); + } + + if (totalCnt == 0) { + svcCheckListRes.setList(new ArrayList<>()); + Paging paging = new Paging(); + paging.setPage(nowPage); + paging.setTotalCnt(String.valueOf(totalCnt)); + svcCheckListRes.setPaging(paging); + + return new SvcCheckListResDto(ApiResponseCode.CM_NOT_FOUND, svcCheckListRes); + } + + + +// CheckList = sysmgtmapper.svcCheckListSelect(svcCheckListReqDto); + svcCheckListRes.setList(CheckList); + Paging paging = new Paging(); + paging.setPage(nowPage); + paging.setTotalCnt(String.valueOf(totalCnt)); + svcCheckListRes.setPaging(paging); + + return new SvcCheckListResDto(ApiResponseCode.SUCCESS,svcCheckListRes); + } } diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckList.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckList.java new file mode 100644 index 0000000..f638763 --- /dev/null +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckList.java @@ -0,0 +1,34 @@ +package kr.co.uplus.ez.api.sysMgt.dto; + +import java.io.Serializable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@SuppressWarnings("serial") +@Data +public class SvcCheckList implements Serializable{ + + @ApiModelProperty(example = "상태변경", name = "상태변경", dataType = "String") + private String workState; + @ApiModelProperty(example = "년도", name = "년도", dataType = "String") + private String year; + @ApiModelProperty(example = "월", name = "월", dataType = "String") + private String month; + @ApiModelProperty(example = "날", name = "날", dataType = "String") + private String day; + @ApiModelProperty(example = "시작시각", name = "시작시각", dataType = "String") + private String strtHour; + @ApiModelProperty(example = "시작분", name = "시작분", dataType = "String") + private String strtMin; + @ApiModelProperty(example = "종료시각", name = "종료시각", dataType = "String") + private String endHour; + @ApiModelProperty(example = "종료분", name = "종료분", dataType = "String") + private String endMin; + @ApiModelProperty(example = "날짜", name = "날짜", dataType = "String") + private String ymd; + @ApiModelProperty(example = "시작시간", name = "시작시간", dataType = "String") + private String strHd; + @ApiModelProperty(example = "종료시간", name = "종료시간", dataType = "String") + private String endHd; +} diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListReqDto.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListReqDto.java new file mode 100644 index 0000000..f1b78cf --- /dev/null +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListReqDto.java @@ -0,0 +1,21 @@ +package kr.co.uplus.ez.api.sysMgt.dto; + +import java.io.Serializable; + +import javax.validation.constraints.NotNull; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@SuppressWarnings("serial") +@Data +public class SvcCheckListReqDto implements Serializable{ + + @NotNull + @ApiModelProperty(example = "50", name = "페이지당 조회할 목록 수", dataType = "String") + private int pagePerRows; + + @NotNull + @ApiModelProperty(example = "1", name = "현재 페이지", dataType = "int") + private int page; +} diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListRes.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListRes.java new file mode 100644 index 0000000..651b6f6 --- /dev/null +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListRes.java @@ -0,0 +1,17 @@ +package kr.co.uplus.ez.api.sysMgt.dto; + +import java.io.Serializable; +import java.util.List; + +import javax.validation.Valid; + +import kr.co.uplus.ez.common.data.Paging; +import lombok.Data; + +@SuppressWarnings("serial") +@Data +public class SvcCheckListRes implements Serializable{ + + private Paging paging; + private List list; +} diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListResDto.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListResDto.java new file mode 100644 index 0000000..0e52946 --- /dev/null +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SvcCheckListResDto.java @@ -0,0 +1,31 @@ +package kr.co.uplus.ez.api.sysMgt.dto; + +import java.io.Serializable; + +import kr.co.uplus.ez.common.data.ApiResponseCode; +import kr.co.uplus.ez.common.data.ResponseMessage; +import lombok.Data; + +@SuppressWarnings("serial") +@Data +public class SvcCheckListResDto extends ResponseMessage implements Serializable{ + +private SvcCheckListRes data; + + public SvcCheckListResDto() { + this.retCode = ApiResponseCode.SUCCESS.getResultCode(); + this.retMsg = ApiResponseCode.SUCCESS.getResultMsg(); + } + + public SvcCheckListResDto(ApiResponseCode returnStr) { + this.retCode = returnStr.getResultCode(); + this.retMsg = returnStr.getResultMsg(); + } + + public SvcCheckListResDto(ApiResponseCode returnStr, SvcCheckListRes data) { + this.retCode = returnStr.getResultCode(); + this.retMsg = returnStr.getResultMsg(); + this.data = data; + } + +}