|
|
@ -23,7 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import kr.xit.fims.biz.FimsConst;
|
|
|
|
import kr.xit.fims.biz.FimsConst;
|
|
|
|
import kr.xit.fims.biz.ec.mapper.IEcCtznSttemntMapper;
|
|
|
|
import kr.xit.fims.biz.ec.mapper.IEcCtznSttemntMapper;
|
|
|
|
import kr.xit.fims.biz.ec.mapper.IEcNatlNewspaperMapper;
|
|
|
|
import kr.xit.fims.biz.ec.mapper.IEcNatlNewspaperMapper;
|
|
|
|
import kr.xit.fims.biz.ec.model.CtznSttemntDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.CtznStmtDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.NatlNewspaperRcvReqDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.NatlNewspaperRcvReqDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.NatlNewspaperRcvDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.NatlNewspaperRcvDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.NatlNewspaperRcvXmlDTO;
|
|
|
|
import kr.xit.fims.biz.ec.model.NatlNewspaperRcvXmlDTO;
|
|
|
@ -76,14 +76,12 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
public void saveEsbRvcParse(final NatlNewspaperRcvReqDTO dto) {
|
|
|
|
public void saveEsbRvcParse(final NatlNewspaperRcvReqDTO dto) {
|
|
|
|
String filePath = dto.getFilePath();
|
|
|
|
String filePath = dto.getFilePath();
|
|
|
|
AtomicInteger index = new AtomicInteger();
|
|
|
|
AtomicInteger index = new AtomicInteger();
|
|
|
|
// CmmFileMstDTO fstMstDTO = null;
|
|
|
|
|
|
|
|
// CmmFileDtlDTO pngDtlDTO = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dto.getXmlFileInfoList().forEach((fi) -> {
|
|
|
|
dto.getXmlFileInfoList().forEach((fi) -> {
|
|
|
|
// Receive XML File Parsing
|
|
|
|
// Receive XML File Parsing
|
|
|
|
NatlNewspaperRcvXmlDTO xmlDto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDTO.class, filePath+"/"+fi.getFileNm());
|
|
|
|
NatlNewspaperRcvXmlDTO xmlDto = XmlParseUtils.readXmlToObject(NatlNewspaperRcvXmlDTO.class, filePath+"/"+fi.getFileNm());
|
|
|
|
// XML 첨부파일 정보
|
|
|
|
// XML 첨부파일 정보
|
|
|
|
NatlNewspaperRcvXmlDTO.AppendFileInfoDTO appendFileDto = xmlDto.getAppendFileInfo();
|
|
|
|
NatlNewspaperRcvXmlDTO.ApndFileInfo appendFileDto = xmlDto.getAppendFileInfo();
|
|
|
|
// XML 첨부파일 수 : 위도 경도 .png 파일 포함(첨부파일중 가장 마지막 index)
|
|
|
|
// XML 첨부파일 수 : 위도 경도 .png 파일 포함(첨부파일중 가장 마지막 index)
|
|
|
|
int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
if(fileCnt == 1) throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "첨부된 파일이 부정확 합니다(위경도 파일은 필수 요소 입니다)");
|
|
|
|
if(fileCnt == 1) throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, "첨부된 파일이 부정확 합니다(위경도 파일은 필수 요소 입니다)");
|
|
|
@ -101,41 +99,32 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
//시민 신고 테이블 save
|
|
|
|
//시민 신고 테이블 save
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
CtznSttemntDTO ctznSttemntDTO = setCtznSttemntDTOFromRcvXml(xmlDto);
|
|
|
|
CtznStmtDTO ctznStmtDTO = setCtznSttemntDTOFromRcvXml(xmlDto);
|
|
|
|
ctznSttemntMapper.insertEcCtznSttemnt(ctznSttemntDTO);
|
|
|
|
ctznSttemntMapper.insertEcCtznSttemnt(ctznStmtDTO);
|
|
|
|
|
|
|
|
|
|
|
|
index.set(0);
|
|
|
|
index.set(0);
|
|
|
|
CmmFileDTO.FileMst fstMstDTO = null;
|
|
|
|
CmmFileDTO.FileMst fstMstDTO = null;
|
|
|
|
CmmFileDTO.FileDtl pngDtlDTO = null;
|
|
|
|
CmmFileDTO.FileDtl pngDtlDTO = null;
|
|
|
|
for(CtznSttemntDTO.CtznSttemntDetailDTO dtl : ctznSttemntDTO.getSttemntDetailDTOs()){
|
|
|
|
for(CtznStmtDTO.CtznStmtDtl dtl : ctznStmtDTO.getStmtDtlDTOs()){
|
|
|
|
ctznSttemntMapper.insertEcCtznSttemntDetail(dtl);
|
|
|
|
ctznSttemntMapper.insertEcCtznSttemntDetail(dtl);
|
|
|
|
|
|
|
|
|
|
|
|
// 단속건수가 1건인 경우 파일 전체 저장
|
|
|
|
// 단속건수가 1건인 경우 파일 전체 저장
|
|
|
|
if(ctznSttemntDTO.isSingle()) {
|
|
|
|
if(ctznStmtDTO.isSingle()) {
|
|
|
|
saveAllAppendFiles(xmlDto, appendFileDto, dtl, fileCnt);
|
|
|
|
saveAllAppendFiles(xmlDto, appendFileDto, dtl, fileCnt);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CtznStmtDTO.DupData dupDataDTO = ctznStmtDTO.getDupDataList().stream()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CtznSttemntDTO.DupDataDTO dupDataDTO = ctznSttemntDTO.getDupDataList().stream()
|
|
|
|
|
|
|
|
.filter(d -> Objects.equals(d.getSttemntDetailDTO().getVhcleNo(), dtl.getVhcleNo()))
|
|
|
|
.filter(d -> Objects.equals(d.getSttemntDetailDTO().getVhcleNo(), dtl.getVhcleNo()))
|
|
|
|
.findFirst()
|
|
|
|
.findFirst()
|
|
|
|
.get();
|
|
|
|
.get();
|
|
|
|
|
|
|
|
|
|
|
|
dtl.getIndexs().addAll(dupDataDTO.getIndexs());
|
|
|
|
dtl.getIndexs().addAll(dupDataDTO.getIndexs());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
// 첨부파일 저장
|
|
|
|
// 첨부파일 저장
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------
|
|
|
|
// 첨부파일이 있고, 단속사진 업로드가 끝나지 않은경우(단속사진중 마지막 1장은 위도/경도 파일(.png 필수)로 제외)
|
|
|
|
// 첨부파일이 있고, 단속사진 업로드가 끝나지 않은경우(단속사진중 마지막 1장은 위도/경도 파일(.png 필수)로 제외)
|
|
|
|
|
|
|
|
|
|
|
|
// if(fileCnt >= 2 && fileCnt - 1 >= index.get()) {
|
|
|
|
|
|
|
|
if(index.get() == 0) {
|
|
|
|
if(index.get() == 0) {
|
|
|
|
fstMstDTO = saveAppendFiles(appendFileDto, dtl, index.get(), fileCnt);
|
|
|
|
fstMstDTO = saveAppendFiles(appendFileDto, dtl, index.get(), fileCnt);
|
|
|
|
}else {
|
|
|
|
}else {
|
|
|
@ -153,35 +142,30 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
saveFstOverAppendFiles(appendFileDto, dtl, pngDtlDTO, index.get());
|
|
|
|
saveFstOverAppendFiles(appendFileDto, dtl, pngDtlDTO, index.get());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
index.addAndGet(1);
|
|
|
|
index.addAndGet(1);
|
|
|
|
// }
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void saveCtznSttemnt(final NatlNewspaperRcvReqDTO dto){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
@Transactional(readOnly = true)
|
|
|
|
@Transactional(readOnly = true)
|
|
|
|
public List<NatlNewspaperRcvDTO> findNatlNewspaers(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
|
|
|
public List<NatlNewspaperRcvDTO> findNatlNewspaers(final Map<String, Object> paraMap, final RowBounds rowBounds) {
|
|
|
|
return mapper.selectEcEsbInterfaces(paraMap, rowBounds);
|
|
|
|
return mapper.selectEcEsbInterfaces(paraMap, rowBounds);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* xml parsing
|
|
|
|
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param xmlDto
|
|
|
|
|
|
|
|
* @return
|
|
|
|
private CtznSttemntDTO setCtznSttemntDTOFromRcvXml(NatlNewspaperRcvXmlDTO xmlDto){
|
|
|
|
*/
|
|
|
|
CtznSttemntDTO dto = new CtznSttemntDTO();
|
|
|
|
//-------------------------------------------------------------------------------------------------------------
|
|
|
|
List<CtznSttemntDTO.CtznSttemntDetailDTO> dtlList = new ArrayList<>();
|
|
|
|
private CtznStmtDTO setCtznSttemntDTOFromRcvXml(NatlNewspaperRcvXmlDTO xmlDto){
|
|
|
|
|
|
|
|
CtznStmtDTO dto = new CtznStmtDTO();
|
|
|
|
|
|
|
|
List<CtznStmtDTO.CtznStmtDtl> dtlList = new ArrayList<>();
|
|
|
|
String reasonStr = xmlDto.getPetiReasonL();
|
|
|
|
String reasonStr = xmlDto.getPetiReasonL();
|
|
|
|
|
|
|
|
|
|
|
|
dto.setInterfaceSeqN(xmlDto.getInterfaceSeqN());
|
|
|
|
dto.setInterfaceSeqN(xmlDto.getInterfaceSeqN());
|
|
|
|
dto.setInsttCode(xmlDto.getAncCodeV());
|
|
|
|
dto.setInsttCode(xmlDto.getAncCodeV());
|
|
|
|
//TODO: 재정의 후 적용
|
|
|
|
|
|
|
|
dto.setSysCode(FimsConst.SysCode.PVS.getCode());
|
|
|
|
dto.setSysCode(FimsConst.SysCode.PVS.getCode());
|
|
|
|
dto.setCvplSe(xmlDto.getPetiGubunC());
|
|
|
|
dto.setCvplSe(xmlDto.getPetiGubunC());
|
|
|
|
dto.setCvplReqstNo(xmlDto.getPetiNoC());
|
|
|
|
dto.setCvplReqstNo(xmlDto.getPetiNoC());
|
|
|
@ -222,7 +206,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
.replaceAll("[: /]", "")
|
|
|
|
.replaceAll("[: /]", "")
|
|
|
|
.split(",");
|
|
|
|
.split(",");
|
|
|
|
|
|
|
|
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO dtlDto = new CtznSttemntDTO.CtznSttemntDetailDTO();
|
|
|
|
CtznStmtDTO.CtznStmtDtl dtlDto = new CtznStmtDTO.CtznStmtDtl();
|
|
|
|
//단속일시
|
|
|
|
//단속일시
|
|
|
|
dtlDto.setRegltDeTime(arrSrc[0]);
|
|
|
|
dtlDto.setRegltDeTime(arrSrc[0]);
|
|
|
|
|
|
|
|
|
|
|
@ -242,14 +226,14 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!dto.isSingle()) {
|
|
|
|
if(!dto.isSingle()) {
|
|
|
|
CtznSttemntDTO.DupDataDTO dupDto = new CtznSttemntDTO.DupDataDTO();
|
|
|
|
CtznStmtDTO.DupData dupDto = new CtznStmtDTO.DupData();
|
|
|
|
dupDto.setSttemntDetailDTO(dtlList.get(0));
|
|
|
|
dupDto.setSttemntDetailDTO(dtlList.get(0));
|
|
|
|
dupDto.getIndexs().add(0);
|
|
|
|
dupDto.getIndexs().add(0);
|
|
|
|
|
|
|
|
|
|
|
|
dto.getDupDataList().add(dupDto);
|
|
|
|
dto.getDupDataList().add(dupDto);
|
|
|
|
|
|
|
|
|
|
|
|
for (int idx = 1; idx < dtlList.size(); idx++) {
|
|
|
|
for (int idx = 1; idx < dtlList.size(); idx++) {
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO tgt = dtlList.get(idx);
|
|
|
|
CtznStmtDTO.CtznStmtDtl tgt = dtlList.get(idx);
|
|
|
|
int finalIdx = idx;
|
|
|
|
int finalIdx = idx;
|
|
|
|
AtomicBoolean isDup = new AtomicBoolean(false);
|
|
|
|
AtomicBoolean isDup = new AtomicBoolean(false);
|
|
|
|
dto.getDupDataList().forEach(dupData -> {
|
|
|
|
dto.getDupDataList().forEach(dupData -> {
|
|
|
@ -259,7 +243,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
if(!isDup.get()) {
|
|
|
|
if(!isDup.get()) {
|
|
|
|
CtznSttemntDTO.DupDataDTO ddto = new CtznSttemntDTO.DupDataDTO();
|
|
|
|
CtznStmtDTO.DupData ddto = new CtznStmtDTO.DupData();
|
|
|
|
ddto.setSttemntDetailDTO(tgt);
|
|
|
|
ddto.setSttemntDetailDTO(tgt);
|
|
|
|
ddto.getIndexs().add(idx);
|
|
|
|
ddto.getIndexs().add(idx);
|
|
|
|
|
|
|
|
|
|
|
@ -269,7 +253,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 단속일시 desc로 정렬 - 동일 차량인 경우 단속일시가 늦은것 남기기위해)
|
|
|
|
// 단속일시 desc로 정렬 - 동일 차량인 경우 단속일시가 늦은것 남기기위해)
|
|
|
|
dtlList = dtlList.stream()
|
|
|
|
dtlList = dtlList.stream()
|
|
|
|
.sorted(Comparator.comparing(CtznSttemntDTO.CtznSttemntDetailDTO::getRegltDeTime).reversed()).collect(
|
|
|
|
.sorted(Comparator.comparing(CtznStmtDTO.CtznStmtDtl::getRegltDeTime).reversed()).collect(
|
|
|
|
Collectors.toList());
|
|
|
|
Collectors.toList());
|
|
|
|
// 중복제거(동일 차량 번호중 단속일시가 가장 늦은것 pick)
|
|
|
|
// 중복제거(동일 차량 번호중 단속일시가 가장 늦은것 pick)
|
|
|
|
// 차량번호가 없는 경우가 존재하여 체크로직 추가
|
|
|
|
// 차량번호가 없는 경우가 존재하여 체크로직 추가
|
|
|
@ -331,68 +315,50 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
dtlDto.setVioltDtlsNm(str);
|
|
|
|
dtlDto.setVioltDtlsNm(str);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dto.setSttemntDetailDTOs(dtlList);
|
|
|
|
dto.setStmtDtlDTOs(dtlList);
|
|
|
|
|
|
|
|
|
|
|
|
return dto;
|
|
|
|
return dto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
private CmmFileDTO.FileMst saveAllAppendFiles(
|
|
|
|
* 첨부파일 전체 저장 - 단속자료 1건
|
|
|
|
|
|
|
|
* @param xmlDto
|
|
|
|
|
|
|
|
* @param appendFileDto
|
|
|
|
|
|
|
|
* @param sttemntDetailDTO
|
|
|
|
|
|
|
|
* @param fileCnt
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private void saveAllAppendFiles(
|
|
|
|
NatlNewspaperRcvXmlDTO xmlDto,
|
|
|
|
NatlNewspaperRcvXmlDTO xmlDto,
|
|
|
|
NatlNewspaperRcvXmlDTO.AppendFileInfoDTO appendFileDto,
|
|
|
|
NatlNewspaperRcvXmlDTO.ApndFileInfo appendFileDto,
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO sttemntDetailDTO,
|
|
|
|
CtznStmtDTO.CtznStmtDtl sttemntDetailDTO,
|
|
|
|
int fileCnt) {
|
|
|
|
int fileCnt) {
|
|
|
|
|
|
|
|
|
|
|
|
// 첨부 파일 생성
|
|
|
|
|
|
|
|
//int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
Class<?> clz = appendFileDto.getClass();
|
|
|
|
Class<?> clz = appendFileDto.getClass();
|
|
|
|
String dateStr = DateUtils.getToday("");
|
|
|
|
String makeDir = makeUploadPath();
|
|
|
|
dateStr = dateStr.substring(0,4) + "/" + dateStr.substring(4);
|
|
|
|
|
|
|
|
String makeDir = "/" + dateStr;
|
|
|
|
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
|
|
|
|
|
|
|
|
for (int idx = 0; idx < fileCnt; idx++) {
|
|
|
|
for (int idx = 0; idx < fileCnt; idx++) {
|
|
|
|
try {
|
|
|
|
getFileImage(appendFileDto, mfList, clz, makePath, idx+1);
|
|
|
|
|
|
|
|
|
|
|
|
Method method = clz.getMethod("getPetiFilePath" + (idx + 1) + "V", null);
|
|
|
|
|
|
|
|
String petiFileNm = (String)method.invoke(appendFileDto, null);
|
|
|
|
|
|
|
|
method = clz.getMethod("getApndfilcont" + (idx + 1), null);
|
|
|
|
|
|
|
|
String petiFileStr = (String)method.invoke(appendFileDto, null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 실제 저장할 파일명 생성후 파일 내용 저장
|
|
|
|
|
|
|
|
//String saveFileName = CommUtils.getStringFromUUID();
|
|
|
|
|
|
|
|
//CommUtils.saveFileFromBytes(saveFileName, makePath, Base64.decode(petiFileStr.getBytes()));
|
|
|
|
|
|
|
|
// 실제 저장된 파일명 set
|
|
|
|
|
|
|
|
//method = clz.getMethod("setPetiFileName" + (idx + 1), String.class);
|
|
|
|
|
|
|
|
//method.invoke(appendFileDto, saveFileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 원본 파일명으로 파일 생성후 파일 업로드
|
|
|
|
|
|
|
|
mfList.add(CommUtils.createMutipartFileFromBytes(petiFileNm, makePath, Base64.decode(petiFileStr.getBytes())));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//method.invoke(dto, StringUtils.cleanPath(makePath + mf.getOriginalFilename()));
|
|
|
|
|
|
|
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
|
|
|
|
|
|
|
e.getStackTrace();
|
|
|
|
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
cmmFileService.saveFiles(getFileMst(sttemntDetailDTO), mfList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
CmmFileDTO.FileMst fileMstDTO = new CmmFileDTO.FileMst();
|
|
|
|
|
|
|
|
fileMstDTO.setJobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode());
|
|
|
|
|
|
|
|
fileMstDTO.setFileJobId(sttemntDetailDTO.getInterfaceSeqN()+sttemntDetailDTO.getCtznSttemntDetailSn());
|
|
|
|
|
|
|
|
fileMstDTO.setUploadeJobPath(uploadNewsPaperPath);
|
|
|
|
|
|
|
|
fileMstDTO.setFileDirPath(FimsConst.FileDirDepth.DAY.getCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return cmmFileService.saveFiles(fileMstDTO, mfList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 단속자료 첨부파일 + png(위도/경도 사진) 저장
|
|
|
|
|
|
|
|
* 단속자료가 여러건일 경우 처음 단속자료 저장시 호출
|
|
|
|
|
|
|
|
* @param apndFileDTO
|
|
|
|
|
|
|
|
* @param stmtDtlDTO
|
|
|
|
|
|
|
|
* @param index
|
|
|
|
|
|
|
|
* @param fileCnt
|
|
|
|
|
|
|
|
* @return
|
|
|
|
|
|
|
|
*/
|
|
|
|
//TODO: 단속정보별 파일 저장 하도록 적용 필요 - 2건 단속자료면 1번은 1번 파일만, 2번은 2번 파일만
|
|
|
|
//TODO: 단속정보별 파일 저장 하도록 적용 필요 - 2건 단속자료면 1번은 1번 파일만, 2번은 2번 파일만
|
|
|
|
//TODO: 단속정보를 보여줄 때는 모든 이미지 정보 보여준다(insterfaceSeqN 별로 - 어느 DTL항목 파일인지는 당근 표시해야지!!!)
|
|
|
|
//TODO: 단속정보를 보여줄 때는 모든 이미지 정보 보여준다(insterfaceSeqN 별로 - 어느 DTL항목 파일인지는 당근 표시해야지!!!)
|
|
|
|
//TODO: .png는 각각 set - 파일 업로드는 1번만
|
|
|
|
//TODO: .png는 각각 set - 파일 업로드는 1번만
|
|
|
|
private CmmFileDTO.FileMst saveAppendFiles(
|
|
|
|
private CmmFileDTO.FileMst saveAppendFiles(
|
|
|
|
NatlNewspaperRcvXmlDTO.AppendFileInfoDTO apndFileDTO,
|
|
|
|
NatlNewspaperRcvXmlDTO.ApndFileInfo apndFileDTO,
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO stmtDtlDTO,
|
|
|
|
CtznStmtDTO.CtznStmtDtl stmtDtlDTO,
|
|
|
|
int index,
|
|
|
|
int index,
|
|
|
|
int fileCnt) {
|
|
|
|
int fileCnt) {
|
|
|
|
|
|
|
|
|
|
|
@ -400,33 +366,11 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
//int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
//int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
Class<?> clz = apndFileDTO.getClass();
|
|
|
|
Class<?> clz = apndFileDTO.getClass();
|
|
|
|
String dateStr = DateUtils.getToday("");
|
|
|
|
String makeDir = makeUploadPath();
|
|
|
|
dateStr = dateStr.substring(0,4) + "/" + dateStr.substring(4);
|
|
|
|
|
|
|
|
String makeDir = "/" + dateStr;
|
|
|
|
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
|
|
|
|
|
|
|
|
for(int idx : stmtDtlDTO.getIndexs()){
|
|
|
|
for(int idx : stmtDtlDTO.getIndexs()){
|
|
|
|
try {
|
|
|
|
getFileImage(apndFileDTO, mfList, clz, makePath, idx+1);
|
|
|
|
Method method = clz.getMethod("getPetiFilePath" + (idx + 1) + "V", null);
|
|
|
|
|
|
|
|
String petiFileNm = (String)method.invoke(apndFileDTO, null);
|
|
|
|
|
|
|
|
method = clz.getMethod("getApndfilcont" + (idx + 1), null);
|
|
|
|
|
|
|
|
String petiFileStr = (String)method.invoke(apndFileDTO, null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 실제 저장할 파일명 생성후 파일 내용 저장
|
|
|
|
|
|
|
|
//String saveFileName = CommUtils.getStringFromUUID();
|
|
|
|
|
|
|
|
//CommUtils.saveFileFromBytes(saveFileName, makePath, Base64.decode(petiFileStr.getBytes()));
|
|
|
|
|
|
|
|
// 실제 저장된 파일명 set
|
|
|
|
|
|
|
|
//method = clz.getMethod("setPetiFileName" + (idx + 1), String.class);
|
|
|
|
|
|
|
|
//method.invoke(appendFileDto, saveFileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 원본 파일명으로 파일 생성후 파일 업로드
|
|
|
|
|
|
|
|
mfList.add(CommUtils.createMutipartFileFromBytes(petiFileNm, makePath, Base64.decode(petiFileStr.getBytes())));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//method.invoke(dto, StringUtils.cleanPath(makePath + mf.getOriginalFilename()));
|
|
|
|
|
|
|
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
|
|
|
|
|
|
|
e.getStackTrace();
|
|
|
|
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try{
|
|
|
|
try{
|
|
|
@ -446,19 +390,21 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
e.getStackTrace();
|
|
|
|
e.getStackTrace();
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return cmmFileService.saveFiles(getFileMst(stmtDtlDTO), mfList);
|
|
|
|
CmmFileDTO.FileMst fileMstDTO = new CmmFileDTO.FileMst();
|
|
|
|
|
|
|
|
fileMstDTO.setJobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode());
|
|
|
|
|
|
|
|
fileMstDTO.setFileJobId(stmtDtlDTO.getInterfaceSeqN()+stmtDtlDTO.getCtznSttemntDetailSn());
|
|
|
|
|
|
|
|
fileMstDTO.setUploadeJobPath(uploadNewsPaperPath);
|
|
|
|
|
|
|
|
fileMstDTO.setFileDirPath(FimsConst.FileDirDepth.DAY.getCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return cmmFileService.saveFiles(fileMstDTO, mfList);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 단속자료 첨부파일 + png(위도/경도 사진) 저장
|
|
|
|
|
|
|
|
* png(위도/경도 사진) 은 최초 단속자료 저장시 업로드한 사진 사용
|
|
|
|
|
|
|
|
* @param apndFileDTO
|
|
|
|
|
|
|
|
* @param stmtDtlDTO
|
|
|
|
|
|
|
|
* @param pngFileDtlDto
|
|
|
|
|
|
|
|
* @param index
|
|
|
|
|
|
|
|
* @return
|
|
|
|
|
|
|
|
*/
|
|
|
|
private CmmFileDTO.FileMst saveFstOverAppendFiles(
|
|
|
|
private CmmFileDTO.FileMst saveFstOverAppendFiles(
|
|
|
|
final NatlNewspaperRcvXmlDTO.AppendFileInfoDTO apndFileDTO,
|
|
|
|
final NatlNewspaperRcvXmlDTO.ApndFileInfo apndFileDTO,
|
|
|
|
final CtznSttemntDTO.CtznSttemntDetailDTO stmtDtlDTO,
|
|
|
|
final CtznStmtDTO.CtznStmtDtl stmtDtlDTO,
|
|
|
|
final CmmFileDTO.FileDtl pngFileDtlDto,
|
|
|
|
final CmmFileDTO.FileDtl pngFileDtlDto,
|
|
|
|
int index) {
|
|
|
|
int index) {
|
|
|
|
|
|
|
|
|
|
|
@ -466,40 +412,22 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
//int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
//int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
Class<?> clz = apndFileDTO.getClass();
|
|
|
|
Class<?> clz = apndFileDTO.getClass();
|
|
|
|
String dateStr = DateUtils.getToday("");
|
|
|
|
String makeDir = makeUploadPath();
|
|
|
|
dateStr = dateStr.substring(0,4) + "/" + dateStr.substring(4);
|
|
|
|
|
|
|
|
String makeDir = "/" + dateStr;
|
|
|
|
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
|
|
|
|
|
|
|
|
for(int idx : stmtDtlDTO.getIndexs()){
|
|
|
|
for(int idx : stmtDtlDTO.getIndexs()){
|
|
|
|
try {
|
|
|
|
getFileImage(apndFileDTO, mfList, clz, makePath, idx+1);
|
|
|
|
Method method = clz.getMethod("getPetiFilePath" + (idx + 1) + "V", null);
|
|
|
|
|
|
|
|
String petiFileNm = (String)method.invoke(apndFileDTO, null);
|
|
|
|
|
|
|
|
method = clz.getMethod("getApndfilcont" + (idx + 1), null);
|
|
|
|
|
|
|
|
String petiFileStr = (String)method.invoke(apndFileDTO, null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 실제 저장할 파일명 생성후 파일 내용 저장
|
|
|
|
|
|
|
|
//String saveFileName = CommUtils.getStringFromUUID();
|
|
|
|
|
|
|
|
//CommUtils.saveFileFromBytes(saveFileName, makePath, Base64.decode(petiFileStr.getBytes()));
|
|
|
|
|
|
|
|
// 실제 저장된 파일명 set
|
|
|
|
|
|
|
|
//method = clz.getMethod("setPetiFileName" + (idx + 1), String.class);
|
|
|
|
|
|
|
|
//method.invoke(appendFileDto, saveFileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 원본 파일명으로 파일 생성후 파일 업로드
|
|
|
|
|
|
|
|
mfList.add(CommUtils.createMutipartFileFromBytes(petiFileNm, makePath, Base64.decode(petiFileStr.getBytes())));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//method.invoke(dto, StringUtils.cleanPath(makePath + mf.getOriginalFilename()));
|
|
|
|
|
|
|
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
|
|
|
|
|
|
|
e.getStackTrace();
|
|
|
|
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return cmmFileService.saveCtznStmtFiles(getFileMst(stmtDtlDTO), mfList, pngFileDtlDto);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
private static void getFileImage(NatlNewspaperRcvXmlDTO.ApndFileInfo apndFileDTO, List<MultipartFile> mfList,
|
|
|
|
|
|
|
|
Class<?> clz, String makePath, int fileIdx) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
Method method = clz.getMethod("getPetiFilePath" + (index + 1) + "V", null);
|
|
|
|
Method method = clz.getMethod("getPetiFilePath" + fileIdx + "V", null);
|
|
|
|
String petiFileNm = (String)method.invoke(apndFileDTO, null);
|
|
|
|
String petiFileNm = (String)method.invoke(apndFileDTO, null);
|
|
|
|
method = clz.getMethod("getApndfilcont" + (index + 1), null);
|
|
|
|
method = clz.getMethod("getApndfilcont" + fileIdx, null);
|
|
|
|
String petiFileStr = (String)method.invoke(apndFileDTO, null);
|
|
|
|
String petiFileStr = (String)method.invoke(apndFileDTO, null);
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 실제 저장할 파일명 생성후 파일 내용 저장
|
|
|
|
//TODO: 실제 저장할 파일명 생성후 파일 내용 저장
|
|
|
@ -512,72 +440,28 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
//TODO: 원본 파일명으로 파일 생성후 파일 업로드
|
|
|
|
//TODO: 원본 파일명으로 파일 생성후 파일 업로드
|
|
|
|
mfList.add(CommUtils.createMutipartFileFromBytes(petiFileNm, makePath, Base64.decode(petiFileStr.getBytes())));
|
|
|
|
mfList.add(CommUtils.createMutipartFileFromBytes(petiFileNm, makePath, Base64.decode(petiFileStr.getBytes())));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//method.invoke(dto, StringUtils.cleanPath(makePath + mf.getOriginalFilename()));
|
|
|
|
//method.invoke(dto, StringUtils.cleanPath(makePath + mf.getOriginalFilename()));
|
|
|
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
|
|
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
|
|
|
e.getStackTrace();
|
|
|
|
e.getStackTrace();
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private CmmFileDTO.FileMst getFileMst(CtznStmtDTO.CtznStmtDtl sttemntDetailDTO) {
|
|
|
|
CmmFileDTO.FileMst fileMstDTO = new CmmFileDTO.FileMst();
|
|
|
|
CmmFileDTO.FileMst fileMstDTO = new CmmFileDTO.FileMst();
|
|
|
|
fileMstDTO.setJobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode());
|
|
|
|
fileMstDTO.setJobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode());
|
|
|
|
fileMstDTO.setFileJobId(stmtDtlDTO.getInterfaceSeqN()+stmtDtlDTO.getCtznSttemntDetailSn());
|
|
|
|
fileMstDTO.setFileJobId(sttemntDetailDTO.getInterfaceSeqN()+ sttemntDetailDTO.getCtznSttemntDetailSn());
|
|
|
|
fileMstDTO.setUploadeJobPath(uploadNewsPaperPath);
|
|
|
|
fileMstDTO.setUploadeJobPath(uploadNewsPaperPath);
|
|
|
|
fileMstDTO.setFileDirPath(FimsConst.FileDirDepth.DAY.getCode());
|
|
|
|
fileMstDTO.setFileDirPath(FimsConst.FileDirDepth.DAY.getCode());
|
|
|
|
|
|
|
|
return fileMstDTO;
|
|
|
|
return cmmFileService.saveCtznSttemntFiles(fileMstDTO, mfList, pngFileDtlDto);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*
|
|
|
|
|
|
|
|
private void saveAppendFiles2(
|
|
|
|
private static String makeUploadPath() {
|
|
|
|
NatlNewspaperRcvXmlDTO xmlDto,
|
|
|
|
|
|
|
|
NatlNewspaperRcvXmlDTO.AppendFileInfoDTO appendFileDto,
|
|
|
|
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO sttemntDetailDTO,
|
|
|
|
|
|
|
|
int index) {
|
|
|
|
|
|
|
|
// 첨부 파일 생성
|
|
|
|
|
|
|
|
int fileCnt = Integer.parseInt(appendFileDto.getApndfilcount());
|
|
|
|
|
|
|
|
List<MultipartFile> mfList = new ArrayList<>();
|
|
|
|
|
|
|
|
if(fileCnt > 0) {
|
|
|
|
|
|
|
|
Class<?> clz = appendFileDto.getClass();
|
|
|
|
|
|
|
|
String dateStr = DateUtils.getToday("");
|
|
|
|
String dateStr = DateUtils.getToday("");
|
|
|
|
dateStr = dateStr.substring(0,4) + "/" + dateStr.substring(4);
|
|
|
|
dateStr = dateStr.substring(0,4) + "/" + dateStr.substring(4);
|
|
|
|
String makeDir = "/" + dateStr;
|
|
|
|
String makeDir = "/" + dateStr;
|
|
|
|
String makePath = uploadRoot + uploadNewsPaperPath + makeDir;
|
|
|
|
return makeDir;
|
|
|
|
//appendFileDto.setUploadPetiFilePath(makeDir);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int idx = 0; idx < fileCnt; idx++) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Method method = clz.getMethod("getPetiFilePath" + (idx + 1) + "V", null);
|
|
|
|
|
|
|
|
String petiFileNm = (String)method.invoke(appendFileDto, null);
|
|
|
|
|
|
|
|
method = clz.getMethod("getApndfilcont" + (idx + 1), null);
|
|
|
|
|
|
|
|
String petiFileStr = (String)method.invoke(appendFileDto, null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 실제 저장할 파일명 생성후 파일 내용 저장
|
|
|
|
|
|
|
|
//String saveFileName = CommUtils.getStringFromUUID();
|
|
|
|
|
|
|
|
//CommUtils.saveFileFromBytes(saveFileName, makePath, Base64.decode(petiFileStr.getBytes()));
|
|
|
|
|
|
|
|
// 실제 저장된 파일명 set
|
|
|
|
|
|
|
|
//method = clz.getMethod("setPetiFileName" + (idx + 1), String.class);
|
|
|
|
|
|
|
|
//method.invoke(appendFileDto, saveFileName);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: 원본 파일명으로 파일 생성후 파일 업로드
|
|
|
|
|
|
|
|
mfList.add(CommUtils.createMutipartFileFromBytes(petiFileNm, makePath, Base64.decode(petiFileStr.getBytes())));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//method.invoke(dto, StringUtils.cleanPath(makePath + mf.getOriginalFilename()));
|
|
|
|
|
|
|
|
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
|
|
|
|
|
|
|
|
e.getStackTrace();
|
|
|
|
|
|
|
|
throw BizRuntimeException.create(MessageKey.CUSTOM_MSG, e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
CmmFileMstDTO fileMstDTO = new CmmFileMstDTO();
|
|
|
|
|
|
|
|
fileMstDTO.setJobSeCode(FimsConst.FileJobSeCode.NATL_NEWS_PAPER_RCV.getCode());
|
|
|
|
|
|
|
|
fileMstDTO.setFileJobId(sttemntDetailDTO.getInterfaceSeqN()+sttemntDetailDTO.getCtznSttemntDetailSn());
|
|
|
|
|
|
|
|
fileMstDTO.setUploadeJobPath(uploadNewsPaperPath);
|
|
|
|
|
|
|
|
fileMstDTO.setFileDirPath(FimsConst.FileDirDepth.DAY.getCode());
|
|
|
|
|
|
|
|
cmmFileService.saveFiles(fileMstDTO, mfList);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("DuplicatedCode")
|
|
|
|
@SuppressWarnings("DuplicatedCode")
|
|
|
@ -589,10 +473,10 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 단일데이타 : 차량번호가 동일(차량번호가 없는 경우 포함)
|
|
|
|
// 단일데이타 : 차량번호가 동일(차량번호가 없는 경우 포함)
|
|
|
|
CtznSttemntDTO dto = new CtznSttemntDTO();
|
|
|
|
CtznStmtDTO dto = new CtznStmtDTO();
|
|
|
|
List<CtznSttemntDTO.CtznSttemntDetailDTO> dtlList = new ArrayList<>();
|
|
|
|
List<CtznStmtDTO.CtznStmtDtl> dtlList = new ArrayList<>();
|
|
|
|
// 중복데이타 목록
|
|
|
|
// 중복데이타 목록
|
|
|
|
List<CtznSttemntDTO.DupDataDTO> dupDataList = dto.getDupDataList();
|
|
|
|
List<CtznStmtDTO.DupData> dupDataList = dto.getDupDataList();
|
|
|
|
|
|
|
|
|
|
|
|
dto.setInterfaceSeqN(xmlDto.getInterfaceSeqN());
|
|
|
|
dto.setInterfaceSeqN(xmlDto.getInterfaceSeqN());
|
|
|
|
dto.setInsttCode(xmlDto.getAncCodeV());
|
|
|
|
dto.setInsttCode(xmlDto.getAncCodeV());
|
|
|
@ -639,7 +523,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
.replaceAll("[: /]", "")
|
|
|
|
.replaceAll("[: /]", "")
|
|
|
|
.split(",");
|
|
|
|
.split(",");
|
|
|
|
|
|
|
|
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO dtlDto = new CtznSttemntDTO.CtznSttemntDetailDTO();
|
|
|
|
CtznStmtDTO.CtznStmtDtl dtlDto = new CtznStmtDTO.CtznStmtDtl();
|
|
|
|
//단속일시
|
|
|
|
//단속일시
|
|
|
|
dtlDto.setRegltDeTime(arrSrc[0]);
|
|
|
|
dtlDto.setRegltDeTime(arrSrc[0]);
|
|
|
|
|
|
|
|
|
|
|
@ -659,14 +543,14 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(!dto.isSingle()) {
|
|
|
|
if(!dto.isSingle()) {
|
|
|
|
CtznSttemntDTO.DupDataDTO dupDto = new CtznSttemntDTO.DupDataDTO();
|
|
|
|
CtznStmtDTO.DupData dupDto = new CtznStmtDTO.DupData();
|
|
|
|
dupDto.setSttemntDetailDTO(dtlList.get(0));
|
|
|
|
dupDto.setSttemntDetailDTO(dtlList.get(0));
|
|
|
|
dupDto.getIndexs().add(0);
|
|
|
|
dupDto.getIndexs().add(0);
|
|
|
|
|
|
|
|
|
|
|
|
dto.getDupDataList().add(dupDto);
|
|
|
|
dto.getDupDataList().add(dupDto);
|
|
|
|
|
|
|
|
|
|
|
|
for (int idx = 1; idx < dtlList.size(); idx++) {
|
|
|
|
for (int idx = 1; idx < dtlList.size(); idx++) {
|
|
|
|
CtznSttemntDTO.CtznSttemntDetailDTO tgt = dtlList.get(idx);
|
|
|
|
CtznStmtDTO.CtznStmtDtl tgt = dtlList.get(idx);
|
|
|
|
int finalIdx = idx;
|
|
|
|
int finalIdx = idx;
|
|
|
|
AtomicBoolean isDup = new AtomicBoolean(false);
|
|
|
|
AtomicBoolean isDup = new AtomicBoolean(false);
|
|
|
|
dto.getDupDataList().forEach(dupData -> {
|
|
|
|
dto.getDupDataList().forEach(dupData -> {
|
|
|
@ -676,7 +560,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
if(!isDup.get()) {
|
|
|
|
if(!isDup.get()) {
|
|
|
|
CtznSttemntDTO.DupDataDTO ddto = new CtznSttemntDTO.DupDataDTO();
|
|
|
|
CtznStmtDTO.DupData ddto = new CtznStmtDTO.DupData();
|
|
|
|
ddto.setSttemntDetailDTO(tgt);
|
|
|
|
ddto.setSttemntDetailDTO(tgt);
|
|
|
|
ddto.getIndexs().add(idx);
|
|
|
|
ddto.getIndexs().add(idx);
|
|
|
|
|
|
|
|
|
|
|
@ -687,7 +571,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
|
|
|
|
|
|
|
|
// 단속일시 desc로 정렬 - 동일 차량인 경우 단속일시가 늦은것 남기기위해)
|
|
|
|
// 단속일시 desc로 정렬 - 동일 차량인 경우 단속일시가 늦은것 남기기위해)
|
|
|
|
dtlList = dtlList.stream()
|
|
|
|
dtlList = dtlList.stream()
|
|
|
|
.sorted(Comparator.comparing(CtznSttemntDTO.CtznSttemntDetailDTO::getRegltDeTime).reversed()).collect(
|
|
|
|
.sorted(Comparator.comparing(CtznStmtDTO.CtznStmtDtl::getRegltDeTime).reversed()).collect(
|
|
|
|
Collectors.toList());
|
|
|
|
Collectors.toList());
|
|
|
|
// 중복제거(동일 차량 번호중 단속일시가 가장 늦은것 pick)
|
|
|
|
// 중복제거(동일 차량 번호중 단속일시가 가장 늦은것 pick)
|
|
|
|
// 차량번호가 없는 경우가 존재하여 체크로직 추가
|
|
|
|
// 차량번호가 없는 경우가 존재하여 체크로직 추가
|
|
|
@ -750,7 +634,7 @@ public class EcNatlNewspaperService implements IEcNatlNewspaperService {
|
|
|
|
dtlDto.setVioltDtlsNm(str);
|
|
|
|
dtlDto.setVioltDtlsNm(str);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
dto.setSttemntDetailDTOs(dtlList);
|
|
|
|
dto.setStmtDtlDTOs(dtlList);
|
|
|
|
|
|
|
|
|
|
|
|
log.debug("{}", dto);
|
|
|
|
log.debug("{}", dto);
|
|
|
|
//return dto;
|
|
|
|
//return dto;
|
|
|
|