diff --git a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java index 97eceebd..1b81f9dc 100644 --- a/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java +++ b/src/main/java/cokr/xit/fims/sndb/service/bean/SndngBean.java @@ -1,12 +1,16 @@ package cokr.xit.fims.sndb.service.bean; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Component; -import cokr.xit.base.file.service.FileQuery; +import cokr.xit.base.file.FileInfo; import cokr.xit.base.file.service.bean.FileBean; import cokr.xit.base.user.service.bean.UserBean; import cokr.xit.fims.cmmn.CmmnUtil; @@ -1349,43 +1353,60 @@ public class SndngBean extends AbstractComponent { // 계도장(10,11), 사전통지서(01,02)에는 사진을 출력한다. if ("01,02,11,12".contains(sndngDtlInfo.string("SNDNG_SE_CD"))) { // 단속 첨부 파일 조회 - List fileList = fileBean.getFileList(new FileQuery().setInfoType(Crdn.INF_TYPE) - .setInfoKeys(sndngDtlInfo.string("CRDN_ID"))); + List fileInfo = fileBean.getFilesOf(Crdn.INF_TYPE, sndngDtlInfo.string("CRDN_ID")); - if (fileList.size() > 0) { - epostRcptDtl.setRecevPhotoCnt(String.valueOf(fileList.size())); // 사진장수 + if (fileInfo.size() > 0) { + epostRcptDtl.setRecevPhotoCnt(String.valueOf(fileInfo.size())); // 사진장수 // 사진파일명이 중복이 되면 안되다.. 중복을 피하기 위해 서버에 저장된 파일명으로 지정하였다. - for (int jLoop = 0; jLoop < fileList.size(); jLoop++) { - String strSeparator = ""; - String fileName = ""; - + for (int jLoop = 0; jLoop < fileInfo.size(); jLoop++) { // 서버 OS에 따라.. separator 지정. + String strSeparator = ""; // File.separator if (deptSggInfo.string("SRVR_OS").contains("Windows")) { strSeparator = "\\"; } else { strSeparator = "/"; } - if (jLoop == 0) { - fileName = fileList.get(jLoop).string("FILE_PATH"); - fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); + // 파일 명 + String fileName = ""; + fileName = fileInfo.get(jLoop).getPath(); + fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); + + try { + // 파일이 저장되는 경로 확인. file-job.conf 에서 확인. epost 전자우편 신청 전송 "attachmentDir" + File fPath = new File(new File("").getAbsolutePath() + "/files/interface/attachment/epost/"); + + // 폴더가 존재하는지 확인 후 폴더가 없다면 생성 + if (!fPath.exists()) { + fPath.mkdir(); + } + + // 파일 복사 + FileInputStream fInputStream = (FileInputStream) fileInfo.get(jLoop).getInputStream(); + FileOutputStream fOutputStream = new FileOutputStream(fPath + File.separator + fileName); + + byte[] buffer = new byte[1024]; + int length; + + while ((length = fInputStream.read(buffer)) > 0) { + fOutputStream.write(buffer, 0, length); + } + + fInputStream.close(); + fOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException("우편통합 발송 작업중 전자우편 단속 사진 등록에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback + } + if (jLoop == 0) { epostRcptDtl.setRecevPhotoFilename1(fileName); // 사진파일명1 } else if (jLoop == 1) { - fileName = fileList.get(jLoop).string("FILE_PATH"); - fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); - epostRcptDtl.setRecevPhotoFilename2(fileName); // 사진파일명2 } else if (jLoop == 2) { - fileName = fileList.get(jLoop).string("FILE_PATH"); - fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); - epostRcptDtl.setRecevPhotoFilename3(fileName); // 사진파일명3 } else if (jLoop == 3) { - fileName = fileList.get(jLoop).string("FILE_PATH"); - fileName = fileName.substring(fileName.lastIndexOf(strSeparator) + 1); - epostRcptDtl.setRecevPhotoFilename4(fileName); // 사진파일명4 } }