refactor : 차세대 파일 연계 메소드 위치 변경
parent
996c4b473b
commit
f922ed7968
@ -0,0 +1,162 @@
|
|||||||
|
package kr.xit.fims.biz.ec.util;
|
||||||
|
|
||||||
|
import kr.xit.fims.biz.FimsConst;
|
||||||
|
import kr.xit.fims.biz.cmm.NtriDTO;
|
||||||
|
import kr.xit.fims.framework.biz.cmm.CmmFileDTO;
|
||||||
|
import kr.xit.fims.framework.support.exception.BizRuntimeException;
|
||||||
|
import kr.xit.fims.framework.support.util.Checks;
|
||||||
|
import kr.xit.fims.framework.support.util.DateUtils;
|
||||||
|
import kr.xit.fims.framework.support.util.FileUtils;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
public class NextGenInterfaceUtils {
|
||||||
|
/**
|
||||||
|
* 성공시 null, 실패시 NtriDTO.PhotoFileError return
|
||||||
|
* @param paramDTO
|
||||||
|
* @param layoutDTO
|
||||||
|
* @param fileDtlList
|
||||||
|
* @param interfaceId
|
||||||
|
* @param uploadRootPath
|
||||||
|
* @param sendFilePath
|
||||||
|
* @param tempPath
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static NtriDTO.PhotoFileError makeNtriInterfacePhotoZip(
|
||||||
|
final NtriDTO.PhotoSendRequest paramDTO,
|
||||||
|
final NtriDTO.CrackdownPhotoLayout layoutDTO,
|
||||||
|
final List<CmmFileDTO.FileDtl> fileDtlList,
|
||||||
|
final String interfaceId,
|
||||||
|
final String uploadRootPath,
|
||||||
|
final String sendFilePath,
|
||||||
|
final String tempPath) {
|
||||||
|
|
||||||
|
// TODO :: 시민신고는 DB 확정후 처리 반영 - 자치단체코드, 시스템코드 반영 필요
|
||||||
|
List<File> fileList = new ArrayList<>();
|
||||||
|
String tgtPath = "";
|
||||||
|
String curDt = DateUtils.getTodayAndNowTime("yyyyMMddHHmmss");
|
||||||
|
int index = 1;
|
||||||
|
// 파일에 정보를 기록하는 경우 true
|
||||||
|
boolean isFileCreate = (FimsConst.SendNtriPhotoInterfaceId.PARK_INTO_FILE.getCode().equals(interfaceId)
|
||||||
|
|| FimsConst.SendNtriPhotoInterfaceId.BUS_INSTALL_INTO_FILE.getCode().equals(interfaceId));
|
||||||
|
String fileNm = "";
|
||||||
|
|
||||||
|
// TODO :: 파일선별 필요
|
||||||
|
for (CmmFileDTO.FileDtl dtl : fileDtlList) {
|
||||||
|
if (Checks.isEmpty(tgtPath)) {
|
||||||
|
tgtPath = uploadRootPath + tempPath + "/" + dtl.getFilePath().split("/")[1];
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
if(isFileCreate) {
|
||||||
|
//[인터페이스ID]_[파일생성일시]_[자치단체코드]_순번
|
||||||
|
// TODO :: 파일명 fix 필요
|
||||||
|
fileNm = String.format("%s_%s_%s_%d.jpg", interfaceId, curDt, "3800001", index);
|
||||||
|
|
||||||
|
}else {
|
||||||
|
// TODO :: 파일명 fix 필요
|
||||||
|
//[위반일+시]_[차량번호]_01_[장비코드]_01_[위반장소]_1_0000000000_000_000_순번
|
||||||
|
fileNm = String.format(
|
||||||
|
"%s_%s_01_%s_01_%s_1_0000000000_000_000_%d.jpg",
|
||||||
|
layoutDTO.getCrdnYmdTime(),
|
||||||
|
layoutDTO.getVhrno().trim(),
|
||||||
|
"CCTV1",
|
||||||
|
layoutDTO.getCrdnPlc().trim(),
|
||||||
|
index);
|
||||||
|
}
|
||||||
|
// 대상폴더 미 존재시 생성
|
||||||
|
File tgtFile = org.apache.commons.io.FileUtils.getFile(tgtPath, fileNm);
|
||||||
|
|
||||||
|
org.apache.commons.io.FileUtils.copyFile(
|
||||||
|
org.apache.commons.io.FileUtils.getFile(uploadRootPath + dtl.getFilePath(), dtl.getFileId())
|
||||||
|
, tgtFile
|
||||||
|
, true
|
||||||
|
);
|
||||||
|
fileList.add(tgtFile);
|
||||||
|
|
||||||
|
// TODO :: 파일선별 필요
|
||||||
|
if(FimsConst.SendNtriPhotoInterfaceId.PARK_INTO_FILE.getCode().equals(interfaceId)
|
||||||
|
||FimsConst.SendNtriPhotoInterfaceId.PARK_FILE_NAME.getCode().equals(interfaceId)){
|
||||||
|
if(index == 4) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO :: 파일선별 필요
|
||||||
|
if(FimsConst.SendNtriPhotoInterfaceId.BUS_INSTALL_INTO_FILE.getCode().equals(interfaceId)
|
||||||
|
||FimsConst.SendNtriPhotoInterfaceId.BUS_INSTALL_FILE_NAME.getCode().equals(interfaceId)){
|
||||||
|
if(index == 7) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
fileList.forEach(f -> {
|
||||||
|
if(f.exists()) //noinspection ResultOfMethodCallIgnored
|
||||||
|
f.delete();
|
||||||
|
});
|
||||||
|
//FileUtils.removeDirectyAndFiles(tgtPath);
|
||||||
|
return new NtriDTO.PhotoFileError(paramDTO.getVhrno(),
|
||||||
|
String.format("%s%s", uploadRootPath + dtl.getFilePath(), dtl.getFileId()),
|
||||||
|
dtl.getOrginlFileNm());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Path path = null;
|
||||||
|
// 파일에 정보 파일을 사용할 경우에만 생성
|
||||||
|
if(isFileCreate) {
|
||||||
|
|
||||||
|
// TODO : 연계정보 생성 구체화
|
||||||
|
layoutDTO.setAtchFileCnt(String.valueOf(fileList.size()));
|
||||||
|
String layoutString = layoutDTO.toString(interfaceId);
|
||||||
|
|
||||||
|
byte[] bytes = layoutString.getBytes();
|
||||||
|
String infoTxt = String.format("/%s_%s_%s_0.txt", interfaceId, curDt, "3800001");
|
||||||
|
path = Paths.get(tgtPath + infoTxt);
|
||||||
|
try {
|
||||||
|
Files.write(path, bytes);
|
||||||
|
} catch (IOException e) {
|
||||||
|
fileList.forEach(f -> {
|
||||||
|
if (f.exists()) //noinspection ResultOfMethodCallIgnored
|
||||||
|
f.delete();
|
||||||
|
});
|
||||||
|
//FileUtils.removeDirectyAndFiles(tgtPath);
|
||||||
|
log.error(e.getLocalizedMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
throw BizRuntimeException.create(e.getLocalizedMessage());
|
||||||
|
}
|
||||||
|
fileList.add(path.toFile());
|
||||||
|
}
|
||||||
|
log.debug("{}", fileList);
|
||||||
|
|
||||||
|
/* [인테페이스아이디]_[파일생성일시]@[자치단체코드][시스템코드].ZIP */
|
||||||
|
FileUtils.compressZip(
|
||||||
|
fileList,
|
||||||
|
sendFilePath,
|
||||||
|
String.format("%s_%s@%s%s.ZIP", interfaceId, curDt, "3800001", "DCP"));
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 파일정보 파일을 생성한 경우 txt file 삭제
|
||||||
|
if(isFileCreate) Files.deleteIfExists(path);
|
||||||
|
fileList.forEach(f -> {
|
||||||
|
if(f.exists()) //noinspection ResultOfMethodCallIgnored
|
||||||
|
f.delete();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 작업파일 삭제
|
||||||
|
//FileUtils.removeDirectyAndFiles(tgtPath);
|
||||||
|
|
||||||
|
}catch (IOException ie){
|
||||||
|
log.error(ie.getLocalizedMessage());
|
||||||
|
ie.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue