diff --git a/README.md b/README.md
index 30e5bf4..ad16361 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
# 델파이 데몬 마이그레이션
-
+KISS(Keep it Simple, Stupid)
+YAGNI(You Ain't Gonna Need It)
### 연계 디비폴링, 프로그램 업데이트를 위한 워커
기존 델파이 데몬을 스프링 스케쥴러로 대체한다.
manual > 수동실행 및 모니터링
diff --git a/src/main/java/com/worker/domain/entity/CpInstruct.java b/src/main/java/com/worker/domain/entity/CpInstruct.java
new file mode 100644
index 0000000..fad8c9a
--- /dev/null
+++ b/src/main/java/com/worker/domain/entity/CpInstruct.java
@@ -0,0 +1,49 @@
+package com.worker.domain.entity;
+
+import jakarta.persistence.*;
+import lombok.*;
+
+
+@Entity
+@Table(
+ name = "cp_instruct",
+ indexes = {
+ @Index(name = "CP_INSTRUCT_IDX1", columnList = "IT_MMCODE"),
+ @Index(name = "CP_INSTRUCT_IDX2", columnList = "IT_SGGCODE, IT_DATE")
+ }
+)
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@ToString
+public class CpInstruct {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "IT_CODE", nullable = false)
+ private Long itCode;
+
+ @Column(name = "IT_SGGCODE", length = 5)
+ private String itSggcode;
+
+ @Column(name = "IT_MMCODE", length = 16)
+ private String itMmcode;
+
+ @Column(name = "IT_DATE", length = 8)
+ private String itDate;
+
+ @Column(name = "IT_CAUSE", length = 2)
+ private String itCause;
+
+ @Column(name = "IT_ETC", length = 100)
+ private String itEtc;
+
+ @Column(name = "IT_INDT", length = 14)
+ private String itIndt;
+
+ @Column(name = "IT_INUSER")
+ private Integer itInuser;
+}
+
diff --git a/src/main/java/com/worker/domain/entity/CpInstructAnswer.java b/src/main/java/com/worker/domain/entity/CpInstructAnswer.java
new file mode 100644
index 0000000..408bfa5
--- /dev/null
+++ b/src/main/java/com/worker/domain/entity/CpInstructAnswer.java
@@ -0,0 +1,34 @@
+package com.worker.domain.entity;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.EmbeddedId;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Entity
+@Table(name = "cp_instruct_answer")
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class CpInstructAnswer {
+
+ @EmbeddedId
+ private CpInstructAnswerId id;
+
+ @Column(name = "IA_ID", length = 50)
+ private String iaId;
+
+ @Column(name = "IA_ANSWERTEXT", length = 500)
+ private String iaAnswerText;
+
+ @Column(name = "IA_MAILTITLE", length = 100)
+ private String iaMailTitle;
+
+ @Column(name = "IA_MAILTEXT", length = 1000)
+ private String iaMailText;
+}
\ No newline at end of file
diff --git a/src/main/java/com/worker/domain/entity/CpInstructAnswerId.java b/src/main/java/com/worker/domain/entity/CpInstructAnswerId.java
new file mode 100644
index 0000000..7b944c1
--- /dev/null
+++ b/src/main/java/com/worker/domain/entity/CpInstructAnswerId.java
@@ -0,0 +1,19 @@
+package com.worker.domain.entity;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+import lombok.*;
+
+@Embeddable
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@EqualsAndHashCode
+public class CpInstructAnswerId {
+ @Column(name = "IA_SGGCODE", length = 5, nullable = false)
+ private String iaSggcode;
+
+ @Column(name = "IA_CODE", length = 3, nullable = false)
+ private String iaCode;
+}
diff --git a/src/main/java/com/worker/domain/entity/TbCntcSndngDetail.java b/src/main/java/com/worker/domain/entity/TbCntcSndngDetail.java
new file mode 100644
index 0000000..dc74df8
--- /dev/null
+++ b/src/main/java/com/worker/domain/entity/TbCntcSndngDetail.java
@@ -0,0 +1,81 @@
+package com.worker.domain.entity;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "tb_cntc_sndng_detail")
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class TbCntcSndngDetail {
+
+ @Id
+ @Column(name = "unity_sndng_detail_id", length = 20, nullable = false)
+ private String unitySndngDetailId; // 통합 발송 상세 ID (PK)
+
+ @Column(name = "unity_sndng_mastr_id", length = 20)
+ private String unitySndngMastrId; // 통합 발송 마스터 ID
+
+ @Column(name = "signgu_code", length = 50)
+ private String signguCode; // 시군구 코드
+
+ @Column(name = "ffnlg_code", length = 2)
+ private String ffnlgCode; // 과태료 코드
+
+ @Column(name = "main_code", length = 30)
+ private String mainCode; // 메인 코드
+
+ @Column(name = "vhcle_no", length = 30)
+ private String vhcleNo; // 차량 번호
+
+ @Column(name = "ihidnum", length = 100)
+ private String ihidnum; // 주민등록번호
+
+ @Column(name = "moblphon_no", length = 20)
+ private String moblphonNo; // 핸드폰 번호
+
+ @Column(name = "nm", length = 200)
+ private String nm; // 성명
+
+ @Column(name = "adres", length = 300)
+ private String adres; // 주소
+
+ @Column(name = "detail_adres", length = 300)
+ private String detailAdres; // 상세 주소
+
+ @Column(name = "zip", length = 5)
+ private String zip; // 우편번호
+
+ @Lob
+ @Column(name = "tmplt_msg_data")
+ private String tmpltMsgData; // 템플릿 메시지 데이터 (LONGTEXT)
+
+ @Lob
+ @Column(name = "mobile_page_cn")
+ private String mobilePageCn; // 모바일 페이지 내용 (LONGTEXT)
+
+ @Column(name = "use_instt_idntfc_id", length = 30)
+ private String useInsttIdntfcId; // 이용 기관 식별 ID
+
+ @Column(name = "external_document_uuid", length = 40)
+ private String externalDocumentUuid; // 외부 문서 식별 번호
+
+ @Column(name = "regist_dt")
+ private LocalDateTime registDt; // 등록일자
+
+ @Column(name = "register", length = 20)
+ private String register; // 등록자
+
+ @Column(name = "updt_dt")
+ private LocalDateTime updtDt; // 수정일자
+
+ @Column(name = "updusr", length = 20)
+ private String updusr; // 수정자
+}
\ No newline at end of file
diff --git a/src/main/java/com/worker/domain/entity/TbCntcSndngResult.java b/src/main/java/com/worker/domain/entity/TbCntcSndngResult.java
new file mode 100644
index 0000000..f848361
--- /dev/null
+++ b/src/main/java/com/worker/domain/entity/TbCntcSndngResult.java
@@ -0,0 +1,63 @@
+package com.worker.domain.entity;
+
+import jakarta.persistence.*;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "tb_cntc_sndng_result")
+@IdClass(TbCntcSndngResultId.class)
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class TbCntcSndngResult {
+
+ @Id
+ @Column(name = "unity_sndng_detail_id", length = 20, nullable = false)
+ private String unitySndngDetailId; // PK1
+
+ @Id
+ @Column(name = "sndng_se_code", length = 20, nullable = false)
+ private String sndngSeCode; // PK2
+
+ @Column(name = "signgu_code", length = 50)
+ private String signguCode; // 시군구 코드
+
+ @Column(name = "ffnlg_code", length = 2)
+ private String ffnlgCode; // 과태료 코드
+
+ @Column(name = "sndng_result_sttus", length = 50)
+ private String sndngResultSttus; // 발송 결과 상태
+
+ @Column(name = "requst_dt", length = 20)
+ private String requstDt; // 요청 일시 (문자열 컬럼 정의대로 String)
+
+ @Column(name = "inqire_dt", length = 20)
+ private String inqireDt; // 조회 일시
+
+ @Column(name = "readng_dt", length = 20)
+ private String readngDt; // 열람 일시
+
+ @Column(name = "error_cn", length = 1000)
+ private String errorCn; // 오류 내용
+
+ @Column(name = "rgist_no", length = 13)
+ private String rgistNo; // 등기번호
+
+ @Column(name = "regist_dt")
+ private LocalDateTime registDt; // 등록일자
+
+ @Column(name = "register", length = 20)
+ private String register; // 등록자
+
+ @Column(name = "updt_dt")
+ private LocalDateTime updtDt; // 수정일자
+
+ @Column(name = "updusr", length = 20)
+ private String updusr; // 수정자
+}
diff --git a/src/main/java/com/worker/domain/entity/TbCntcSndngResultId.java b/src/main/java/com/worker/domain/entity/TbCntcSndngResultId.java
new file mode 100644
index 0000000..190c926
--- /dev/null
+++ b/src/main/java/com/worker/domain/entity/TbCntcSndngResultId.java
@@ -0,0 +1,15 @@
+package com.worker.domain.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode
+public class TbCntcSndngResultId {
+ private String unitySndngDetailId; // varchar(20)
+ private String sndngSeCode; // varchar(20)
+}
\ No newline at end of file
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 594e386..36e3af1 100644
--- a/src/main/java/com/worker/scheduler/epost/dto/EPostDto.java
+++ b/src/main/java/com/worker/scheduler/epost/dto/EPostDto.java
@@ -1,6 +1,7 @@
package com.worker.scheduler.epost.dto;
import com.worker.domain.entity.CpSetinfo;
+import jakarta.persistence.Column;
import lombok.*;
import java.util.List;
@@ -18,6 +19,8 @@ public class EPostDto {
private CpSetinfo epSetinfo;
private EPostInfo cpEPostInfo;
private EPostInfo epEPostInfo;
+ private Boolean cpIsEns;
+ private Boolean epIsEns;
}
@Getter
@@ -47,6 +50,61 @@ public class EPostDto {
private List result;
}
+
+
+
+ public static class SendTarget {
+ @Getter
+ @Setter
+ @NoArgsConstructor
+ @AllArgsConstructor
+ @Builder
+ public static class Key {
+ private String conKey;
+ private String tgCode;
+ }
+ @Getter
+ @Setter
+ @NoArgsConstructor
+ @AllArgsConstructor
+ @Builder
+ public static class Target {
+
+ //cp_gojit
+
+ private Long tgCode;
+ private String tgSggCode;
+ private String tgLawGb;
+ private String tgGb;
+ private String tgDlgb;
+ private String tgSrcSdate;
+ private String tgSrcEdate;
+ private String tgSdate;
+ private String tgEdate;
+ private String tgTitle;
+ private String tgDocno;
+ private String tgEtc;
+ private Integer tgTotcount;
+ private Long tgTotkeum;
+ private String tgIndt;
+ private Integer tgInuser;
+ private String tgConKey;
+ private String tgPostSeCd;
+ private String tgIsResend;
+ private String tgNoticeKey;
+ private String tgPostProcStt;
+ private String tgUnitySndngMastrId;
+ private String tgDelete;
+ private String tgPostYn;
+ private String tgElpostYn;
+
+ //epost_sender_reg
+ private String conKey;
+ private String regYmd;
+ }
+ }
+
+
@Getter
@Setter
@NoArgsConstructor
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 fbb3375..50712ab 100644
--- a/src/main/java/com/worker/scheduler/epost/repository/EPostQueryDslRepository.java
+++ b/src/main/java/com/worker/scheduler/epost/repository/EPostQueryDslRepository.java
@@ -15,9 +15,13 @@ import java.util.stream.Collectors;
import static com.worker.domain.entity.QCpGojiPrt.cpGojiPrt;
import static com.worker.domain.entity.QCpGojiSendHist.cpGojiSendHist;
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.QEpostDelivResult.epostDelivResult;
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;
@Slf4j
@@ -25,6 +29,91 @@ import static com.worker.domain.entity.QEpostSenderReg.epostSenderReg;
@RequiredArgsConstructor
public class EPostQueryDslRepository {
+ public List findSendTargetKeys(JPAQueryFactory queryFactory) {
+
+ List result = queryFactory
+ .select(
+ Projections.fields(
+ EPostDto.SendTarget.Key.class,
+ cpGojit.tgCode,
+ epostSenderReg.conKey
+ )
+ )
+ .from(epostSenderReg)
+ .leftJoin(cpGojit).on(epostSenderReg.tgCode.eq(cpGojit.tgCode.stringValue()))
+ .where(epostSenderReg.postProcStt.eq("01"))
+ .fetch();
+
+
+ return result;
+
+ }
+
+ public List findSendTargets(JPAQueryFactory queryFactory, List keys) {
+
+ List tgCode = keys.stream().map(EPostDto.SendTarget.Key::getTgCode).collect(Collectors.toList());
+ List conKey = keys.stream().map(EPostDto.SendTarget.Key::getConKey).collect(Collectors.toList());
+
+ List result = queryFactory
+ .select(
+ Projections.fields(
+ EPostDto.SendTarget.Target.class,
+ cpGojit.tgCode
+ )
+ )
+ .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 findSendEgojiTargets(JPAQueryFactory queryFactory, List keys) {
+
+ List tgCode = keys.stream().map(EPostDto.SendTarget.Key::getTgCode).collect(Collectors.toList());
+ List conKey = keys.stream().map(EPostDto.SendTarget.Key::getConKey).collect(Collectors.toList());
+
+ List result = queryFactory
+ .select(
+ Projections.fields(
+ EPostDto.SendTarget.Target.class,
+ cpGojit.tgCode
+ )
+ )
+ .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.eq(""),
+ tbCntcSndngResult.sndngResultSttus.ne("READ")
+ .and(tbCntcSndngResult.sndngResultSttus.isNull()
+ )
+ )
+ .fetch();
+
+ return result;
+ }
// @Transactional(readOnly = true, transactionManager = "cpTransactionManager")
diff --git a/src/main/java/com/worker/scheduler/epost/schedule/EPostScheduler.java b/src/main/java/com/worker/scheduler/epost/schedule/EPostScheduler.java
index 0aa6a0e..69ce5c7 100644
--- a/src/main/java/com/worker/scheduler/epost/schedule/EPostScheduler.java
+++ b/src/main/java/com/worker/scheduler/epost/schedule/EPostScheduler.java
@@ -1,6 +1,7 @@
package com.worker.scheduler.epost.schedule;
import com.worker.scheduler.epost.dto.EPostDto;
+import com.worker.scheduler.epost.repository.EPostQueryDslRepository;
import com.worker.scheduler.epost.service.EPostService;
import com.worker.scheduler.epost.service.EpostSetinfoService;
import com.worker.scheduler.smg.dto.SinmungoDto;
@@ -12,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
+import java.util.ArrayList;
import java.util.List;
@Component
@@ -25,7 +27,8 @@ public class EPostScheduler {
private final EPostService ePostService;
private final FileReader fileReader;
-// @Scheduled(fixedRate = 10 * 60 * 1000L) // 10분
+
+ // @Scheduled(fixedRate = 10 * 60 * 1000L) // 10분
public void ePostSendScheduler() {
/**
@@ -37,6 +40,11 @@ public class EPostScheduler {
// esb경로 info
EPostDto.SetInfo setInfo = epostSetinfoService.findSetInfo();
+ // 발송타겟 조회
+ ePostService.findEPostSendTarget(setInfo);
+
+
+
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 13fa802..3bf3eca 100644
--- a/src/main/java/com/worker/scheduler/epost/service/EPostService.java
+++ b/src/main/java/com/worker/scheduler/epost/service/EPostService.java
@@ -62,9 +62,60 @@ public class EPostService {
private EpGojiPrtRepository epGojiPrtRepository;
- public void findEPostSendTarget() {
- // R.POST_PROC_STT='01'
- // 전자고지 사용여부가 true이면, REG_YMD 현재 시간보다 작으면 컨티뉴
+ public void findEPostSendTarget(EPostDto.SetInfo setInfo) {
+
+ List cpSendTargetKeys = new ArrayList<>();
+ List epSendTargetKeys = new ArrayList<>();
+ List cpSendTargets = new ArrayList<>();
+ List epSendTargets = new ArrayList<>();
+
+ // 타겟의 키,code 조회
+ //cGojit
+ if(setInfo.getCpEPostInfo() != null) cpSendTargetKeys = ePostQueryDslRepository.findSendTargetKeys(cpQueryFactory);
+ if(setInfo.getEpEPostInfo() != null) epSendTargetKeys = ePostQueryDslRepository.findSendTargetKeys(epQueryFactory);
+
+
+ if(setInfo.getCpIsEns() || setInfo.getEpIsEns()) {
+ // 전자고지 대상 조회
+ // qryEgoji
+ if(setInfo.getCpIsEns()) cpSendTargets = ePostQueryDslRepository.findSendEgojiTargets(cpQueryFactory, cpSendTargetKeys);
+ if(setInfo.getEpIsEns()) epSendTargets = ePostQueryDslRepository.findSendEgojiTargets(epQueryFactory, epSendTargetKeys);
+
+ } else {
+ // 조회한 키로 cpSendTargets 의 상세내용 조회
+ // qryFor
+ cpSendTargets = ePostQueryDslRepository.findSendTargets(cpQueryFactory, cpSendTargetKeys);
+ epSendTargets = ePostQueryDslRepository.findSendTargets(epQueryFactory, epSendTargetKeys);
+ }
+
+
+
+
+ // REG_YMD 오늘기준 30일 이전 자료들 취소(POST_PROC_STT = '02') 로 변경
+
+
+ //notice(안내문구 인거같음)
+ //goit notifce 조인
+
+
+
+ // SendTargets 돌면서 전자고지인지 체크후 후처리
+ // 이거 필요 없을듯. 전자고지인지 체크후 그냥 빼버리면됨.
+ // 아래 스트림에서 전자고지 아닌것만 으로 스트림 돌리면됨.
+
+ // SendTargets 돌면서 전자고지 아닌거 후처리 하는데
+ // 이거 그냥 리스트를 나눠서 따로따로 진행하는게 더 깔끔함
+ // steam 으로 전송대상(전자고지 아닌것) 만 추출하셈
+ // 전송대상은 tg_post_yn 이 'E' 이거나 'Y' 인것만임.
+ // E는 대기상태로 전자고지를 안읽었으면 추후 예약발송 한다는거임.
+
+ // 전송대상 등기번호 조회
+ // 전자고지 아니면 textMakcer
+ // zipMaker
+
+ //qryRegSet stt = 03 으로 업데이트
+
+
}
@@ -389,5 +440,13 @@ public class EPostService {
return maxKey;
}
+ private String takeRgstNmbr() {
+ String regNo = null;
+
+
+
+ return regNo;
+ }
+
}
diff --git a/src/main/java/com/worker/scheduler/epost/service/EpostSetinfoService.java b/src/main/java/com/worker/scheduler/epost/service/EpostSetinfoService.java
index 662d10c..2e84f90 100644
--- a/src/main/java/com/worker/scheduler/epost/service/EpostSetinfoService.java
+++ b/src/main/java/com/worker/scheduler/epost/service/EpostSetinfoService.java
@@ -38,41 +38,54 @@ public class EpostSetinfoService {
private final DataSource epDataSource;
public EPostDto.SetInfo findSetInfo() {
-
+ // 기본정보
CpSetinfoId cpInfoId = CpSetinfoId.builder()
.codeName(env.getProperty("e-post.info.cp.codeName"))
.groupCode(env.getProperty("e-post.info.cp.groupCode"))
.detailCode(env.getProperty("e-post.info.cp.detailCode"))
.build();
-
CpSetinfoId epInfoId = CpSetinfoId.builder()
.codeName(env.getProperty("e-post.info.ep.codeName"))
.groupCode(env.getProperty("e-post.info.ep.groupCode"))
.detailCode(env.getProperty("e-post.info.ep.detailCode"))
.build();
+ // Epost정보
CpSetinfoId cpDocId = CpSetinfoId.builder()
.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();
-
CpSetinfoId epDocId = CpSetinfoId.builder()
.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();
+ // 전자고지 정보(사용여부)
+ CpSetinfoId cpEnsId = CpSetinfoId.builder()
+ .codeName(env.getProperty("ens.info.cp.codeName"))
+ .groupCode(env.getProperty("ens.info.cp.groupCode"))
+ .detailCode(env.getProperty("ens.info.cp.detailCode"))
+ .build();
+ CpSetinfoId epEnsId = CpSetinfoId.builder()
+ .codeName(env.getProperty("ens.info.ep.codeName"))
+ .groupCode(env.getProperty("ens.info.ep.groupCode"))
+ .detailCode(env.getProperty("ens.info.cp.detailCode"))
+ .build();
+
// ----- CP -----
CpSetinfo cpEpostInfo = null;
CpSetinfo cpEpostDocInfo = null;
EPostDto.EPostInfo cpEPostInfo = null;
+ Boolean cpIsEns = false;
if (isDsAvailable(cpDataSource)) {
try {
cpEpostInfo = cpSetinfoRepository.findById(cpInfoId).orElse(null);
cpEpostDocInfo = cpSetinfoRepository.findById(cpDocId).orElse(null);
cpEPostInfo = buildEPostInfo(cpEpostInfo, cpEpostDocInfo);
+ cpIsEns = cpSetinfoRepository.existsById(cpEnsId);
} catch (Exception e) {
log.warn("[CP] 조회/빌드 실패. CP스킵: {}", e.getMessage());
}
@@ -84,12 +97,14 @@ public class EpostSetinfoService {
CpSetinfo epEpostInfo = null;
CpSetinfo epEpostDocInfo = null;
EPostDto.EPostInfo epEPostInfo = null;
+ Boolean epIsEns = false;
if (isDsAvailable(epDataSource)) {
try {
epEpostInfo = epSetinfoRepository.findById(epInfoId).orElse(null);
epEpostDocInfo = epSetinfoRepository.findById(epDocId).orElse(null);
epEPostInfo = buildEPostInfo(epEpostInfo, epEpostDocInfo);
+ epIsEns = epSetinfoRepository.existsById(epEnsId);
} catch (Exception e) {
log.warn("[EP] 조회/빌드 실패. EP 스킵: {}", e.getMessage());
}
@@ -103,6 +118,8 @@ public class EpostSetinfoService {
.cpEPostInfo(cpEPostInfo) // null 허용
.epSetinfo(epEpostInfo) // null 허용
.epEPostInfo(epEPostInfo) // null 허용
+ .cpIsEns(cpIsEns) // null 허용
+ .epIsEns(epIsEns) // null 허용
.build();
}
diff --git a/src/main/java/com/worker/scheduler/smg/service/XmlSend.java b/src/main/java/com/worker/scheduler/smg/service/XmlSend.java
index 49cbd3a..9744bba 100644
--- a/src/main/java/com/worker/scheduler/smg/service/XmlSend.java
+++ b/src/main/java/com/worker/scheduler/smg/service/XmlSend.java
@@ -8,7 +8,7 @@ import com.worker.domain.repo.ep.EpUserRepository;
import com.worker.scheduler.smg.dto.SinmungoDto;
import com.worker.scheduler.smg.repository.XmlSendQueryDslRepository;
import com.worker.util.common.commEnum.StateEnum;
-import com.worker.util.xmlFileMaker.XmlMacker;
+import com.worker.util.xmlFileMaker.XmlMaker;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,7 +25,7 @@ import java.util.concurrent.ThreadLocalRandom;
@Slf4j
public class XmlSend {
- private final XmlMacker xmlMacker;
+ private final XmlMaker xmlMaker;
private final CpUserRepository cpUserRepository;
private final EpUserRepository epUserRepository;
private final XmlSendQueryDslRepository xmlSendQueryDslRepository;
@@ -69,10 +69,10 @@ public class XmlSend {
String.valueOf(ThreadLocalRandom.current().nextInt(0, 100_000_000));
//xml 구조 생성
- String xmlNode = xmlMacker.writeEsbAnswerXml(target, setInfo.getCpSetinfo(), makeInterfaceSeq);
+ String xmlNode = xmlMaker.writeEsbAnswerXml(target, setInfo.getCpSetinfo(), makeInterfaceSeq);
// xml 생성
- xmlMacker.generateSinmungoXml(xmlNode, makeInterfaceSeq, setInfo.getCpSetinfo());
+ xmlMaker.generateSinmungoXml(xmlNode, makeInterfaceSeq, setInfo.getCpSetinfo());
//그리고 만들어진놈 mmcode로 상태 업데이트해
cpAnswerRepository.findById(target.getMmCode())
@@ -95,10 +95,10 @@ public class XmlSend {
String.valueOf(ThreadLocalRandom.current().nextInt(0, 100_000_000));
//xml 구조 생성
- String xmlNode = xmlMacker.writeEsbAnswerXml(target, setInfo.getCpSetinfo(), makeInterfaceSeq);
+ String xmlNode = xmlMaker.writeEsbAnswerXml(target, setInfo.getCpSetinfo(), makeInterfaceSeq);
// xml 생성
- xmlMacker.generateSinmungoXml(xmlNode, makeInterfaceSeq, setInfo.getEpSetinfo());
+ xmlMaker.generateSinmungoXml(xmlNode, makeInterfaceSeq, setInfo.getEpSetinfo());
//그리고 만들어진놈 mmcode로 상태 업데이트해
epAnswerRepository.findById(target.getMmCode())
diff --git a/src/main/java/com/worker/util/textFileMacker/TextMaker.java b/src/main/java/com/worker/util/textFileMacker/TextMaker.java
new file mode 100644
index 0000000..ced83a7
--- /dev/null
+++ b/src/main/java/com/worker/util/textFileMacker/TextMaker.java
@@ -0,0 +1,4 @@
+package com.worker.util.textFileMacker;
+
+public class TextMaker {
+}
diff --git a/src/main/java/com/worker/util/xmlFileMaker/XmlMacker.java b/src/main/java/com/worker/util/xmlFileMaker/XmlMaker.java
similarity index 99%
rename from src/main/java/com/worker/util/xmlFileMaker/XmlMacker.java
rename to src/main/java/com/worker/util/xmlFileMaker/XmlMaker.java
index 456ad0a..5b62b28 100644
--- a/src/main/java/com/worker/util/xmlFileMaker/XmlMacker.java
+++ b/src/main/java/com/worker/util/xmlFileMaker/XmlMaker.java
@@ -17,7 +17,7 @@ import java.time.format.DateTimeFormatter;
@Component
@Slf4j
-public class XmlMacker {
+public class XmlMaker {
// 답변처리 xml
diff --git a/src/main/java/com/worker/util/zipFileMaker/ZipMaker.java b/src/main/java/com/worker/util/zipFileMaker/ZipMaker.java
new file mode 100644
index 0000000..93fc1cb
--- /dev/null
+++ b/src/main/java/com/worker/util/zipFileMaker/ZipMaker.java
@@ -0,0 +1,4 @@
+package com.worker.util.zipFileMaker;
+
+public class ZipMaker {
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 21805b0..17b2134 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -89,7 +89,16 @@ e-post:
groupCode: DOC_CODE
detailCode: DEV
-
+ens:
+ info:
+ cp:
+ codeName: ENS
+ groupCode: 1
+ detailCode: 1
+ ep:
+ codeName: ENS
+ groupCode: 1
+ detailCode: 1
logging:
file:
diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml
index 649cdfa..24b520e 100644
--- a/src/main/resources/application-local.yml
+++ b/src/main/resources/application-local.yml
@@ -89,7 +89,16 @@ e-post:
groupCode: DOC_CODE
detailCode: LOCAL
-
+ens:
+ info:
+ cp:
+ codeName: ENS
+ groupCode: 1
+ detailCode: 1
+ ep:
+ codeName: ENS
+ groupCode: 1
+ detailCode: 1
logging:
file:
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 2f7b592..f1ab9a2 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -89,6 +89,17 @@ e-post:
groupCode: DOC_CODE
detailCode: PROD
+ens:
+ info:
+ cp:
+ codeName: ENS
+ groupCode: 1
+ detailCode: 1
+ ep:
+ codeName: ENS
+ groupCode: 1
+ detailCode: 1
+
logging:
file:
name: ./cc-logs/worker.log