From 7f6c83c61fb896384b7122f852243a7ef1f1910a Mon Sep 17 00:00:00 2001 From: "DESKTOP-MAVEOS0\\lmh32" Date: Wed, 10 May 2023 17:09:23 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=91=EC=97=85=20=EC=A4=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/sysMgt/views/WorkState.vue | 10 +- .../co/uplus/ez/api/comm/FileServiceImpl.java | 105 ++++++++++++++++++ .../uplus/ez/api/sysMgt/SysMgtController.java | 2 +- .../co/uplus/ez/api/sysMgt/SysMgtService.java | 58 +++++++++- .../ez/api/sysMgt/dto/SetWorkStateReqDto.java | 14 +++ 5 files changed, 180 insertions(+), 9 deletions(-) create mode 100644 src/main/java/kr/co/uplus/ez/api/comm/FileServiceImpl.java create mode 100644 src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SetWorkStateReqDto.java diff --git a/frontend/src/modules/sysMgt/views/WorkState.vue b/frontend/src/modules/sysMgt/views/WorkState.vue index 7a83ab4..ae0708b 100644 --- a/frontend/src/modules/sysMgt/views/WorkState.vue +++ b/frontend/src/modules/sysMgt/views/WorkState.vue @@ -36,9 +36,9 @@
- + - +
@@ -132,8 +132,10 @@ export default { fnSaveTxt(){ let params = { startDate : moment(this.startDate).format('YYYY-MM-DD'), - startTime : this.startTime, - endTime : this.endTime, + startTimeT : this.startTime.HH, + startTimeM : this.startTime.mm, + endTimeT : this.endTime.HH, + endTimeM : this.endTime.mm, state : this.state, } sysMgtApi.setWorkState(params); diff --git a/src/main/java/kr/co/uplus/ez/api/comm/FileServiceImpl.java b/src/main/java/kr/co/uplus/ez/api/comm/FileServiceImpl.java new file mode 100644 index 0000000..728d8b9 --- /dev/null +++ b/src/main/java/kr/co/uplus/ez/api/comm/FileServiceImpl.java @@ -0,0 +1,105 @@ +package kr.co.uplus.ez.api.comm; + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.stream.Stream; + +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; +import org.springframework.util.FileSystemUtils; +import org.springframework.web.multipart.MultipartFile; + +import kr.co.uplus.ez.api.comm.FileService; + +@Service +public class FileServiceImpl implements FileService { + // @Value("${spring.servlet.multipart.location}") + private String uploadPath = "/efs/admin"; + + @Override + public void init() { + try { + Files.createDirectories(Paths.get(uploadPath)); + + } catch (IOException e) { + throw new RuntimeException("폴더 생성 실패"); + } + } + + @Override + public void store(MultipartFile file) { + try { + if (file.isEmpty()) { + throw new Exception("빈 파일입니다."); + } + + Path root = Paths.get(uploadPath); + + if (!Files.exists(root)) { + init(); + } + + try (InputStream inputStream = file.getInputStream()) { + Files.copy(inputStream, root.resolve( + file.getOriginalFilename()), StandardCopyOption.REPLACE_EXISTING + ); + + } catch (Exception e) { + throw new RuntimeException("파일을 저장할 수 없습니다. Error: " + e.getMessage()); + } + + } catch (Exception e) { + throw new RuntimeException("파일을 저장할 수 없습니다. Error: " + e.getMessage()); + } + } + + @Override + public Stream loadAll() { + try { + Path root = Paths.get(uploadPath); + return Files.walk(root, 1).filter(path -> !path.equals(root)); + + } catch (IOException e) { + throw new RuntimeException("파일 읽기 실패", e); + } + } + + @Override + public Path load(String filename) { + return Paths.get(uploadPath).resolve(filename); + } + + @Override + 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); + } + } + + @Override + public void deleteAll() { + FileSystemUtils.deleteRecursively(Paths.get(uploadPath).toFile()); + } + + @Override + public void deleteFile(String filename) { + FileSystemUtils.deleteRecursively(Paths.get(uploadPath + "\\" + filename).toFile()); + } +} 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 d29774d..b239ce8 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 @@ -428,7 +428,7 @@ public class SysMgtController { @RequestMapping(value = "/setWorkState", method = {RequestMethod.POST}) @ResponseBody - public SetWorkStateResDto setWorkState(@RequestBody @Valid Object setWorkParam, BindingResult bindingResult) { + public SetWorkStateResDto setWorkState(@RequestBody @Valid SetWorkStateReqDto setWorkParam, BindingResult bindingResult) { if (validComponents.validParameter(bindingResult)) { return new SetWorkStateResDto(ApiResponseCode.CM_PARAMETER_ERROR); 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 f854fef..9723d83 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 @@ -15,8 +15,13 @@ import org.slf4j.Logger; 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.stereotype.Service; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -38,6 +43,9 @@ public class SysMgtService { @Autowired FileService fileService; + + // 파일위치 + @Value("${hubeasy_file_info.work-location}") private String dirWorkState; /** * date : 2022. 4. 25. @@ -530,12 +538,54 @@ public class SysMgtService { return new NotiListResDto(ApiResponseCode.SUCCESS, notiListRes); } - public SetWorkStateResDto setWorkState(Object setWorkParam) { + public SetWorkStateResDto setWorkState(SetWorkStateReqDto setWorkParam) { + + File file = new File("C:\\efs\\home\\workState\\workStatefile.txt"); + + String[] workParamArr = setWorkParam.getStartDate().split("-"); + + String year = ""; + String month = ""; + String day = ""; + + //1.파일 값 셋팅 + String setWorkState = ""; + + setWorkState += setWorkParam.getState() + "@"; + setWorkState += workParamArr[0] + "@"; + setWorkState += workParamArr[1] + "@"; + setWorkState += workParamArr[2] + "@"; + setWorkState += setWorkParam.getStartTimeT() + "@"; + setWorkState += setWorkParam.getStartTimeM() + "@"; + setWorkState += setWorkParam.getEndTimeT() + "@"; + setWorkState += setWorkParam.getEndTimeM(); + + + try { + //1. workState 파일이 없다면? 만들어라 + if(!file.exists()) { + file.createNewFile(); + } + + //2. Buffer를 사용해서 File에 write할 수 있는 BufferedWriter 생성 + FileWriter fw = new FileWriter(file); + BufferedWriter writer = new BufferedWriter(fw); + + logger.debug("setWorkString={}",setWorkState); + + //3. 파일에 쓰기 + writer.write(setWorkState); + + //4. Buffer + writer.close(); + + + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } logger.debug("setWorkParam={}",setWorkParam); - - return new SetWorkStateResDto(ApiResponseCode.SUCCESS); } - } diff --git a/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SetWorkStateReqDto.java b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SetWorkStateReqDto.java new file mode 100644 index 0000000..15e409b --- /dev/null +++ b/src/main/java/kr/co/uplus/ez/api/sysMgt/dto/SetWorkStateReqDto.java @@ -0,0 +1,14 @@ +package kr.co.uplus.ez.api.sysMgt.dto; + +import lombok.Data; + +@Data +public class SetWorkStateReqDto { + + String startDate; + String startTimeT; + String startTimeM; + String endTimeT; + String endTimeM; + String state; +}