|
|
|
|
@ -47,8 +47,10 @@ public class DbPolling {
|
|
|
|
|
private final EpAnswerRepository epAnswerRepository;
|
|
|
|
|
private final CpMainEtc1Repository cpMainEtc1Repository;
|
|
|
|
|
private final EpMainEtc1Repository epMainEtc1Repository;
|
|
|
|
|
private final CpUserRepository cpUserRepository;
|
|
|
|
|
|
|
|
|
|
private final CpSggRepository cpSggRepository;
|
|
|
|
|
private final EpSggRepository epSggRepository;
|
|
|
|
|
private final CpImagesizeRepository cpImagesizeRepository;
|
|
|
|
|
private final EpImagesizeRepository epImagesizeRepository;
|
|
|
|
|
|
|
|
|
|
public SinmungoDto.SetInfo findSetInfo() {
|
|
|
|
|
|
|
|
|
|
@ -88,24 +90,27 @@ public class DbPolling {
|
|
|
|
|
List<CpAnswer> cpAnswerList = new ArrayList<>();
|
|
|
|
|
List<CpMainEtc1> cpMainEtc1List = new ArrayList<>();
|
|
|
|
|
List<String> insertCompleteFileNm = new ArrayList<>();
|
|
|
|
|
List<CpImagesize> cpImagesizeList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//mm_code 맥스값 가져오기
|
|
|
|
|
long maxMmCode = getMaxMmCode(setInfo, "CP");
|
|
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < cpList.size(); i++) {
|
|
|
|
|
for (int i = 1; i < cpList.size(); i++) {
|
|
|
|
|
SinmungoDto.SinmungoXml xml = cpList.get(i);
|
|
|
|
|
String sgpos = getSgPosByReason(setInfo, xml.getPeti_reason_l());
|
|
|
|
|
|
|
|
|
|
String sggCode = findSggCodeByDepCode(xml, "cp");
|
|
|
|
|
//mm_code 맥스값 가져오기
|
|
|
|
|
String mmCode = String.valueOf(getMaxMmCode(sggCode, "CP") + i);
|
|
|
|
|
|
|
|
|
|
//getCivil_no_c(<civil_no_c><![CDATA[2AA-2506-0697203]]></civil_no_c>) 기준으로 중복되는건 패스
|
|
|
|
|
boolean isExists = cpAnswerRepository.existsByAsJsnoM(xml.getCivil_no_c());
|
|
|
|
|
if (isExists) {continue;}
|
|
|
|
|
|
|
|
|
|
// CpMain
|
|
|
|
|
cpMainList.add(CpMain.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmSggcode(setInfo.getEpSetinfo().getIntValue1().toString())
|
|
|
|
|
.mmCode(mmCode)
|
|
|
|
|
.mmSggcode(sggCode)
|
|
|
|
|
.mmIngb("1")
|
|
|
|
|
.mmDate(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
.mmTime(DateTimePatternEnum.TIME_HHMM.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
@ -131,8 +136,8 @@ public class DbPolling {
|
|
|
|
|
|
|
|
|
|
// CpAnswer
|
|
|
|
|
cpAnswerList.add(CpAnswer.builder()
|
|
|
|
|
.asMmcode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.asSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
|
|
|
|
|
.asMmcode(mmCode)
|
|
|
|
|
.asSggcode(sggCode)
|
|
|
|
|
.asIngb(TakeSeCdEnum.findTakeSeCd(xml.getPeti_anc_code_v()))
|
|
|
|
|
.asJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
|
|
|
|
|
.asJsno(xml.getPeti_no_c())
|
|
|
|
|
@ -150,7 +155,7 @@ public class DbPolling {
|
|
|
|
|
|
|
|
|
|
// CpMainEtc1
|
|
|
|
|
cpMainEtc1List.add(CpMainEtc1.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmCode(mmCode)
|
|
|
|
|
.mmJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
|
|
|
|
|
.mmKey(xml.getInterface_seq_n())
|
|
|
|
|
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
|
|
|
|
|
@ -158,7 +163,26 @@ public class DbPolling {
|
|
|
|
|
|
|
|
|
|
insertCompleteFileNm.add(cpList.get(i).getFileName());
|
|
|
|
|
|
|
|
|
|
changeImgFileNmToMmcode(cpList, i, String.valueOf(maxMmCode + i));
|
|
|
|
|
changeImgFileNmToMmcode(cpList, i, mmCode);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(isVideoExists(xml)) {
|
|
|
|
|
cpImagesizeList.add(CpImagesize.builder()
|
|
|
|
|
.isMmcode(mmCode)
|
|
|
|
|
.isVideo(extractOnlyVideoFileSize(xml.getImgParsers()))
|
|
|
|
|
.build());
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
cpImagesizeList.add(CpImagesize.builder()
|
|
|
|
|
.isMmcode(mmCode)
|
|
|
|
|
.isImage1(sizeAtOrZero(xml.getImgParsers(), 0))
|
|
|
|
|
.isImage2(sizeAtOrZero(xml.getImgParsers(), 1))
|
|
|
|
|
.isImage3(sizeAtOrZero(xml.getImgParsers(), 2))
|
|
|
|
|
.isImage4(sizeAtOrZero(xml.getImgParsers(), 3))
|
|
|
|
|
.build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -171,6 +195,7 @@ public class DbPolling {
|
|
|
|
|
cpMainRepository.saveAll(cpMainList);
|
|
|
|
|
cpAnswerRepository.saveAll(cpAnswerList);
|
|
|
|
|
cpMainEtc1Repository.saveAll(cpMainEtc1List);
|
|
|
|
|
cpImagesizeRepository.saveAll(cpImagesizeList);
|
|
|
|
|
|
|
|
|
|
// 파일 백업
|
|
|
|
|
fileBackup(setInfo.getCpSetinfo(), cpList);
|
|
|
|
|
@ -185,22 +210,27 @@ public class DbPolling {
|
|
|
|
|
List<CpAnswer> cpAnswerList = new ArrayList<>();
|
|
|
|
|
List<CpMainEtc1> cpMainEtc1List = new ArrayList<>();
|
|
|
|
|
List<String> insertCompleteFileNm = new ArrayList<>();
|
|
|
|
|
List<CpImagesize> cpImagesizeList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//mm_code 맥스값 가져오기
|
|
|
|
|
long maxMmCode = getMaxMmCode(setInfo, "EP");
|
|
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < epList.size(); i++) {
|
|
|
|
|
for (int i = 1; i < epList.size(); i++) {
|
|
|
|
|
SinmungoDto.SinmungoXml xml = epList.get(i);
|
|
|
|
|
String sgpos = getSgPosByReason(setInfo, xml.getPeti_reason_l());
|
|
|
|
|
|
|
|
|
|
boolean isExists = epAnswerRepository.existsByAsJsnoM(xml.getCivil_no_c());
|
|
|
|
|
if (isExists) {continue;}
|
|
|
|
|
|
|
|
|
|
String sgpos = getSgPosByReason(setInfo, xml.getPeti_reason_l());
|
|
|
|
|
|
|
|
|
|
String sggCode = findSggCodeByDepCode(xml, "ep");
|
|
|
|
|
//mm_code 맥스값 가져오기
|
|
|
|
|
String mmCode = String.valueOf(getMaxMmCode(sggCode, "EP") + i);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cpMainList.add(CpMain.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmSggcode(setInfo.getEpSetinfo().getIntValue1().toString())
|
|
|
|
|
.mmCode(mmCode)
|
|
|
|
|
.mmSggcode(sggCode)
|
|
|
|
|
.mmIngb("1")
|
|
|
|
|
.mmDate(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
.mmTime(DateTimePatternEnum.TIME_HHMM.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
@ -221,13 +251,13 @@ public class DbPolling {
|
|
|
|
|
.mmOmcode("0")
|
|
|
|
|
.mmGpsX(getGpsByReason(xml.getPeti_reason_l(), "위도"))
|
|
|
|
|
.mmGpsY(getGpsByReason(xml.getPeti_reason_l(), "경도"))
|
|
|
|
|
.mmVideofilenm("Z.mp4")
|
|
|
|
|
.mmVideofilenm(videoFileName(xml.getImgParsers(), mmCode))
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
// CpAnswer
|
|
|
|
|
cpAnswerList.add(CpAnswer.builder()
|
|
|
|
|
.asMmcode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.asSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
|
|
|
|
|
.asMmcode(mmCode)
|
|
|
|
|
.asSggcode(sggCode)
|
|
|
|
|
.asIngb(TakeSeCdEnum.findTakeSeCd(xml.getPeti_anc_code_v()))
|
|
|
|
|
.asJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
|
|
|
|
|
.asJsno(xml.getPeti_no_c())
|
|
|
|
|
@ -245,7 +275,7 @@ public class DbPolling {
|
|
|
|
|
|
|
|
|
|
// CpMainEtc1
|
|
|
|
|
cpMainEtc1List.add(CpMainEtc1.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmCode(mmCode)
|
|
|
|
|
.mmJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
|
|
|
|
|
.mmKey(xml.getInterface_seq_n())
|
|
|
|
|
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
|
|
|
|
|
@ -253,7 +283,23 @@ public class DbPolling {
|
|
|
|
|
|
|
|
|
|
insertCompleteFileNm.add(epList.get(i).getFileName());
|
|
|
|
|
|
|
|
|
|
changeImgFileNmToMmcode(epList, i, String.valueOf(maxMmCode + i));
|
|
|
|
|
changeImgFileNmToMmcode(epList, i, mmCode);
|
|
|
|
|
|
|
|
|
|
if(isVideoExists(xml)) {
|
|
|
|
|
cpImagesizeList.add(CpImagesize.builder()
|
|
|
|
|
.isMmcode(mmCode)
|
|
|
|
|
.isVideo(extractOnlyVideoFileSize(xml.getImgParsers()))
|
|
|
|
|
.build());
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
cpImagesizeList.add(CpImagesize.builder()
|
|
|
|
|
.isMmcode(mmCode)
|
|
|
|
|
.isImage1(sizeAtOrZero(xml.getImgParsers(), 0))
|
|
|
|
|
.isImage2(sizeAtOrZero(xml.getImgParsers(), 1))
|
|
|
|
|
.isImage3(sizeAtOrZero(xml.getImgParsers(), 2))
|
|
|
|
|
.isImage4(sizeAtOrZero(xml.getImgParsers(), 3))
|
|
|
|
|
.build());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -266,6 +312,7 @@ public class DbPolling {
|
|
|
|
|
epMainRepository.saveAll(cpMainList);
|
|
|
|
|
epAnswerRepository.saveAll(cpAnswerList);
|
|
|
|
|
epMainEtc1Repository.saveAll(cpMainEtc1List);
|
|
|
|
|
epImagesizeRepository.saveAll(cpImagesizeList);
|
|
|
|
|
|
|
|
|
|
// 파일백업
|
|
|
|
|
fileBackup(setInfo.getEpSetinfo(), epList);
|
|
|
|
|
@ -290,15 +337,10 @@ public class DbPolling {
|
|
|
|
|
* MMCode 조회후 MAX값 리턴
|
|
|
|
|
* 없다면 0000000 으로 리턴
|
|
|
|
|
* */
|
|
|
|
|
private long getMaxMmCode(SinmungoDto.SetInfo setInfo, String db) {
|
|
|
|
|
private long getMaxMmCode(String sggCode, String db) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String prefix = null;
|
|
|
|
|
if(db.equals("CP")) {
|
|
|
|
|
prefix = setInfo.getCpSetinfo().getIntValue1() + Integer.toString(Year.now().getValue());
|
|
|
|
|
} else {
|
|
|
|
|
prefix = setInfo.getEpSetinfo().getIntValue1() + Integer.toString(Year.now().getValue());
|
|
|
|
|
}
|
|
|
|
|
String prefix = sggCode + Integer.toString(Year.now().getValue());
|
|
|
|
|
|
|
|
|
|
CpMain cpMainMax;
|
|
|
|
|
|
|
|
|
|
@ -386,7 +428,7 @@ public class DbPolling {
|
|
|
|
|
return LawGBEnum.UNKNOWN;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//비디오 파일 여부를 체크하고, 코드값을 리턴한다.
|
|
|
|
|
private String isVideoFile(SinmungoDto.SinmungoXml xml) {
|
|
|
|
|
return Stream.of(
|
|
|
|
|
xml.getPeti_file_path1_v(),
|
|
|
|
|
@ -399,10 +441,69 @@ public class DbPolling {
|
|
|
|
|
.anyMatch(path -> FileKind.codeFromFileName(path) == 2) ? "2" : "1";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//이미지 파일을 mmCode + abcd 를 붙여 변환한다.
|
|
|
|
|
private void changeImgFileNmToMmcode(List<SinmungoDto.SinmungoXml> eachList, int index, String mmcode) {
|
|
|
|
|
for(int i = 0; i < eachList.get(index).getImgParsers().size(); i++ ) {
|
|
|
|
|
char suffix = (char) ('A' + i); // A, B, C, D ...
|
|
|
|
|
eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+".jpg");
|
|
|
|
|
if(eachList.get(index).getImgParsers().get(i).getFileType() != 1) {
|
|
|
|
|
eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+".jpg");
|
|
|
|
|
} else eachList.get(index).getImgParsers().get(i).setFileName(mmcode+suffix+"Z.mp4");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 부과코드로 시군구 코드를 조회한다.
|
|
|
|
|
private String findSggCodeByDepCode(SinmungoDto.SinmungoXml xml, String dbType) {
|
|
|
|
|
String sggCode = null;
|
|
|
|
|
if(dbType.equals("CP")) sggCode = cpSggRepository.findBySgDepCode(xml.getPcd_dept_v()).getSgSggCode();
|
|
|
|
|
else sggCode = epSggRepository.findBySgDepCode(xml.getPcd_dept_v()).getSgSggCode();
|
|
|
|
|
return sggCode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 동적인 파일갯수의 사이즈 널처리.
|
|
|
|
|
// 널이면 0을 리턴한다.
|
|
|
|
|
private int sizeAtOrZero(List<SinmungoDto.ImgParser> parsers, int index) {
|
|
|
|
|
if (parsers == null || index < 0 || index >= parsers.size()) return 0;
|
|
|
|
|
|
|
|
|
|
SinmungoDto.ImgParser p = parsers.get(index);
|
|
|
|
|
if (parsers.get(index) == null) return 0;
|
|
|
|
|
Integer size = p.getFileSize();
|
|
|
|
|
if (size == null) return 0;
|
|
|
|
|
|
|
|
|
|
// int(10) 컬럼이라면 안전 변환
|
|
|
|
|
return (int) Math.min(size, Integer.MAX_VALUE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 비디오 유무확인
|
|
|
|
|
// 리스트에 비디오가 포함되어있으면 true 없으면 false를 리턴
|
|
|
|
|
private Boolean isVideoExists(SinmungoDto.SinmungoXml xml) {
|
|
|
|
|
|
|
|
|
|
if (xml == null || xml.getImgParsers() == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return xml.getImgParsers().stream()
|
|
|
|
|
.anyMatch(imgParser -> imgParser.getFileType() == 2);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private int extractOnlyVideoFileSize(List<SinmungoDto.ImgParser> imgs) {
|
|
|
|
|
for(SinmungoDto.ImgParser img : imgs){
|
|
|
|
|
if(img.getFileType() == 2) return img.getFileSize();
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 비디오 파일이면 mmCode + mp4를 붙여서 파일명을 리턴한다.
|
|
|
|
|
private String videoFileName(List<SinmungoDto.ImgParser> imgList, String mmCode) {
|
|
|
|
|
|
|
|
|
|
for(SinmungoDto.ImgParser item : imgList){
|
|
|
|
|
if(item.getFileType() == 1) {
|
|
|
|
|
return mmCode + "z.mp4";
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|