|
|
|
|
@ -2,7 +2,7 @@ package com.worker.scheduler.smg.service;
|
|
|
|
|
|
|
|
|
|
import com.worker.domain.entity.*;
|
|
|
|
|
import com.worker.domain.repo.cp.*;
|
|
|
|
|
import com.worker.domain.repo.ep.EpSetinfoRepository;
|
|
|
|
|
import com.worker.domain.repo.ep.*;
|
|
|
|
|
import com.worker.dto.SinmungoDto;
|
|
|
|
|
import com.worker.util.common.CommonUtils;
|
|
|
|
|
import com.worker.util.common.commEnum.DateTimePatternEnum;
|
|
|
|
|
@ -24,7 +24,6 @@ import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static org.aspectj.asm.internal.ProgramElement.trim;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@RequiredArgsConstructor
|
|
|
|
|
@ -37,10 +36,14 @@ public class DbPolling {
|
|
|
|
|
private final CpSetinfoRepository cpSetinfoRepository;
|
|
|
|
|
private final EpSetinfoRepository epSetinfoRepository;
|
|
|
|
|
private final CpBdongRepository cpBdongRepository;
|
|
|
|
|
private final EpBdongRepository epBdongRepository;
|
|
|
|
|
|
|
|
|
|
private final CpMainRepository cpMainRepository;
|
|
|
|
|
private final EpMainRepository epMainRepository;
|
|
|
|
|
private final CpAnswerRepository cpAnswerRepository;
|
|
|
|
|
private final EpAnswerRepository epAnswerRepository;
|
|
|
|
|
private final CpMainEtc1Repository cpMainEtc1Repository;
|
|
|
|
|
private final EpMainEtc1Repository epMainEtc1Repository;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public SinmungoDto.SetInfo findSetInfo() {
|
|
|
|
|
@ -77,89 +80,164 @@ public class DbPolling {
|
|
|
|
|
@Transactional
|
|
|
|
|
public void saveCP(List<SinmungoDto.SinmungoXml> cpList, SinmungoDto.SetInfo setInfo) {
|
|
|
|
|
// job group 1 = 장애인 / 2 = 전기차
|
|
|
|
|
|
|
|
|
|
List<CpMain> cpMainList = new ArrayList<>();
|
|
|
|
|
List<CpAnswer> cpAnswerList = new ArrayList<>();
|
|
|
|
|
List<CpMainEtc1> cpMainEtc1List = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//mm_code 맥스값 가져오기
|
|
|
|
|
String mmCode = getMaxMmCode(setInfo);
|
|
|
|
|
|
|
|
|
|
List<CpMain> cpMainList = cpList.stream()
|
|
|
|
|
.map(xml -> {
|
|
|
|
|
String sgpos = getSgPosByReason(setInfo, xml.getPeti_reason_l());
|
|
|
|
|
return CpMain.builder()
|
|
|
|
|
.mmCode(mmCode)
|
|
|
|
|
.mmSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
|
|
|
|
|
.mmIngb("1") //접수구분
|
|
|
|
|
.mmDate(DateTimePatternEnum.DATE_ONLY.extractFirst(xml.getPeti_reason_l())) //신고날짜
|
|
|
|
|
.mmTime(DateTimePatternEnum.TIME_ONLY.extractFirst(xml.getPeti_reason_l())) //신고시간
|
|
|
|
|
.mmSgnm(xml.getPeter_name_v()) //신고자 이름
|
|
|
|
|
.mmSgtel(xml.getDuty_id_v()) //담당자 아이디
|
|
|
|
|
.mmSgcont(trim(xml.getPeti_reason_l())) // 신고내용
|
|
|
|
|
.mmSgpos(sgpos) //사고발생지역 주소추출
|
|
|
|
|
.mmBdcode(getBdcodeBySgpos(setInfo, sgpos)) //사고발생지역 코드
|
|
|
|
|
.mmImagecnt(Integer.parseInt(xml.getApndfilcount())) // 이미지 갯수
|
|
|
|
|
// .mmImagegb() //동영상여부
|
|
|
|
|
.mmCarno(null) // 차량번호
|
|
|
|
|
.mmLawgb(getLawGBByReason(xml.getPeti_reason_l()).getCode()) //위반항목
|
|
|
|
|
.mmKeum1(getLawGBByReason(xml.getPeti_reason_l()).getImKeum1()) // 감경금액 (자진납부 20퍼 감경)
|
|
|
|
|
.mmKeum2(getLawGBByReason(xml.getPeti_reason_l()).getImKeum2()) // 감경 후 금액 (본금액)
|
|
|
|
|
.mmInuser(0) //등록자
|
|
|
|
|
// .mmIndt() //등록일시
|
|
|
|
|
.mmState("01") //처리상태
|
|
|
|
|
.mmStateDt(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))) //마지막 처리일시
|
|
|
|
|
.mmDlgb("2") //등록구분
|
|
|
|
|
.mmOmcode("0") //소유주테이블 코드 (논리fk)
|
|
|
|
|
.mmGpsX(getGpsByReason(xml.getPeti_reason_l(), "위도"))
|
|
|
|
|
.mmGpsY(getGpsByReason(xml.getPeti_reason_l(), "경도"))
|
|
|
|
|
.mmVideofilenm("" + "Z.mp4")
|
|
|
|
|
.build();
|
|
|
|
|
})
|
|
|
|
|
.collect(Collectors.toUnmodifiableList());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<CpAnswer> cpAnswerList = cpList.stream()
|
|
|
|
|
.map(xml -> CpAnswer.builder()
|
|
|
|
|
.asMmcode(mmCode)
|
|
|
|
|
.asJsno(xml.getPeti_no_c())
|
|
|
|
|
.asJsnoM(xml.getCivil_no_c())
|
|
|
|
|
.asLimitDt(xml.getPeti_end_d())
|
|
|
|
|
.asUser(xml.getPeter_name_v())
|
|
|
|
|
.asSysGubunC(xml.getSys_gubun_c())
|
|
|
|
|
.asCell(xml.getCel_no_v())
|
|
|
|
|
.asTel(xml.getTel_no_v())
|
|
|
|
|
.build())
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
long maxMmCode = getMaxMmCode(setInfo, "CP");
|
|
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < cpList.size(); i++) {
|
|
|
|
|
SinmungoDto.SinmungoXml xml = cpList.get(i);
|
|
|
|
|
String sgpos = getSgPosByReason(setInfo, xml.getPeti_reason_l());
|
|
|
|
|
|
|
|
|
|
// CpMain
|
|
|
|
|
cpMainList.add(CpMain.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
|
|
|
|
|
.mmIngb("1")
|
|
|
|
|
.mmDate(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
.mmTime(DateTimePatternEnum.TIME_HHMM.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
.mmSgnm(xml.getPeter_name_v())
|
|
|
|
|
.mmSgtel(xml.getDuty_id_v())
|
|
|
|
|
.mmSgcont(CommonUtils.truncateUtf8(xml.getPeti_reason_l(), 1000))
|
|
|
|
|
.mmSgpos(sgpos)
|
|
|
|
|
.mmBdcode(getBdcodeBySgpos(setInfo, sgpos))
|
|
|
|
|
.mmImagecnt(Integer.parseInt(xml.getApndfilcount()))
|
|
|
|
|
.mmLawgb(getLawGBByReason(xml.getPeti_reason_l()).getCode())
|
|
|
|
|
.mmKeum1(getLawGBByReason(xml.getPeti_reason_l()).getImKeum1())
|
|
|
|
|
.mmKeum2(getLawGBByReason(xml.getPeti_reason_l()).getImKeum2())
|
|
|
|
|
.mmInuser(0)
|
|
|
|
|
.mmState("01")
|
|
|
|
|
.mmStateDt(LocalDateTime.now().format(dtf))
|
|
|
|
|
.mmDlgb("2")
|
|
|
|
|
.mmOmcode("0")
|
|
|
|
|
.mmGpsX(getGpsByReason(xml.getPeti_reason_l(), "위도"))
|
|
|
|
|
.mmGpsY(getGpsByReason(xml.getPeti_reason_l(), "경도"))
|
|
|
|
|
.mmVideofilenm("Z.mp4")
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
// CpAnswer
|
|
|
|
|
cpAnswerList.add(CpAnswer.builder()
|
|
|
|
|
.asMmcode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.asJsno(xml.getPeti_no_c())
|
|
|
|
|
.asJsnoM(xml.getCivil_no_c())
|
|
|
|
|
.asLimitDt(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_end_d()))
|
|
|
|
|
.asUser(xml.getPeter_name_v())
|
|
|
|
|
.asSysGubunC(xml.getSys_gubun_c())
|
|
|
|
|
.asCell(xml.getCel_no_v())
|
|
|
|
|
.asTel(xml.getTel_no_v())
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
// CpMainEtc1
|
|
|
|
|
cpMainEtc1List.add(CpMainEtc1.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmJsdate(xml.getAnc_reg_d().substring(0, 8))
|
|
|
|
|
.mmKey(xml.getInterface_seq_n())
|
|
|
|
|
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
|
|
|
|
|
.build());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<CpMainEtc1> cpMainEtc1List = cpList.stream()
|
|
|
|
|
.map(xml -> CpMainEtc1.builder()
|
|
|
|
|
.mmCode(mmCode)
|
|
|
|
|
.mmJsdate(xml.getAnc_reg_d().substring(0, 8))
|
|
|
|
|
.mmKey(xml.getInterface_seq_n())
|
|
|
|
|
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
|
|
|
|
|
.build())
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
log.info(cpAnswerList.toString());
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
// cpMainRepository.saveAll(cpMainList);
|
|
|
|
|
// cpAnswerRepository.saveAll(cpAnswerList);
|
|
|
|
|
// cpMainEtc1Repository.saveAll(cpMainEtc1List);
|
|
|
|
|
|
|
|
|
|
// fileBackup(setInfo, cpList);
|
|
|
|
|
cpMainRepository.saveAll(cpMainList);
|
|
|
|
|
cpAnswerRepository.saveAll(cpAnswerList);
|
|
|
|
|
cpMainEtc1Repository.saveAll(cpMainEtc1List);
|
|
|
|
|
|
|
|
|
|
fileBackup(setInfo.getCpSetinfo(), cpList);
|
|
|
|
|
}
|
|
|
|
|
@Transactional
|
|
|
|
|
public void saveEP(List<SinmungoDto.SinmungoXml> epList, SinmungoDto.SetInfo setInfo) {
|
|
|
|
|
|
|
|
|
|
List<CpMain> cpMainList = new ArrayList<>();
|
|
|
|
|
List<CpAnswer> cpAnswerList = new ArrayList<>();
|
|
|
|
|
List<CpMainEtc1> cpMainEtc1List = new ArrayList<>();
|
|
|
|
|
List<String> insertCompleteFileNm = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//mm_code 맥스값 가져오기
|
|
|
|
|
long maxMmCode = getMaxMmCode(setInfo, "EP");
|
|
|
|
|
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < epList.size(); i++) {
|
|
|
|
|
SinmungoDto.SinmungoXml xml = epList.get(i);
|
|
|
|
|
String sgpos = getSgPosByReason(setInfo, xml.getPeti_reason_l());
|
|
|
|
|
|
|
|
|
|
cpMainList.add(CpMain.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
|
|
|
|
|
.mmIngb("1")
|
|
|
|
|
.mmDate(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
.mmTime(DateTimePatternEnum.TIME_HHMM.extractFirst(xml.getPeti_reason_l()))
|
|
|
|
|
.mmSgnm(xml.getPeter_name_v())
|
|
|
|
|
.mmSgtel(xml.getDuty_id_v())
|
|
|
|
|
.mmSgcont(CommonUtils.truncateUtf8(xml.getPeti_reason_l(), 1000))
|
|
|
|
|
.mmSgpos(sgpos)
|
|
|
|
|
.mmBdcode(getBdcodeBySgpos(setInfo, sgpos))
|
|
|
|
|
.mmImagecnt(Integer.parseInt(xml.getApndfilcount()))
|
|
|
|
|
.mmLawgb(getLawGBByReason(xml.getPeti_reason_l()).getCode())
|
|
|
|
|
.mmKeum1(getLawGBByReason(xml.getPeti_reason_l()).getImKeum1())
|
|
|
|
|
.mmKeum2(getLawGBByReason(xml.getPeti_reason_l()).getImKeum2())
|
|
|
|
|
.mmInuser(0)
|
|
|
|
|
.mmState("01")
|
|
|
|
|
.mmStateDt(LocalDateTime.now().format(dtf))
|
|
|
|
|
.mmDlgb("2")
|
|
|
|
|
.mmOmcode("0")
|
|
|
|
|
.mmGpsX(getGpsByReason(xml.getPeti_reason_l(), "위도"))
|
|
|
|
|
.mmGpsY(getGpsByReason(xml.getPeti_reason_l(), "경도"))
|
|
|
|
|
.mmVideofilenm("Z.mp4")
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
// CpAnswer
|
|
|
|
|
cpAnswerList.add(CpAnswer.builder()
|
|
|
|
|
.asMmcode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.asJsno(xml.getPeti_no_c())
|
|
|
|
|
.asJsnoM(xml.getCivil_no_c())
|
|
|
|
|
.asLimitDt(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_end_d()))
|
|
|
|
|
.asUser(xml.getPeter_name_v())
|
|
|
|
|
.asSysGubunC(xml.getSys_gubun_c())
|
|
|
|
|
.asCell(xml.getCel_no_v())
|
|
|
|
|
.asTel(xml.getTel_no_v())
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
// CpMainEtc1
|
|
|
|
|
cpMainEtc1List.add(CpMainEtc1.builder()
|
|
|
|
|
.mmCode(String.valueOf(maxMmCode + i))
|
|
|
|
|
.mmJsdate(xml.getAnc_reg_d().substring(0, 8))
|
|
|
|
|
.mmKey(xml.getInterface_seq_n())
|
|
|
|
|
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
insertCompleteFileNm.add(epList.get(i).getFileName());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// fileBackup(setInfo, epList);
|
|
|
|
|
|
|
|
|
|
log.info(cpAnswerList.toString());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
epMainRepository.saveAll(cpMainList);
|
|
|
|
|
epAnswerRepository.saveAll(cpAnswerList);
|
|
|
|
|
epMainEtc1Repository.saveAll(cpMainEtc1List);
|
|
|
|
|
|
|
|
|
|
fileBackup(setInfo.getEpSetinfo(), epList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// xml파일백업 및 바이너리 이미지 저장
|
|
|
|
|
private void fileBackup(SinmungoDto.SetInfo setInfo, List<SinmungoDto.SinmungoXml> cpList) {
|
|
|
|
|
private void fileBackup(CpSetinfo setInfo, List<SinmungoDto.SinmungoXml> eachList) {
|
|
|
|
|
|
|
|
|
|
xmlReader.xmlFileBackup(Paths.get(setInfo.getCpSetinfo().getStrValue2()), Paths.get(setInfo.getCpSetinfo().getStrValue4()));
|
|
|
|
|
List<SinmungoDto.ImgParser> imgParsers = cpList.stream()
|
|
|
|
|
//xml 백업
|
|
|
|
|
xmlReader.xmlFileBackup(Paths.get(setInfo.getStrValue2()), Paths.get(setInfo.getStrValue4()), eachList);
|
|
|
|
|
List<SinmungoDto.ImgParser> imgParsers = eachList.stream()
|
|
|
|
|
.flatMap(result -> result.getImgParsers().stream())
|
|
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
xmlReader.imgLocalSave(Paths.get(setInfo.getCpSetinfo().getStrValue5()), imgParsers);
|
|
|
|
|
|
|
|
|
|
//이미지 백업
|
|
|
|
|
xmlReader.imgLocalSave(Paths.get(setInfo.getStrValue5()), imgParsers);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
@ -167,16 +245,15 @@ public class DbPolling {
|
|
|
|
|
* MMCode 조회후 MAX값 + 1 리턴
|
|
|
|
|
* 없다면 0000000 으로 리턴
|
|
|
|
|
* */
|
|
|
|
|
private String getMaxMmCode(SinmungoDto.SetInfo setInfo) {
|
|
|
|
|
String prefix = setInfo.getCpSetinfo() + Integer.toString(Year.now().getValue());
|
|
|
|
|
CpMain cpMainMax = cpMainRepository.findTopByMmCodeStartingWithOrderByMmCodeDesc(prefix);
|
|
|
|
|
String maxCode;
|
|
|
|
|
if (cpMainMax != null) {
|
|
|
|
|
maxCode = String.valueOf(Integer.parseInt(cpMainMax.getMmCode()) + 1);
|
|
|
|
|
} else {
|
|
|
|
|
maxCode = prefix + "0000000";
|
|
|
|
|
}
|
|
|
|
|
return maxCode;
|
|
|
|
|
private long getMaxMmCode(SinmungoDto.SetInfo setInfo, String db) {
|
|
|
|
|
String prefix = setInfo.getCpSetinfo().getIntValue1() + Integer.toString(Year.now().getValue());
|
|
|
|
|
CpMain cpMainMax;
|
|
|
|
|
|
|
|
|
|
if(db.equals("CP")) cpMainMax = cpMainRepository.findTopByMmCodeStartingWithOrderByMmCodeDesc(prefix);
|
|
|
|
|
else cpMainMax = epMainRepository.findTopByMmCodeStartingWithOrderByMmCodeDesc(prefix);
|
|
|
|
|
|
|
|
|
|
if (cpMainMax != null) return Long.parseLong(cpMainMax.getMmCode());
|
|
|
|
|
else return Long.parseLong(prefix + "0000000");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|