feat : 전자고지 관련 엔티티 추가 및 쿼리추가

master
Kurt92 3 months ago
parent 3cc8dd1154
commit b840989ee0

@ -1,5 +1,6 @@
# 델파이 데몬 마이그레이션
KISS(Keep it Simple, Stupid) <br/>
YAGNI(You Ain't Gonna Need It)
### 연계 디비폴링, 프로그램 업데이트를 위한 워커
기존 델파이 데몬을 스프링 스케쥴러로 대체한다. <br>
manual > 수동실행 및 모니터링<br>

@ -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;
}

@ -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;
}

@ -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;
}

@ -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; // 수정자
}

@ -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; // 수정자
}

@ -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)
}

@ -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<T> 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

@ -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<EPostDto.SendTarget.Key> findSendTargetKeys(JPAQueryFactory queryFactory) {
List<EPostDto.SendTarget.Key> 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<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,
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<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<EPostDto.SendTarget.Target> 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")

@ -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);

@ -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<EPostDto.SendTarget.Key> cpSendTargetKeys = new ArrayList<>();
List<EPostDto.SendTarget.Key> epSendTargetKeys = new ArrayList<>();
List<EPostDto.SendTarget.Target> cpSendTargets = new ArrayList<>();
List<EPostDto.SendTarget.Target> 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;
}
}

@ -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();
}

@ -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())

@ -0,0 +1,4 @@
package com.worker.util.textFileMacker;
public class TextMaker {
}

@ -17,7 +17,7 @@ import java.time.format.DateTimeFormatter;
@Component
@Slf4j
public class XmlMacker {
public class XmlMaker {
// 답변처리 xml

@ -0,0 +1,4 @@
package com.worker.util.zipFileMaker;
public class ZipMaker {
}

@ -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:

@ -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:

@ -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

Loading…
Cancel
Save