feat : epost 개발중. text 파일 객체 파싱작업 완료

master
Kurt92 4 months ago
parent 4455639cb1
commit cad8887fa7

@ -1,9 +1,7 @@
package com.worker.scheduler.epost.dto;
import com.worker.domain.entity.CpBdong;
import com.worker.domain.entity.CpSetinfo;
import lombok.Builder;
import lombok.Getter;
import lombok.*;
import java.util.List;
@ -12,6 +10,8 @@ public class EPostDto {
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class SetInfo {
private CpSetinfo cpSetinfo;
@ -21,6 +21,8 @@ public class EPostDto {
}
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class EPostInfo {
private String postOffice;
@ -36,8 +38,21 @@ public class EPostDto {
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class EPostFileRead {
public static class EPostFileRead<T> {
private String kind;
private List<T> result;
}
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Recv {
private String conOrg;
private String relorsectCd;
private String reletcdata;
@ -52,6 +67,38 @@ public class EPostDto {
private String jobCd;
}
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Prt {
private String conKey;
private String restNmbr;
private String reletcdata;
private String dataCd;
private String mailCnt;
}
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class Deliv {
private String conKey;
private String regiNo;
private String delivYmd;
private String delivHhmd;
private String delivRsltCd;
private String sendDate;
private String sendTime;
private String resultCd;
private String aDate;
}
public static class SggCode {
private String sggCode;
private String sggName;

@ -0,0 +1,19 @@
package com.worker.scheduler.epost.repository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
@Repository
@RequiredArgsConstructor
public class EPostQueryDslRepository {
public void updateAAATable() {
}
}

@ -22,7 +22,6 @@ public class EPostScheduler {
private final EPostService ePostService;
private final FileReader fileReader;
// @Scheduled(fixedRate = 10 * 60 * 1000L) // 10분
public void ePostSendScheduler() {
@ -59,18 +58,18 @@ public class EPostScheduler {
EPostDto.SetInfo setInfo = ePostService.findSetInfo();
String filePath = null;
if(setInfo.getCpSetinfo().getStrValue2().equals("")) filePath = setInfo.getCpSetinfo().getStrValue2();
else filePath = setInfo.getCpSetinfo().getStrValue2();
if(!setInfo.getCpSetinfo().getStrValue4().equals("")) filePath = setInfo.getCpSetinfo().getStrValue4();
else filePath = setInfo.getEpSetinfo().getStrValue4();
// esb경로의 택스트파일 읽기
//파일읽기
FileParserInterface<List<EPostDto.EPostFileRead>> parser = new EpostTextFileParser();
List<List<EPostDto.EPostFileRead>> parseResult = fileReader.readFiles(filePath, parser, ".xml");
FileParserInterface<EPostDto.EPostFileRead> parser = new EpostTextFileParser();
List<EPostDto.EPostFileRead> parseResult = fileReader.readFiles(filePath, parser, ".txt");
// 결과 db 폴링
// 결과종류 - 접수(recv), 제작(prt), 배달(deliv)
ePostService.saveEpostResult();
ePostService.saveEpostResult(parseResult);
}

@ -26,7 +26,7 @@ public class EPostService {
// 필요한 값들
// 우편기본 = INFO_1
// 문서 정보 = DOC_CODE
// 문서 정보 = docCode
// 서버 이미지 경로 정보 = IMAGE
// 시군구 가능 여부 SG_ENABLE
// 전자고지 정보여부 '전자고지'
@ -49,26 +49,28 @@ public class EPostService {
CpSetinfo cpEpostDocInfo = cpSetinfoRepository.findById(
CpSetinfoId.builder()
.codeName(env.getProperty("e-post.doc_code.cp.codeName"))
.groupCode(env.getProperty("e-post.doc_code.cp.groupCode"))
.detailCode(env.getProperty("e-post.doc_code.cp.detailCode"))
.codeName(env.getProperty("e-post.docCode.cp.codeName"))
.groupCode(env.getProperty("e-post.docCode.cp.groupCode"))
.detailCode(env.getProperty("e-post.docCode.cp.detailCode"))
.build()
).orElse(null);
CpSetinfo epEpostDocInfo = epSetinfoRepository.findById(
CpSetinfoId.builder()
.codeName(env.getProperty("e-post.doc_code.ep.codeName"))
.groupCode(env.getProperty("e-post.doc_code.ep.groupCode"))
.detailCode(env.getProperty("e-post.doc_code.ep.detailCode"))
.codeName(env.getProperty("e-post.docCode.ep.codeName"))
.groupCode(env.getProperty("e-post.docCode.ep.groupCode"))
.detailCode(env.getProperty("e-post.docCode.ep.detailCode"))
.build()
).orElse(null);
return EPostDto.SetInfo.builder()
.cpSetinfo(cpEpostInfo)
.cpEPostInfo(
buildEPostInfo(cpEpostInfo, cpEpostDocInfo)
)
.epSetinfo(epEpostInfo)
.epEPostInfo(
buildEPostInfo(epEpostInfo, epEpostDocInfo)
)
@ -82,7 +84,11 @@ public class EPostService {
}
public void saveEpostResult() {
public void saveEpostResult(List<EPostDto.EPostFileRead> parseResult) {
}

@ -10,7 +10,7 @@ import java.util.List;
import java.util.regex.Pattern;
@Component
public class EpostTextFileParser implements FileParserInterface<List<EPostDto.EPostFileRead>> {
public class EpostTextFileParser implements FileParserInterface<EPostDto.EPostFileRead> {
/**
* split .
@ -18,12 +18,18 @@ public class EpostTextFileParser implements FileParserInterface<List<EPostDto.EP
* @return split
*/
@Override
public List<EPostDto.EPostFileRead> parse(File file) throws Exception {
final String separator = "|"; // 필요시 외부 주입 가능
public EPostDto.EPostFileRead parse(File file) throws Exception {
String fileKind = file.getName();
final String separator = "|";
final Pattern SEP = Pattern.compile(Pattern.quote(separator)); // 정규식 이스케이프
final int EXPECTED_COLS = 12; // 컬럼 수 기대치
List<EPostDto.EPostFileRead> results = new ArrayList<>();
EPostDto.EPostFileRead results = new EPostDto.EPostFileRead();
List<EPostDto.Recv> recvs = new ArrayList<>();
List<EPostDto.Prt> prts = new ArrayList<>();
List<EPostDto.Deliv> delivs = new ArrayList<>();
// 파일 인코딩이 EUC-KR 계열이면 Charset 지정 권장 (예: EUC-KR)
try (BufferedReader br = new BufferedReader(
@ -37,38 +43,82 @@ public class EpostTextFileParser implements FileParserInterface<List<EPostDto.EP
String[] item = SEP.split(line, -1);
// 컬럼 수 검증(짧으면 스킵 or 예외)
if (item.length < EXPECTED_COLS) {
// 로그 찍고 continue 하거나 예외 던지기
System.err.println("열 개수 부족: " + file.getName() + " -> " + line);
continue;
}
// if (item.length < EXPECTED_COLS) {
// // 로그 찍고 continue 하거나 예외 던지기
// System.err.println("열 개수 부족: " + file.getName() + " -> " + line);
// continue;
// }
// 필요 시 trim
// 공백제거
for (int i = 0; i < item.length; i++) item[i] = item[i].trim();
EPostDto.EPostFileRead result = EPostDto.EPostFileRead.builder()
.conOrg(item[0])
.relorsectCd(item[1])
.reletcdata(item[2])
.extriRegymd(item[3])
.rceptYmd(item[4])
.rceptId(item[5])
.divKb(item[6])
.rceptCnt(item[7])
.rceptAmt(item[8])
.usefeeAmt(item[9])
.totpostPrc(item[10])
.jobCd(item[11])
.build();
results.add(result);
if (fileKind.contains("recv")) {
recvs.add(parseToRecv(item));
results = EPostDto.EPostFileRead.<EPostDto.Recv>builder()
.kind("recv")
.result(recvs)
.build();
} else if (fileKind.contains("prt")) {
prts.add(parseToPrt(item));
results = EPostDto.EPostFileRead.<EPostDto.Prt>builder()
.kind("prt")
.result(prts)
.build();
} else if (fileKind.contains("deliv")) {
delivs.add(parseToDeliv(item));
results = EPostDto.EPostFileRead.<EPostDto.Deliv>builder()
.kind("deliv")
.result(delivs)
.build();
}
}
return results;
}
return results;
}
private EPostDto.Recv parseToRecv(String[] item) {
return EPostDto.Recv.builder()
.conOrg(item[0])
.relorsectCd(item[1])
.reletcdata(item[2])
.extriRegymd(item[3])
.rceptYmd(item[4])
.rceptId(item[5])
.divKb(item[6])
.rceptCnt(item[7])
.rceptAmt(item[8])
.usefeeAmt(item[9])
.totpostPrc(item[10])
.jobCd(item[11])
.build();
}
private EPostDto.Prt parseToPrt(String[] item) {
return EPostDto.Prt.builder()
.conKey(item[0])
.restNmbr(item[1])
.reletcdata(item[2])
.dataCd(item[3])
.mailCnt(item[4])
.build();
}
private EPostDto.Deliv parseToDeliv(String[] item) {
return EPostDto.Deliv.builder()
.conKey(item[0])
.regiNo(item[1])
.delivYmd(item[2])
.delivHhmd(item[3])
.delivRsltCd(item[4])
.sendDate(item[5])
.sendTime(item[6])
.resultCd(item[7])
.aDate(item[8])
.build();
}

@ -66,7 +66,7 @@ e-post:
codeName: EPOST_INFO
groupCode: INFO_1
detailCode: DEV
doc-code:
docCode:
cp:
codeName: EPOST_INFO
groupCode: DOC_CODE

@ -69,7 +69,7 @@ e-post:
codeName: EPOST_INFO
groupCode: INFO_1
detailCode: LOCAL
doc-code:
docCode:
cp:
codeName: EPOST_INFO
groupCode: DOC_CODE

@ -56,7 +56,7 @@ e-post:
codeName: EPOST_INFO
groupCode: INFO_1
detailCode: PROD
doc-code:
docCode:
cp:
codeName: EPOST_INFO
groupCode: DOC_CODE

@ -54,10 +54,12 @@
method: 'POST',
data: { task: taskName },
success: function (res) {
alert('실행 완료: ' + res);
alert(`${taskName} 실행 완료: ${res}`);
},
error: function (xhr, status, err) {
alert('실패: ' + err);
console.log(xhr);
console.log(xhr.status);
alert(`${taskName} 실패(${xhr.status}): ${xhr.responseText}`);
}
});
});

Loading…
Cancel
Save