feat : db polling 맵핑 및 공통, enum 추가

master
Kurt92 6 months ago
parent 2737b5c51c
commit 31c528abb4

@ -7,6 +7,7 @@ import com.worker.domain.repo.cp.CpSetinfoRepository;
import com.worker.domain.repo.ep.EpSetinfoRepository;
import com.worker.dto.SinmungoDto;
import com.worker.util.common.CommonUtils;
import com.worker.util.common.commEnum.DateTimePatternEnum;
import com.worker.util.fileReader.XmlReader;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
@ -18,6 +19,8 @@ import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Collectors;
import static org.aspectj.asm.internal.ProgramElement.trim;
@Service
@RequiredArgsConstructor
@Slf4j
@ -56,32 +59,42 @@ public class DbPolling {
@Transactional
public void saveCP(List<SinmungoDto.SinmungoXml> cpList, SinmungoDto.SetInfo setInfo) {
// enum test
String txt = "[1111-01-01 01:01:01, 2222/02/02 02:02:02, 3333.03.03 03:03:03]";
List<String> parseResult1 = DateTimePatternEnum.DATETIME_FULL.extractList(txt);
List<String> parseResult2 = DateTimePatternEnum.DATE_ONLY.extractList(txt);
List<String> parseResult3 = DateTimePatternEnum.TIME_ONLY.extractList(txt);
// job group 1 = 장애인 / 2 = 전기차
List<CpMain> cpMainList = cpList.stream()
.map(xml -> CpMain.builder()
.mmCode(setInfo.getCpSetinfo().getIntValue1().toString() + "올해연도??")
.mmSggcode(setInfo.getCpSetinfo().getIntValue1().toString())
.mmIngb("1")
.mmDate()
.mmTime()
.mmLawgb()
.mmSgnm()
.mmSgtel()
.mmSgcont()
.mmSgpos()
.mmBdcode()
.mmImagecnt()
.mmImagegb()
.mmCarno()
.mmKeum1()
.mmKeum2()
.mmInuser("0")
.mmIndt()
.mmIngb("1") //신고유형?
.mmDate(DateTimePatternEnum.DATE_ONLY.extractFirst(xml.getPeti_reason_l())) //신고날짜
.mmTime(DateTimePatternEnum.TIME_ONLY.extractFirst(xml.getPeti_reason_l())) //신고시간
.mmLawgb("1") //위반항목
.mmSgnm(xml.getPeter_name_v()) //신고자 이름
.mmSgtel(xml.getDuty_id_v()) //담당자 아이디
.mmSgcont(trim(xml.getPeti_reason_l())) // 신고내용
.mmSgpos("BDCODE에서 추출??")
// .mmBdcode()
// .mmImagecnt()
// .mmImagegb()
// .mmCarno()
// .mmKeum1()
// .mmKeum2()
.mmInuser(0)
// .mmIndt()
.mmState("01")
.mmStateDt()
// .mmStateDt()
.mmDlgb("2")
.mmOmcode("0")
.mmGpsX()
.mmGpsY()
// .mmGpsX()
// .mmGpsY()
.mmVideofilenm("" + "Z.mp4")
.build())
.collect(Collectors.toUnmodifiableList());
@ -102,7 +115,7 @@ public class DbPolling {
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))

@ -1,10 +1,49 @@
package com.worker.util.common;
import com.worker.util.common.commEnum.DateTimePatternEnum;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
public class CommonUtils {
/**
*
* */
public static String truncate(String input, int maxLength) {
if (input == null) return null;
return input.length() > maxLength ? input.substring(0, maxLength) : input;
}
/**
*
* */
/**
*
* */
/**
*
* */
}

@ -0,0 +1,47 @@
package com.worker.util.common.commEnum;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public enum DateTimePatternEnum {
DATETIME_FULL("\\d{4}[-/.]\\d{2}[-/.]\\d{2} \\d{2}:\\d{2}:\\d{2}", true),
DATE_ONLY("\\d{4}[-/.]\\d{2}[-/.]\\d{2}", true),
TIME_ONLY("\\d{2}:\\d{2}:\\d{2}", true);
private final Pattern pattern;
private final boolean formatted;
DateTimePatternEnum(String regex, boolean formatted) {
this.pattern = Pattern.compile(regex);
this.formatted = formatted;
}
public String format(String raw) {
return formatted ? raw.replaceAll("[^0-9]", "") : raw;
}
/** 리스트 추출 */
public List<String> extractList(String text) {
if (text == null) return List.of();
Matcher matcher = pattern.matcher(text);
List<String> result = new ArrayList<>();
while (matcher.find()) {
result.add(format(matcher.group()));
}
return result;
}
/** 첫 번째 항목만 추출 (없으면 null) */
public String extractFirst(String text) {
if (text == null) return null;
Matcher matcher = pattern.matcher(text);
return matcher.find() ? format(matcher.group()) : null;
}
}
Loading…
Cancel
Save