From 36d88fc7e1c4a2724a5fe60eb90da4d851297b5a Mon Sep 17 00:00:00 2001 From: leebj Date: Fri, 20 Sep 2024 18:27:27 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A0=84=EA=B8=B0=EC=B0=A8,=EC=9E=A5=EC=95=A0?= =?UTF-8?q?=EC=9D=B8=20=EA=B3=BC=ED=83=9C=EB=A3=8C=EC=8B=9C=EC=8A=A4?= =?UTF-8?q?=ED=85=9C=20FTP=EC=A0=91=EC=86=8D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xit/fims/rent/service/bean/LsctBean.java | 97 +++++++++++++++++-- 1 file changed, 91 insertions(+), 6 deletions(-) diff --git a/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java b/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java index 15e7b567..afae7999 100644 --- a/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java +++ b/src/main/java/cokr/xit/fims/rent/service/bean/LsctBean.java @@ -2,7 +2,6 @@ package cokr.xit.fims.rent.service.bean; import java.io.IOException; import java.io.InputStream; -import java.util.ArrayList; import java.util.List; import javax.annotation.Resource; @@ -362,8 +361,10 @@ public class LsctBean extends AbstractBean { * 통합플랫폼으로 사용하지 안을 경우 렌트 소스만 사용하기 위해서 TB_CRDN, TB_PAYER에 직접 등록한다. * @param req 임대차계약 대장 조회 조건 * @return 임대차계약 대장 목록 + * @throws JSchException + * @throws NumberFormatException */ - public List getLsctList(RentQuery req) { + public List getLsctList(RentQuery req) throws Exception { // 기존 과태료 시스템에서 사용하던 암/복호화 함수 사용을 위해서.. XitAria crypto = new XitAria("xit-aria"); @@ -527,13 +528,97 @@ public class LsctBean extends AbstractBean { throw new RuntimeException("[F] 단속 부가 대장 등록 작업에 실패하였습니다."); // 예외를 발생시켜서 DB Rollback } - // 단속ID로 단속 파일 다운로드 - // 단속 파일 등록 - List fileInfoList = new ArrayList(); - // + ///////////////////////////////////////////////// + //FTP 서버 정보 조회 + DataObject main = mainList.get(iLoop); + DataObject ftpQuery = new DataObject() + .set("SGG_CD", main.string("MM_SGGCODE")) + .set("TASK_SE_CD", main.string("MM_TASKGB")); + DataObject storageServer = finSysFtpMapper.selectFtpInfo(ftpQuery); + + ///////////////////////////////////////////////// + //SFTP접속 + Session session = null; + JSch jsch = new JSch(); + Channel channel = null; + ChannelSftp channelSftp = null; + //세션객체 생성 + session = jsch.getSession("admin", "127.0.0.1", Integer.parseInt("22")); + session.setPassword("pass"); + + + //세션관련 설정정보 설정 + java.util.Properties config = new java.util.Properties(); + + //호스트 정보 검사하지 않는다. + config.put("StrictHostKeyChecking", "no"); + session.setConfig(config); + session.setTimeout(10000); //타임아웃 설정 + + //log.info("connect.. " + connIp); + System.out.println("connect.. "); + session.connect(); //접속 + channel = session.openChannel("sftp"); //sftp 채널 접속 + channel.connect(); + + channelSftp = (ChannelSftp) channel; + + + String remoteWorkPath = storageServer.string("REMOTE_WORK_PATH"); + channelSftp.cd(remoteWorkPath); + + //접속완료 + /////////////////////////////////////////////////////////////////// + boolean fileSearchEnd = false; + int i = 1; + while(!fileSearchEnd) { + /////////////////////////////////////////////// + // 단속ID로 단속 파일 다운로드 + + String i_char = ""; + + switch (i) { + case 1:i_char="A";break; + case 2:i_char="B";break; + case 3:i_char="C";break; + case 4:i_char="D";break; + } + + String remoteFileName = main.string("MM_CODE")+i_char+".JPG"; + String remoteFilePath = remoteWorkPath+remoteFileName; + InputStream is = channelSftp.get(remoteFilePath); + + if(is == null) { + fileSearchEnd = true; + continue; + } + + byte[] bytesOfFile = is.readAllBytes(); + is.close(); + + ///////////////////////////////////////////// + // 단속 파일 등록 + Relation rel = new FileInfo.Relation().setInfoType(Crdn.INF_TYPE).setInfoKey(crdn.getCrdnId()); + String originalFileName = remoteFileName; + DataHolder dataHolder = new FileInfo.DataHolder(rel, originalFileName, bytesOfFile); + List fileInfoList = new FileInfoFactory().createFileInfos(List.of(dataHolder)); + fileBean.create(fileInfoList); + + i++; + if(i >= 5) { + fileSearchEnd = true; + } + } + + ///////////////////////////// + //sftp연결종료 + session.disconnect(); + + } else { + // } } }