feat : jpa레파지토리 정의하지 않은 필드 null로 들어감. -> queryDsl 업데이트로 수정. epost로직 커져서 send / recv 클래스 분리
parent
f4da3c50ea
commit
3015edc4c3
@ -0,0 +1,245 @@
|
||||
package com.worker.scheduler.epost.repository;
|
||||
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.core.types.dsl.Expressions;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import com.worker.domain.entity.EpostRgstNmbr;
|
||||
import com.worker.domain.entity.EpostSenderDetail;
|
||||
import com.worker.scheduler.epost.dto.EPostDto;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.worker.domain.entity.QCpGojiPrt.cpGojiPrt;
|
||||
import static com.worker.domain.entity.QCpGojit.cpGojit;
|
||||
import static com.worker.domain.entity.QCpInstruct.cpInstruct;
|
||||
import static com.worker.domain.entity.QCpInstructAnswer.cpInstructAnswer;
|
||||
import static com.worker.domain.entity.QEpostRgstNmbr.epostRgstNmbr;
|
||||
import static com.worker.domain.entity.QEpostSenderDetail.epostSenderDetail;
|
||||
import static com.worker.domain.entity.QEpostSenderReg.epostSenderReg;
|
||||
import static com.worker.domain.entity.QTbCntcSndngDetail.tbCntcSndngDetail;
|
||||
import static com.worker.domain.entity.QTbCntcSndngResult.tbCntcSndngResult;
|
||||
|
||||
@Repository
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class EPostSendQueryDslRepository {
|
||||
|
||||
|
||||
/**
|
||||
* 발송 대상 타겟 조회
|
||||
* */
|
||||
public List<EPostDto.SendTarget.Key> findSendTargetKeys(JPAQueryFactory queryFactory) {
|
||||
|
||||
List<EPostDto.SendTarget.Key> result = queryFactory
|
||||
.select(
|
||||
Projections.fields(
|
||||
EPostDto.SendTarget.Key.class,
|
||||
epostSenderReg.tgCode,
|
||||
epostSenderReg.conKey,
|
||||
epostSenderReg.postProcStt,
|
||||
epostSenderReg.regYmd,
|
||||
cpGojit.tgGb,
|
||||
Expressions.as(Expressions.nullExpression(String.class), "tgPostYn"),
|
||||
Expressions.as(Expressions.nullExpression(String.class), "tgUnitySndngMastrId")
|
||||
)
|
||||
)
|
||||
.from(epostSenderReg)
|
||||
.leftJoin(cpGojit).on(epostSenderReg.tgCode.eq(cpGojit.tgCode.stringValue()))
|
||||
.where(epostSenderReg.postProcStt.eq("01"))
|
||||
.fetch();
|
||||
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 일반 발송 상세 조회
|
||||
* */
|
||||
public List<EPostDto.SendTarget.Target> findSendTargets(JPAQueryFactory queryFactory, List<EPostDto.SendTarget.Key> keys) {
|
||||
|
||||
List<String> tgCode = keys.stream().map(EPostDto.SendTarget.Key::getTgCode).collect(Collectors.toList());
|
||||
List<String> conKey = keys.stream().map(EPostDto.SendTarget.Key::getConKey).collect(Collectors.toList());
|
||||
|
||||
List<EPostDto.SendTarget.Target> result = queryFactory
|
||||
.select(
|
||||
Projections.fields(
|
||||
EPostDto.SendTarget.Target.class,
|
||||
epostSenderReg.tgCode,
|
||||
epostSenderReg.conKey,
|
||||
epostSenderDetail.rgstNmbr,
|
||||
epostSenderDetail.recevSeq,
|
||||
epostSenderReg.rceptId,
|
||||
epostSenderReg.dataCd,
|
||||
epostSenderReg.divKb,
|
||||
epostSenderReg.dfpayyn,
|
||||
epostSenderReg.rcptKb,
|
||||
epostSenderReg.sealCd,
|
||||
epostSenderReg.wordKb,
|
||||
epostSenderReg.mailCnt,
|
||||
epostSenderReg.envCd,
|
||||
epostSenderReg.colorYn,
|
||||
epostSenderReg.mmYn,
|
||||
epostSenderReg.flexCd,
|
||||
epostSenderReg.dmCnt,
|
||||
epostSenderReg.sbFg,
|
||||
epostSenderReg.apvlNb,
|
||||
epostSenderReg.sendDate,
|
||||
epostSenderReg.sendTime,
|
||||
epostSenderReg.relorsectCd
|
||||
)
|
||||
)
|
||||
.from(epostSenderReg)
|
||||
.innerJoin(epostSenderDetail).on(epostSenderReg.conKey.eq(epostSenderDetail.conKey))
|
||||
.leftJoin(cpInstruct).on(epostSenderDetail.recevSeq.eq(cpInstruct.itMmcode))
|
||||
.leftJoin(cpInstructAnswer).on(
|
||||
cpInstruct.itSggcode.eq(cpInstructAnswer.id.iaSggcode),
|
||||
cpInstruct.itCause.eq(cpInstructAnswer.id.iaCode)
|
||||
)
|
||||
.where(
|
||||
epostSenderReg.postProcStt.eq("01"),
|
||||
epostSenderReg.tgCode.in(tgCode),
|
||||
epostSenderReg.conKey.in(conKey)
|
||||
)
|
||||
.fetch();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 전자고지 쓰는 서버 발송 타겟 상세 조회
|
||||
* 전자고지 테이블 조인함.
|
||||
* */
|
||||
public List<EPostDto.SendTarget.Target> findSendEgojiTargets(JPAQueryFactory queryFactory, List<EPostDto.SendTarget.Key> keys) {
|
||||
|
||||
List<String> tgCode = keys.stream().map(EPostDto.SendTarget.Key::getTgCode).collect(Collectors.toList());
|
||||
List<String> conKey = keys.stream().map(EPostDto.SendTarget.Key::getConKey).collect(Collectors.toList());
|
||||
List<String> unitySndngMastrId = keys.stream().map(EPostDto.SendTarget.Key::getTgUnitySndngMastrId).collect(Collectors.toList());
|
||||
|
||||
List<EPostDto.SendTarget.Target> result = queryFactory
|
||||
.select(
|
||||
Projections.fields(
|
||||
EPostDto.SendTarget.Target.class,
|
||||
epostSenderReg.tgCode,
|
||||
epostSenderReg.conKey,
|
||||
epostSenderDetail.rgstNmbr,
|
||||
epostSenderDetail.recevSeq,
|
||||
tbCntcSndngResult.sndngResultSttus
|
||||
)
|
||||
)
|
||||
.from(epostSenderReg)
|
||||
.innerJoin(epostSenderDetail).on(epostSenderReg.conKey.eq(epostSenderDetail.conKey))
|
||||
.leftJoin(cpInstruct).on(epostSenderDetail.recevSeq.eq(cpInstruct.itMmcode))
|
||||
.leftJoin(cpInstructAnswer).on(
|
||||
cpInstruct.itSggcode.eq(cpInstructAnswer.id.iaSggcode),
|
||||
cpInstruct.itCause.eq(cpInstructAnswer.id.iaCode)
|
||||
)
|
||||
.leftJoin(tbCntcSndngDetail).on(epostSenderDetail.recevSeq.eq(tbCntcSndngDetail.mainCode))
|
||||
.leftJoin(tbCntcSndngResult).on(tbCntcSndngDetail.unitySndngDetailId.eq(tbCntcSndngResult.unitySndngDetailId))
|
||||
.where(
|
||||
epostSenderReg.postProcStt.eq("01"),
|
||||
epostSenderReg.tgCode.in(tgCode),
|
||||
epostSenderReg.conKey.in(conKey),
|
||||
tbCntcSndngDetail.unitySndngMastrId.in(unitySndngMastrId),
|
||||
tbCntcSndngResult.sndngResultSttus.ne("READ")
|
||||
.and(tbCntcSndngResult.sndngResultSttus.isNull()
|
||||
)
|
||||
)
|
||||
.fetch();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* RegYmd 30일 초과한 자료들 취소상태로 변경
|
||||
* */
|
||||
public void updateOldPostToCancel(JPAQueryFactory queryFactory, List<EPostDto.SendTarget.Key> oldPosts) {
|
||||
|
||||
List<String> conKeys = oldPosts.stream()
|
||||
.map(post -> post.getConKey())
|
||||
.collect(Collectors.toUnmodifiableList());
|
||||
|
||||
queryFactory.update(epostSenderReg)
|
||||
.set(epostSenderReg.postProcStt, "02")
|
||||
.where(epostSenderReg.conKey.in(conKeys))
|
||||
.execute();
|
||||
}
|
||||
|
||||
/**
|
||||
* 등기번호 포인터
|
||||
* */
|
||||
public void updateTrgstNmbrPoint(JPAQueryFactory queryFactory, EpostRgstNmbr trgstNmbr){
|
||||
queryFactory.update(epostRgstNmbr)
|
||||
.set(epostRgstNmbr.pcursor, "0")
|
||||
.where(epostRgstNmbr.rgstNmbr.eq(trgstNmbr.getRgstNmbr()))
|
||||
.execute();
|
||||
|
||||
queryFactory.update(epostRgstNmbr)
|
||||
.set(epostRgstNmbr.pcursor, "1")
|
||||
.where(epostRgstNmbr.rgstNmbr.eq(trgstNmbr.getRgstNmbrNext()))
|
||||
.execute();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* */
|
||||
public void updateSenderRegPostStt(JPAQueryFactory queryFactory, List<EPostDto.SendTarget.Target> cpSendTargets) {
|
||||
|
||||
List<String> conKeys = cpSendTargets.stream()
|
||||
.map(post -> post.getConKey())
|
||||
.collect(Collectors.toUnmodifiableList());
|
||||
|
||||
queryFactory.update(epostSenderReg)
|
||||
.set(epostSenderReg.postProcStt, "03")
|
||||
.where(epostSenderReg.conKey.in(conKeys))
|
||||
.execute();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* */
|
||||
public void updateGojitPostYn(JPAQueryFactory queryFactory, List<EPostDto.SendTarget.Target> cpSendEgojiTargets) {
|
||||
|
||||
List<String> conKeys = cpSendEgojiTargets.stream()
|
||||
.map(post -> post.getConKey())
|
||||
.collect(Collectors.toUnmodifiableList());
|
||||
|
||||
queryFactory.update(cpGojit)
|
||||
.set(cpGojit.tgPostYn, "Y")
|
||||
.where(cpGojit.tgConKey.in(conKeys))
|
||||
.execute();
|
||||
}
|
||||
|
||||
public void updateTrgstNmbr(JPAQueryFactory queryFactory, EPostDto.SendTarget.Target target, String trgstNmbr) {
|
||||
queryFactory.update(epostSenderDetail)
|
||||
.set(epostSenderDetail.rgstNmbr, trgstNmbr)
|
||||
.where(
|
||||
epostSenderDetail.conKey.eq(target.getConKey()),
|
||||
epostSenderDetail.recevSeq.eq(target.getRecevSeq())
|
||||
)
|
||||
.execute();
|
||||
|
||||
queryFactory.update(cpGojiPrt)
|
||||
.set(cpGojiPrt.gpRegistNo, trgstNmbr)
|
||||
.where(
|
||||
cpGojiPrt.gpConKey.eq(target.getConKey()),
|
||||
cpGojiPrt.gpMmcode.eq(target.getRecevSeq())
|
||||
)
|
||||
.execute();
|
||||
}
|
||||
|
||||
public void updatePostSendState(JPAQueryFactory queryFactory, EPostDto.SendTarget.Target target) {
|
||||
queryFactory.update(epostSenderDetail)
|
||||
.set(epostSenderDetail.postSendState, "1")
|
||||
.where(
|
||||
epostSenderDetail.conKey.eq(target.getConKey()),
|
||||
epostSenderDetail.recevSeq.eq(target.getRecevSeq())
|
||||
)
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,267 @@
|
||||
package com.worker.scheduler.epost.service;
|
||||
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import com.worker.domain.entity.CpGojiPrt;
|
||||
import com.worker.domain.entity.EpostRgstNmbr;
|
||||
import com.worker.domain.entity.EpostSenderDetail;
|
||||
import com.worker.domain.repo.cp.CpEPostRgstNmbr;
|
||||
import com.worker.domain.repo.ep.EpEPostRgstNmbr;
|
||||
import com.worker.scheduler.epost.dto.EPostDto;
|
||||
import com.worker.scheduler.epost.repository.EPostQueryDslRepository;
|
||||
import com.worker.scheduler.epost.repository.EPostSendQueryDslRepository;
|
||||
import com.worker.util.common.CommonUtils;
|
||||
import com.worker.util.textFileMacker.TextMaker;
|
||||
import com.worker.util.zipFileMaker.ZipMaker;
|
||||
import jakarta.transaction.Transactional;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class EPostSendService {
|
||||
|
||||
private final Environment env;
|
||||
private final CommonUtils utils;
|
||||
private final ZipMaker zipMaker;
|
||||
private final TextMaker textMaker;
|
||||
|
||||
private final CpEPostRgstNmbr cpEPostRgstNmbr;
|
||||
private final EpEPostRgstNmbr epEPostRgstNmbr;
|
||||
|
||||
private final EPostSendQueryDslRepository ePostSendQueryDslRepository;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("cpQueryFactory")
|
||||
private JPAQueryFactory cpQueryFactory;
|
||||
|
||||
@Autowired
|
||||
@Qualifier("epQueryFactory")
|
||||
private JPAQueryFactory epQueryFactory;
|
||||
|
||||
|
||||
|
||||
@Transactional
|
||||
public void findEPostSendTarget(EPostDto.SetInfo setInfo) {
|
||||
|
||||
List<EPostDto.SendTarget.Key> cpSendTargetKeys = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Key> epSendTargetKeys = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Key> cpSendEpostTargetKeys = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Key> epSendEpostTargetKeys = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Key> cpSendEgojiTargetKeys = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Key> epSendEgojiTargetKeys = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Target> cpSendEpostTargets = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Target> epSendEpostTargets = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Target> cpSendEgojiTargets = new ArrayList<>();
|
||||
List<EPostDto.SendTarget.Target> epSendEgojiTargets = new ArrayList<>();
|
||||
|
||||
// 타겟의 키,code 조회
|
||||
// getTgPostYn 이 전자고지를 안쓰는 경우 컬럼자체가 존재하지 않음.
|
||||
// 해서 queryDsl에서는 익스프래셔으로 널처리
|
||||
//Gojit
|
||||
if(setInfo.getCpEPostInfo() != null) cpSendTargetKeys = ePostSendQueryDslRepository.findSendTargetKeys(cpQueryFactory);
|
||||
if(setInfo.getEpEPostInfo() != null) epSendTargetKeys = ePostSendQueryDslRepository.findSendTargetKeys(epQueryFactory);
|
||||
|
||||
//대상 없으면 매서드 종료
|
||||
if(cpSendTargetKeys.isEmpty() && epSendTargetKeys.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// REG_YMD 오늘기준 30일 이전 자료들 취소(POST_PROC_STT = '02') 로 변경
|
||||
List<EPostDto.SendTarget.Key> cancelled = new ArrayList<>();
|
||||
try {
|
||||
cancelled = cancelOldPost(cpSendTargetKeys, epSendTargetKeys);
|
||||
} catch (Exception e) {
|
||||
log.error("30일 이전 자료들 취소 실패: cpKeys={}, epKeys={}", cpSendTargetKeys == null ? 0 : cpSendTargetKeys.size(), epSendTargetKeys == null ? 0 : epSendTargetKeys.size(), e);
|
||||
throw e;
|
||||
}
|
||||
// 30일 초과 자료들 콘키 추출
|
||||
Set<String> cancelledKeys = cancelled.stream()
|
||||
.map(EPostDto.SendTarget.Key::getConKey)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
|
||||
// 전자고지/일반 대상 분리
|
||||
// getTgPostYn 널처리
|
||||
// 스트림에서는 오브젝트 이퀄로 널처리 (null 이면 걸러짐)
|
||||
// 30일 초과 자료들 제외
|
||||
cpSendEgojiTargetKeys = cpSendTargetKeys.stream()
|
||||
.filter(target -> Objects.equals(target.getTgPostYn(), "E"))
|
||||
.filter(target -> !cancelledKeys.contains(target.getConKey()))
|
||||
.toList();
|
||||
epSendEgojiTargetKeys = epSendTargetKeys.stream()
|
||||
.filter(target -> Objects.equals(target.getTgPostYn(), "E"))
|
||||
.filter(target -> !cancelledKeys.contains(target.getConKey()))
|
||||
.toList();
|
||||
cpSendEpostTargetKeys = cpSendTargetKeys.stream()
|
||||
.filter(target -> target.getTgPostYn() == null || target.getTgPostYn().equals("N"))
|
||||
.filter(target -> !cancelledKeys.contains(target.getConKey()))
|
||||
.toList();
|
||||
epSendEpostTargetKeys = epSendTargetKeys.stream()
|
||||
.filter(target -> target.getTgPostYn() == null || target.getTgPostYn().equals("N"))
|
||||
.filter(target -> !cancelledKeys.contains(target.getConKey()))
|
||||
.toList();
|
||||
|
||||
|
||||
|
||||
// 조회한 키로 cpSendTargets 의 상세내용 조회
|
||||
// qryFor
|
||||
// 일반
|
||||
if(!cpSendEpostTargetKeys.isEmpty()) cpSendEpostTargets = ePostSendQueryDslRepository.findSendTargets(cpQueryFactory, cpSendTargetKeys);
|
||||
if(!epSendEpostTargetKeys.isEmpty()) epSendEpostTargets = ePostSendQueryDslRepository.findSendTargets(epQueryFactory, epSendTargetKeys);
|
||||
|
||||
|
||||
if(setInfo.getCpIsEns() || setInfo.getEpIsEns()) {
|
||||
// 전자고지 대상 조회
|
||||
// qryEgoji
|
||||
if (setInfo.getCpIsEns())
|
||||
cpSendEgojiTargets = ePostSendQueryDslRepository.findSendEgojiTargets(cpQueryFactory, cpSendEgojiTargetKeys);
|
||||
if (setInfo.getEpIsEns())
|
||||
epSendEgojiTargets = ePostSendQueryDslRepository.findSendEgojiTargets(epQueryFactory, epSendEgojiTargetKeys);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//notice(안내문구 인거같음)
|
||||
//goit notice 조인
|
||||
// notice 안씀. 관련 로직 폐기해도 됨.
|
||||
|
||||
|
||||
// 사전통보 or 계도 대상에서 mmcode만 추출 (prt_gubun = '0'사전통보 || prt_gubun = 'A' 계도)
|
||||
// 사전 & 계도는 사진 같이 나감.
|
||||
final List<EPostDto.SendTarget.Target> cpTargets = Optional.ofNullable(cpSendEpostTargets).orElseGet(List::of);
|
||||
List<String> targetCpMmCodes = cpSendTargetKeys.stream()
|
||||
.filter(o -> "0".equals(o.getTgGb()) || "A".equals(o.getTgGb()))
|
||||
.flatMap(o -> cpTargets.stream()
|
||||
.filter(t -> Objects.equals(o.getConKey(), t.getConKey()))
|
||||
.map(EPostDto.SendTarget.Target::getRecevSeq))
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
|
||||
final List<EPostDto.SendTarget.Target> epTargets = Optional.ofNullable(epSendEpostTargets).orElseGet(List::of);
|
||||
List<String> targetEpMmCodes = epSendTargetKeys.stream()
|
||||
.filter(o -> "0".equals(o.getTgGb()) || "A".equals(o.getTgGb()))
|
||||
.flatMap(o -> epTargets.stream()
|
||||
.filter(t -> Objects.equals(o.getConKey(), t.getConKey()))
|
||||
.map(EPostDto.SendTarget.Target::getRecevSeq))
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
|
||||
// mmcode로 이미지 파일 찾아서 zip생성
|
||||
try {
|
||||
zipMaker.generateZipFile(targetCpMmCodes, targetEpMmCodes, setInfo);
|
||||
} catch (Exception e) {
|
||||
log.error("ZIP 파일 생성 실패 : " + e.getMessage());
|
||||
}
|
||||
|
||||
// SendTargets 돌면서 전자고지인지 체크
|
||||
// 거기서 대기상태("E") 인 얘들의 등기번호를 업데이트
|
||||
// cpSendEgojiTargetKeys 등기번호 업데이트 하면 될듯
|
||||
egojiNonReadTargetsUpdateTrgstNmbr(cpSendEgojiTargets, epSendEgojiTargets);
|
||||
|
||||
// POST_SEND_STATE 업데이트 to "1"
|
||||
updateSendState(cpSendEpostTargets, epSendEpostTargets, cpSendEgojiTargets, epSendEgojiTargets);
|
||||
|
||||
|
||||
//qryRegSet POST_PROC_STT = 03, TG_POST_YN = "Y" 으로 업데이트
|
||||
if(!cpSendEpostTargets.isEmpty()) ePostSendQueryDslRepository.updateSenderRegPostStt(cpQueryFactory, cpSendEpostTargets);
|
||||
if(!cpSendEgojiTargets.isEmpty()) ePostSendQueryDslRepository.updateGojitPostYn(epQueryFactory, epSendEgojiTargets);
|
||||
if(!epSendEpostTargets.isEmpty()) ePostSendQueryDslRepository.updateSenderRegPostStt(cpQueryFactory, cpSendEpostTargets);
|
||||
if(!epSendEgojiTargets.isEmpty()) ePostSendQueryDslRepository.updateGojitPostYn(epQueryFactory, epSendEgojiTargets);
|
||||
|
||||
|
||||
// 택스트파일 생성
|
||||
textMaker.generateTextFile(cpSendEpostTargets);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
private List<EPostDto.SendTarget.Key> cancelOldPost(List<EPostDto.SendTarget.Key> cpSendTargetKeys, List<EPostDto.SendTarget.Key> epSendTargetKeys) {
|
||||
|
||||
String before30DaysFromNow = LocalDateTime.now().minusDays(30).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
||||
List<EPostDto.SendTarget.Key> returnSuccessPosts = new ArrayList<>();
|
||||
|
||||
List<EPostDto.SendTarget.Key> oldCpPosts = cpSendTargetKeys.stream()
|
||||
.filter(post -> post.getRegYmd().compareTo(before30DaysFromNow) < 0)
|
||||
.toList();
|
||||
|
||||
List<EPostDto.SendTarget.Key> oldEpPosts = epSendTargetKeys.stream()
|
||||
.filter(post -> post.getRegYmd().compareTo(before30DaysFromNow) < 0)
|
||||
.toList();
|
||||
|
||||
if(!oldCpPosts.isEmpty()) ePostSendQueryDslRepository.updateOldPostToCancel(cpQueryFactory, oldCpPosts);
|
||||
if(!oldEpPosts.isEmpty()) ePostSendQueryDslRepository.updateOldPostToCancel(epQueryFactory, oldEpPosts);
|
||||
|
||||
// 30일 초과한 발송 리턴
|
||||
returnSuccessPosts.addAll(oldCpPosts);
|
||||
returnSuccessPosts.addAll(oldEpPosts);
|
||||
|
||||
return returnSuccessPosts;
|
||||
}
|
||||
|
||||
|
||||
private void egojiNonReadTargetsUpdateTrgstNmbr(List<EPostDto.SendTarget.Target> cpSendEgojiTargets, List<EPostDto.SendTarget.Target> epSendEgojiTargets) {
|
||||
|
||||
|
||||
if(!cpSendEgojiTargets.isEmpty())
|
||||
cpSendEgojiTargets.forEach(cpEpostSenderDetail -> {
|
||||
ePostSendQueryDslRepository.updateTrgstNmbr(cpQueryFactory, cpEpostSenderDetail, generateTrgstNmbr("cp"));
|
||||
});
|
||||
if(!epSendEgojiTargets.isEmpty())
|
||||
epSendEgojiTargets.forEach(epEpostSenderDetail -> {
|
||||
ePostSendQueryDslRepository.updateTrgstNmbr(cpQueryFactory, epEpostSenderDetail, generateTrgstNmbr("ep"));
|
||||
});
|
||||
}
|
||||
|
||||
private void updateSendState(
|
||||
List<EPostDto.SendTarget.Target> cpSendEpostTargets, List<EPostDto.SendTarget.Target> epSendEpostTargets,
|
||||
List<EPostDto.SendTarget.Target> cpSendEgojiTargets, List<EPostDto.SendTarget.Target> epSendEgojiTargets) {
|
||||
|
||||
if(!cpSendEpostTargets.isEmpty())
|
||||
cpSendEpostTargets.forEach(cpSendTarget -> {
|
||||
ePostSendQueryDslRepository.updatePostSendState(cpQueryFactory, cpSendTarget);
|
||||
});
|
||||
if(!epSendEpostTargets.isEmpty())
|
||||
epSendEpostTargets.forEach(epSendTarget -> {
|
||||
ePostSendQueryDslRepository.updatePostSendState(epQueryFactory, epSendTarget);
|
||||
});
|
||||
if(!cpSendEgojiTargets.isEmpty())
|
||||
cpSendEgojiTargets.forEach(cpSendEgojiTarget -> {
|
||||
ePostSendQueryDslRepository.updatePostSendState(cpQueryFactory, cpSendEgojiTarget);
|
||||
});
|
||||
if(!epSendEgojiTargets.isEmpty())
|
||||
epSendEgojiTargets.forEach(epSendEgojiTarget -> {
|
||||
ePostSendQueryDslRepository.updatePostSendState(epQueryFactory, epSendEgojiTarget);
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
private String generateTrgstNmbr(String dbKind) {
|
||||
// select * from EPOST_RGST_NMBR where pcursor= '1' ;
|
||||
String regiNo = null;
|
||||
EpostRgstNmbr cpTrgstNmbr = cpEPostRgstNmbr.findByPcursor("1");
|
||||
EpostRgstNmbr epTrgstNmbr = epEPostRgstNmbr.findByPcursor("1");
|
||||
|
||||
if(dbKind.equals("cp")) {
|
||||
regiNo = cpTrgstNmbr.getRgstNmbr();
|
||||
ePostSendQueryDslRepository.updateTrgstNmbrPoint(cpQueryFactory, cpTrgstNmbr);
|
||||
}
|
||||
if(dbKind.equals("ep")) {
|
||||
regiNo = epTrgstNmbr.getRgstNmbr();
|
||||
ePostSendQueryDslRepository.updateTrgstNmbrPoint(epQueryFactory, epTrgstNmbr);
|
||||
}
|
||||
return regiNo;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue