diff --git a/src/main/java/com/worker/domain/repo/cp/CpEPostMakeResultRepository.java b/src/main/java/com/worker/domain/repo/cp/CpEPostMakeResultRepository.java new file mode 100644 index 0000000..9fd2620 --- /dev/null +++ b/src/main/java/com/worker/domain/repo/cp/CpEPostMakeResultRepository.java @@ -0,0 +1,8 @@ +package com.worker.domain.repo.cp; + +import com.worker.domain.entity.EpostMakeResult; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CpEPostMakeResultRepository extends JpaRepository { + EpostMakeResult findByConkeyAndRgstNmbr(); +} diff --git a/src/main/java/com/worker/domain/repo/ep/EpEPostMakeResultRepository.java b/src/main/java/com/worker/domain/repo/ep/EpEPostMakeResultRepository.java new file mode 100644 index 0000000..53dbe53 --- /dev/null +++ b/src/main/java/com/worker/domain/repo/ep/EpEPostMakeResultRepository.java @@ -0,0 +1,7 @@ +package com.worker.domain.repo.ep; + +import com.worker.domain.entity.EpostMakeResult; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EpEPostMakeResultRepository extends JpaRepository { +} diff --git a/src/main/java/com/worker/scheduler/epost/dto/EPostDto.java b/src/main/java/com/worker/scheduler/epost/dto/EPostDto.java index a3c1a6c..594e386 100644 --- a/src/main/java/com/worker/scheduler/epost/dto/EPostDto.java +++ b/src/main/java/com/worker/scheduler/epost/dto/EPostDto.java @@ -89,6 +89,25 @@ public class EPostDto { private String jobCd; private String tgCode; private String postProcStt; + + public void changePostProcStt(String postProcStt) { + switch(postProcStt) { + case "20": + this.postProcStt = "80"; //제작완료 + case "21": + this.postProcStt = "21"; //제작불가-매수초과 + case "22": + this.postProcStt = "22"; //제작불가-파일오류 + case "23": + this.postProcStt = "23"; //제작불가-첨부파일누락 + case "24": + this.postProcStt = "24"; //제작불가-제작전취소 + case "61": + this.postProcStt = "61"; //제작불가-수취인 건수 오류 + case "62": + this.postProcStt = "62"; //제작불가-첨부파일 없음 + } + } } @Getter diff --git a/src/main/java/com/worker/scheduler/epost/repository/EPostQueryDslRepository.java b/src/main/java/com/worker/scheduler/epost/repository/EPostQueryDslRepository.java index c5b998c..fbb3375 100644 --- a/src/main/java/com/worker/scheduler/epost/repository/EPostQueryDslRepository.java +++ b/src/main/java/com/worker/scheduler/epost/repository/EPostQueryDslRepository.java @@ -117,7 +117,7 @@ public class EPostQueryDslRepository { } - public List findRceptResult(JPAQueryFactory queryFactory, List dtos, Set cpDeptCode) { + public List findRecvResult(JPAQueryFactory queryFactory, List dtos, Set cpDeptCode) { List conKeys = dtos.stream() .map(EPostDto.Recv::getReletcdata) @@ -153,7 +153,7 @@ public class EPostQueryDslRepository { return results; } - public void updateRceptResult(JPAQueryFactory queryFactory, List dtos, List results) { + public void updateRecvResult(JPAQueryFactory queryFactory, List dtos, List results) { //gojit tg_post_proc_stt 가 05 미만이면 '05' 로 업데이트 results.forEach(result -> { diff --git a/src/main/java/com/worker/scheduler/epost/service/EPostService.java b/src/main/java/com/worker/scheduler/epost/service/EPostService.java index f970dfe..13fa802 100644 --- a/src/main/java/com/worker/scheduler/epost/service/EPostService.java +++ b/src/main/java/com/worker/scheduler/epost/service/EPostService.java @@ -38,6 +38,8 @@ public class EPostService { private final EpEpostRceptResultRepository epEpostRceptResultRepository; private final CpEpostDelivResultRepository cpEpostDelivResultRepository; private final EpEpostDelivResultRepository epEpostDelivResultRepository; + private final CpEPostMakeResultRepository cpEPostMakeResultRepository; + private final EpEPostMakeResultRepository epEPostMakeResultRepository; private final CpEPostSenderDetailRepository cpEPostSenderDetailRepository; private final EpEPostSenderDetailRepository epEPostSenderDetailRepository; private final CpEPostSenderRegRepository cpEPostSenderRegRepository; @@ -94,9 +96,9 @@ public class EPostService { } case "recv" -> { if(setInfo.getCpSetinfo() != null) - cpRecvs.addAll(ePostQueryDslRepository.findRceptResult(cpQueryFactory, e.getResult(), cpDeptCode)); + cpRecvs.addAll(ePostQueryDslRepository.findRecvResult(cpQueryFactory, e.getResult(), cpDeptCode)); if(setInfo.getEpSetinfo() != null) - epRecvs.addAll(ePostQueryDslRepository.findRceptResult(epQueryFactory, e.getResult(), cpDeptCode)); + epRecvs.addAll(ePostQueryDslRepository.findRecvResult(epQueryFactory, e.getResult(), cpDeptCode)); } case "prt" -> { if(setInfo.getCpSetinfo() != null) @@ -123,6 +125,12 @@ public class EPostService { if (epDelivs != null && !epDelivs.isEmpty()) { insertDelivResults(epDelivs, parseResult, "ep"); } + if(cpPrts != null && !cpPrts.isEmpty()) { + insertPrtResults(cpPrts, parseResult, "cp"); + } + if(epPrts != null && !epPrts.isEmpty()) { + insertPrtResults(epPrts, parseResult, "ep"); + } // if (delivs != null && !delivs.isEmpty()) insertDelivResults(delivs); // if (prts != null && !prts.isEmpty()) insertPrtResults(prts); @@ -132,6 +140,68 @@ public class EPostService { } + private void insertPrtResults(List prts, List parseResults, String dbKind) { + + //파싱완료한 파일중 prt만 추출 + List prtFileResults = parseResults.stream() + .filter(r -> "prt".equalsIgnoreCase(r.getKind())) + .flatMap(r -> ((List) r.getResult()).stream()) + .collect(Collectors.toList()); + + + //post_proc_stt 업데이트 + prtFileResults.forEach(fileResult -> { + for(int i = 0; i < prts.size(); i++) { + // postProcStt 코드 재구성 + prts.get(i).changePostProcStt(prts.get(i).getPostProcStt()); + + //if post_proc_stt가 80보다 작으면 처리상태 변경 + if(Integer.parseInt(prts.get(i).getPostProcStt()) < 80) { + // gijit 업데이트 + CpGojit cpGojit = CpGojit.builder() + .tgPostProcStt(prts.get(i).getPostProcStt()) + .tgCode(Long.valueOf(prts.get(i).getTgCode())) + .build(); + if(dbKind.equals("cp")) cpGojitRepository.save(cpGojit); + else epGojitRepository.save(cpGojit); + + // EPOST_SENDER_REG 업데이트 + EpostSenderReg epostSenderReg = EpostSenderReg.builder() + .postProcStt(prts.get(i).getPostProcStt()) + .conKey(prts.get(i).getConKey()) + .build(); + if(dbKind.equals("cp")) cpEPostSenderRegRepository.save(epostSenderReg); + else epEPostSenderRegRepository.save(epostSenderReg); + + } + + //EPOST_MAKE_RESULT 의 콘키와 등기번호로 조회한 결과가 없으면 + EpostMakeResult epostMakeResult = null; + if(dbKind.equals("cp")) epostMakeResult = cpEPostMakeResultRepository.findByConkeyAndRgstNmbr(); + else epostMakeResult = cpEPostMakeResultRepository.findByConkeyAndRgstNmbr(); + + //EPOST_MAKE_RESULT 인서트 + if(epostMakeResult == null) { + EpostMakeResult epostMakeNewResult = EpostMakeResult.builder() + .conKey(fileResult.getConKey()) + .rgstNmbr(fileResult.getRestNmbr()) + .reletcData(fileResult.getReletcdata()) + .dataCd(fileResult.getDataCd()) + .mailCnt(fileResult.getMailCnt()) + .build(); + + if (dbKind.equals("cp")) cpEPostMakeResultRepository.save(epostMakeNewResult); + else epEPostMakeResultRepository.save(epostMakeNewResult); + } + } + }); + + + + + } + + private void insertDelivResults(List delivs, List parseResults, String dbKind) { List cpGojiSendHists = new ArrayList<>(); @@ -251,6 +321,7 @@ public class EPostService { + private void insertReceiveResults(List recvs) { @@ -263,8 +334,7 @@ public class EPostService { - private void insertPrtResults(List prts) {} - private void insertRecvResults(List recvs) {} +