feat : 신문고 테스트중. 매핑 데이터 보정중

master
Kurt92 4 months ago
parent 5396c522bf
commit 9207d84b80

@ -1,11 +1,11 @@
package com.worker.domain.repo.cp;
import com.worker.domain.entity.CpBdong;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface CpBdongRepository extends CrudRepository<CpBdong, Long> {
public interface CpBdongRepository extends JpaRepository<CpBdong, Long> {
List<CpBdong> findAllByBdCodeStartingWith(String string);

@ -45,6 +45,11 @@ public class SinmungoInOutScheduler {
XmlParserInterface<SinmungoDto.SinmungoXml> parser = new SinmungoXmlParser();
List<SinmungoDto.SinmungoXml> parseResult = xmlReader.readXmlFiles(setInfo.getCpSetinfo().getStrValue2(), parser);
if(parseResult.isEmpty()){
log.info("새로 읽을 xml 없음.");
return;
}
// cpMain만 추출
// cp와 ep 디비가 따로있다고함.
//deptCode로 cp/ep 대상 분리
@ -63,7 +68,9 @@ public class SinmungoInOutScheduler {
}
})
.collect(Collectors.toList());
log.info(cpList.size() + "개의 cp xml 객체 생성");
dbPolling.saveCP(cpList, setInfo);
log.info("CP DB Insert Complete!");
// save ep
List<SinmungoDto.SinmungoXml> epList = parseResult.stream()
.filter(item -> {
@ -75,11 +82,15 @@ public class SinmungoInOutScheduler {
.map(list -> list.get(1))
.anyMatch(v -> v == deptCode);
} catch (Exception e) {
log.info("필터링중 오류발생", e);
return false;
}
})
.collect(Collectors.toList());
log.info(epList.size() + "개의 ep xml 객체 생성");
dbPolling.saveEP(epList, setInfo);
log.info("EP DB Insert Complete!");
} catch (Exception e) {
log.error("🔥 신고 폴링 스케줄러 오류 발생!", e); // 여기서 예외 로그 전체 출력
@ -111,10 +122,15 @@ public class SinmungoInOutScheduler {
//send 프로세스 실행
//todo : 조회한 객체 리턴받아서 0이면 다른메시지 보내주자 (전송할 답변이 없습니다.)
xmlSend.send(setInfo, answers);
if(!answers.getCpAnswer().isEmpty() || !answers.getEpAnswer().isEmpty()){
xmlSend.send(setInfo, answers);
log.info("xml 생성 성공!!!");
} else {
log.info("xml생성 할 대상 자료가 없습니다.");
}
log.info("xml 생성 성공!!!");
} catch (Exception e) {
log.error("🔥 답변실행 스케줄러 오류 발생!", e); // 여기서 예외 로그 전체 출력
}

@ -24,6 +24,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
@ -67,14 +68,14 @@ public class DbPolling {
.build()
).orElse(null);
List<CpBdong> cpBdongList = cpBdongRepository.findAllByBdCodeStartingWith(cpSetinfo.getIntValue1().toString());
List<CpBdong> cpBdongList = cpBdongRepository.findAll();
List<CpBdong> epBdongList = epBdongRepository.findAll();
return SinmungoDto.SetInfo.builder()
.cpSetinfo(cpSetinfo)
.epSetinfo(epSetInfo)
.cpBdongList(cpBdongList)
.epBdongList(epBdongList)
.build();
}
@ -103,7 +104,7 @@ public class DbPolling {
// CpMain
cpMainList.add(CpMain.builder()
.mmCode(String.valueOf(maxMmCode + i))
.mmSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
.mmSggcode(setInfo.getEpSetinfo().getIntValue1().toString())
.mmIngb("1")
.mmDate(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_reason_l()))
.mmTime(DateTimePatternEnum.TIME_HHMM.extractFirst(xml.getPeti_reason_l()))
@ -131,10 +132,10 @@ public class DbPolling {
.asMmcode(String.valueOf(maxMmCode + i))
.asSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
.asIngb(TakeSeCdEnum.findTakeSeCd(xml.getPeti_anc_code_v()))
.asJsdate(xml.getAnc_reg_d().substring(0, 8))
.asJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
.asJsno(xml.getPeti_no_c())
.asJsnoM(xml.getCivil_no_c())
.asBbsNo(xml.getCivil_no_c().substring(xml.getCivil_no_c().lastIndexOf("_") + 1))
.asBbsNo(xml.getCivil_no_c().substring(xml.getCivil_no_c().lastIndexOf("-") + 1))
.asLimitDt(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_end_d()))
.asUser(xml.getPeter_name_v())
.asTel(xml.getTel_no_v())
@ -148,7 +149,7 @@ public class DbPolling {
// CpMainEtc1
cpMainEtc1List.add(CpMainEtc1.builder()
.mmCode(String.valueOf(maxMmCode + i))
.mmJsdate(xml.getAnc_reg_d().substring(0, 8))
.mmJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
.mmKey(xml.getInterface_seq_n())
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
.build());
@ -159,7 +160,9 @@ public class DbPolling {
log.info(cpAnswerList.toString());
// 디비 인서트
log.info("CP DB Insert Start");
cpMainRepository.saveAll(cpMainList);
cpAnswerRepository.saveAll(cpAnswerList);
cpMainEtc1Repository.saveAll(cpMainEtc1List);
@ -189,7 +192,7 @@ public class DbPolling {
cpMainList.add(CpMain.builder()
.mmCode(String.valueOf(maxMmCode + i))
.mmSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
.mmSggcode(setInfo.getEpSetinfo().getIntValue1().toString())
.mmIngb("1")
.mmDate(DateTimePatternEnum.DATE_YYYYMMDD.extractFirst(xml.getPeti_reason_l()))
.mmTime(DateTimePatternEnum.TIME_HHMM.extractFirst(xml.getPeti_reason_l()))
@ -215,30 +218,42 @@ public class DbPolling {
// CpAnswer
cpAnswerList.add(CpAnswer.builder()
.asMmcode(String.valueOf(maxMmCode + i))
.asSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
.asIngb(TakeSeCdEnum.findTakeSeCd(xml.getPeti_anc_code_v()))
.asJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
.asJsno(xml.getPeti_no_c())
.asJsnoM(xml.getCivil_no_c())
.asBbsNo(xml.getCivil_no_c().substring(xml.getCivil_no_c().lastIndexOf("-") + 1))
.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())
.asCell(xml.getCel_no_v())
.asEmail(xml.getEmail_v())
.asStateDt(LocalDateTime.now().format(dtf))
.asSysGubunC(xml.getSys_gubun_c())
.asPetiAncCodeV(xml.getPeti_anc_code_v()) // 컬럼이 있긴한데 안쓰는거같음. 파일 넘어온곳 코드값으로 저장하는데 왜 저장하는지 모르겠음.
.build());
// CpMainEtc1
cpMainEtc1List.add(CpMainEtc1.builder()
.mmCode(String.valueOf(maxMmCode + i))
.mmJsdate(xml.getAnc_reg_d().substring(0, 8))
.mmJsdate(xml.getAnc_reg_d().substring(0, 10).replace("-", ""))
.mmKey(xml.getInterface_seq_n())
.mmText(CommonUtils.truncate(xml.getPeti_reason_l(), 4000))
.build());
insertCompleteFileNm.add(epList.get(i).getFileName());
}
log.info(cpMainList.toString());
log.info(cpAnswerList.toString());
log.info(cpMainEtc1List.toString());
// 디비 인서트
log.info("EP DB Insert Start");
epMainRepository.saveAll(cpMainList);
epAnswerRepository.saveAll(cpAnswerList);
epMainEtc1Repository.saveAll(cpMainEtc1List);
@ -266,7 +281,15 @@ public class DbPolling {
* 0000000
* */
private long getMaxMmCode(SinmungoDto.SetInfo setInfo, String db) {
String prefix = setInfo.getCpSetinfo().getIntValue1() + Integer.toString(Year.now().getValue());
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());
}
CpMain cpMainMax;
if(db.equals("CP")) cpMainMax = cpMainRepository.findTopByMmCodeStartingWithOrderByMmCodeDesc(prefix);
@ -282,9 +305,10 @@ public class DbPolling {
* */
private String getSgPosByReason(SinmungoDto.SetInfo setInfo, String peti_reason_l) {
List<String> dongNames = setInfo.getCpBdongList().stream()
.map(CpBdong::getBdDongName)
.collect(Collectors.toList());
List<String> dongNames = Stream.concat(
setInfo.getCpBdongList().stream().map(CpBdong::getBdDongName),
setInfo.getEpBdongList().stream().map(CpBdong::getBdDongName)
).collect(Collectors.toList());
return Arrays.stream(peti_reason_l.split("\\r?\\n"))
.map(line -> dongNames.stream()
@ -340,10 +364,12 @@ public class DbPolling {
* */
private LawGBEnum getLawGBByReason(String peti_reason_l) {
if (peti_reason_l.contains(LawGBEnum.INTERRUPT.getCodeNm())) {
return LawGBEnum.INTERRUPT;
} else if (peti_reason_l.contains(LawGBEnum.PARKING.getCodeNm())) {
if (peti_reason_l.contains(LawGBEnum.PARKING.getCodeNm())) {
return LawGBEnum.PARKING;
} else if (peti_reason_l.contains("주정차")) {
return LawGBEnum.PARKING;
} else if (peti_reason_l.contains(LawGBEnum.INTERRUPT.getCodeNm())) {
return LawGBEnum.INTERRUPT;
} else if (peti_reason_l.contains(LawGBEnum.SIGN.getCodeNm())) {
return LawGBEnum.SIGN;
}

@ -52,7 +52,7 @@ public class WarSyncScheduler {
private final Path PID_FILE_PATH = BASE_PATH.resolve("deploy/clean-parking.pid");
private final File LOG_FILE = BASE_PATH.resolve("logs/clean-parking.log").toFile();
@Scheduled(fixedRate = 5 * 60 * 1000) // 5분
// @Scheduled(fixedRate = 5 * 60 * 1000) // 5분
// @Scheduled(cron = "0 0 2 * * *") // 매일 새벽 2시
public void checkAndDeploy() {
log.info("[배포] SFTP에서 .war 변경 여부 확인 시작");

@ -35,8 +35,8 @@ public class SinmungoXmlParser implements XmlParserInterface<SinmungoDto.Sinmung
.address_v(getTagValue("address_v", root))
.email_v(getTagValue("email_v", root))
.cel_no_v(getTagValue("cel_no_v", root))
.tel_no_v(getTagValue("", root))
.peti_title_v(getTagValue("tel_no_v", root))
.tel_no_v(getTagValue("tel_no_v", root))
.peti_title_v(getTagValue("peti_title_v", root))
.peti_reason_l(getTagValue("peti_reason_l", root))
.open_yn_c(getTagValue("open_yn_c", root))
.peti_reg_d(getTagValue("peti_reg_d", root))

@ -33,11 +33,11 @@ esb:
cp:
codeName: WORKER
groupCode: INFO
detailCode: TEST
detailCode: DEV
ep:
codeName: WORKER
groupCode: INFO
detailCode: TEST
detailCode: DEV
logging:
level:

@ -33,11 +33,11 @@ esb:
cp:
codeName: WORKER
groupCode: INFO
detailCode: TEST
detailCode: LOCAL
ep:
codeName: WORKER
groupCode: INFO
detailCode: TEST
detailCode: LOCAL
logging:
level:

Loading…
Cancel
Save