From 088f0d11c1ac263eb5dbdacda236eadd06628d9c Mon Sep 17 00:00:00 2001 From: "Jonguk. Lim" Date: Wed, 14 Aug 2024 12:19:37 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B9=B4=EC=B9=B4=EC=98=A4=ED=86=A1=20?= =?UTF-8?q?make,=20send=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/application-local-can.yml | 5 +- .../config/application-local-ccn.yml | 5 +- .../kr/xit/biz/ens/cmm/CmmEnsBizUtils.java | 21 +++++ .../xit/biz/ens/mapper/IEnsBatchMapper.java | 9 +- .../java/kr/xit/biz/ens/model/EnsDTO.java | 2 +- .../ens/service/EnsBatchAcceptService.java | 93 ++++++++++--------- .../ens/service/EnsBatchExtractService.java | 2 - .../biz/ens/service/EnsBatchMakeService.java | 55 +++++------ .../biz/ens/service/EnsBatchSendService.java | 23 ++--- .../ens/service/EnsBatchStatusService.java | 26 +++--- .../config/application-local-ccn.yml | 2 +- .../mapper/biz/ens-mysql-mapper.xml | 35 ++++--- .../java/kr/xit/biz/common/ApiConstants.java | 2 +- 13 files changed, 153 insertions(+), 127 deletions(-) diff --git a/mens-api/src/main/resources/config/application-local-can.yml b/mens-api/src/main/resources/config/application-local-can.yml index fcd9ab1..a89521e 100644 --- a/mens-api/src/main/resources/config/application-local-can.yml +++ b/mens-api/src/main/resources/config/application-local-can.yml @@ -109,9 +109,8 @@ app: host: http://211.43.10.163:10210/ONLWeb api: # 모바일페이지 : 본문자수신등록 callback url - 토큰인증확인 조회, 열람확인결과 전송 - dp-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/dpMblPage.do - me-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/meMblPage.do - #dp-callback-url: http://211.119.124.73:8081/api/biz/mbl/v1/kt/dpMblPage + chuncheon-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/dpMblPage.do + me-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/meMblPage.do #dp-callback-url: http://211.119.124.73:8081/api/biz/mbl/v1/kt/dpMblPage #me-callback-url: http://211.119.124.73:8081/api/biz/mbl/v1/kt/meMblPage # 수신거부상태전송 : BC-AG-SN-014 diff --git a/mens-api/src/main/resources/config/application-local-ccn.yml b/mens-api/src/main/resources/config/application-local-ccn.yml index 2f00028..109f71c 100644 --- a/mens-api/src/main/resources/config/application-local-ccn.yml +++ b/mens-api/src/main/resources/config/application-local-ccn.yml @@ -109,9 +109,8 @@ app: host: http://211.43.10.163:10210/ONLWeb api: # 모바일페이지 : 본문자수신등록 callback url - 토큰인증확인 조회, 열람확인결과 전송 - dp-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/dpMblPage.do - me-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/meMblPage.do - #dp-callback-url: http://211.119.124.73:8081/api/biz/mbl/v1/kt/dpMblPage + chuncheon-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/dpMblPage.do + me-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/meMblPage.do #dp-callback-url: http://211.119.124.73:8081/api/biz/mbl/v1/kt/dpMblPage #me-callback-url: http://211.119.124.73:8081/api/biz/mbl/v1/kt/meMblPage # 수신거부상태전송 : BC-AG-SN-014 diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/cmm/CmmEnsBizUtils.java b/mens-batch/src/main/java/kr/xit/biz/ens/cmm/CmmEnsBizUtils.java index c7cd120..27b5259 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/cmm/CmmEnsBizUtils.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/cmm/CmmEnsBizUtils.java @@ -2,9 +2,14 @@ package kr.xit.biz.ens.cmm; import java.util.HashMap; import java.util.Map; + import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import kr.xit.biz.common.ApiConstants; +import kr.xit.biz.ens.model.cmm.SndngMssageParam; +import kr.xit.core.support.utils.Checks; + /** *
  * description :
@@ -33,5 +38,21 @@ public class CmmEnsBizUtils {
         return map;
     }
 
+    /**
+     * 
+     * get 발송구분코드(문서중개자)
+     * @param dto SndngMssageParam
+     * @return SndngSeCode 발송구분코드(문서중개자)
+     * 
+ */ + public static ApiConstants.SndngSeCode getSndngSeCodFromTrySeq(final SndngMssageParam dto) { + String[] tryVal = { + Checks.checkVal(dto.getTry1(), ""), + Checks.checkVal(dto.getTry2(), ""), + Checks.checkVal(dto.getTry3(), "") + }; + String seCode = tryVal[dto.getTrySeq() - 1]; + return ApiConstants.SndngSeCode.getSndngSeCode(seCode); + } } diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/mapper/IEnsBatchMapper.java b/mens-batch/src/main/java/kr/xit/biz/ens/mapper/IEnsBatchMapper.java index 3704ac9..e94f1f4 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/mapper/IEnsBatchMapper.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/mapper/IEnsBatchMapper.java @@ -53,7 +53,7 @@ public interface IEnsBatchMapper { * @return List *
*/ - List selectAcceptValidation(final T t); + List selectAcceptValidation(final T t); /** *
@@ -132,7 +132,8 @@ public interface IEnsBatchMapper {
      * @return int
      * 
*/ - int selectSendOkTgts(final T t); + int selectKkopaySendOkTgts(final T t); + int selectKkotalkSendOkTgts(final T t); /** *
@@ -152,8 +153,8 @@ public interface IEnsBatchMapper {
      * @return int
      * 
*/ - int insertKakaoMyDocs(final T t); - int insertKakaoD10(final T t); + int insertKakaopay(final T t); + int insertKakaotalk(final T t); /** diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/model/EnsDTO.java b/mens-batch/src/main/java/kr/xit/biz/ens/model/EnsDTO.java index c367447..271ec3f 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/model/EnsDTO.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/model/EnsDTO.java @@ -678,7 +678,7 @@ public class EnsDTO { @NoArgsConstructor @AllArgsConstructor @SuperBuilder - public static class sndngValidation { + public static class SndngValidation { /* mastr */ private String unitySndngDetailId; diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchAcceptService.java b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchAcceptService.java index d7fd565..14d7c19 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchAcceptService.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchAcceptService.java @@ -141,7 +141,7 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA } // validation check - final List valiList = mapper.selectAcceptValidation(dto); + final List valiList = mapper.selectAcceptValidation(dto); try { // CI 생성이 모두 실패한 경우 오류처리후 skip if(!validatedAccept(valiList)){ @@ -206,14 +206,14 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA * */ // FIXME:파라메터 유효성 check 는 하지않는다??? - private boolean validatedAccept(List valiList) { + private boolean validatedAccept(List valiList) { final String url = apiHost + apiNiceCi; final List errors = new ArrayList<>(); int idx = 0; boolean isSuccess = false; - for (EnsDTO.sndngValidation dto : valiList) { - Set> errList = validator.validate(dto); + for (EnsDTO.SndngValidation dto : valiList) { + Set> errList = validator.validate(dto); if(!errList.isEmpty()) { int finalIdx = idx; @@ -239,60 +239,55 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA } } - final String[] tryVal = { - Checks.checkVal(dto.getTry1(), ""), - Checks.checkVal(dto.getTry2(), ""), - Checks.checkVal(dto.getTry3(), "") - }; + final SndngSeCode sndngSeCode = getSndngSeCodFromTrySeq(dto); // CI 생성 여부 boolean isCiCreate = false; boolean isError = false; - switch(SndngSeCode.compare(tryVal[dto.getTrySeq() - 1])) { - case KAKAO: - if(Checks.isEmpty(dto.getCi())) { + switch(sndngSeCode) { + case KAKAO -> { + if (Checks.isEmpty(dto.getCi())) { isCiCreate = true; - if(Checks.isEmpty(dto.getIhidnum())) { + if (Checks.isEmpty(dto.getIhidnum())) { isError = true; errors.add( String.format("주민등록번호는 필수입니다(dto.getIhidnum[%d] 번째 오류)", idx + 1)); } - if(Checks.isEmpty(dto.getMoblphonNo())) { + if (Checks.isEmpty(dto.getMoblphonNo())) { isError = true; errors.add( String.format("핸드폰 번호는 필수입니다(dto.getMoblphonNo[%d] 번째 오류)", idx + 1)); } - if(Checks.isEmpty(dto.getIhidnum())) { + if (Checks.isEmpty(dto.getIhidnum())) { isError = true; errors.add( String.format("받는이 이름은 필수입니다(dto.getIhidnum[%d] 번째 오류)", idx + 1)); } } - break; + } //FIXME : KT 데이타 적합성 체크 - case KT_BC: + case KT_BC -> { isCiCreate = true; - break; + } - case KAKAO_NEW: - if(Checks.isEmpty(dto.getCi())) { + case KAKAO_NEW -> { + if (Checks.isEmpty(dto.getCi())) { isCiCreate = true; - if(Checks.isEmpty(dto.getIhidnum())) { + if (Checks.isEmpty(dto.getIhidnum())) { isError = true; errors.add( String.format("주민등록번호는 필수입니다(dto.getIhidnum[%d] 번째 오류)", idx + 1)); } } - break; + } - default: - break; + default -> {} } // CI 생성 @@ -350,7 +345,7 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA * @param url ci API URL * @return CI 생성 성공 여부 */ - private boolean requestNiceCiApi(EnsDTO.sndngValidation reqDto, String ihidnumManageId, String url) { + private boolean requestNiceCiApi(EnsDTO.SndngValidation reqDto, String ihidnumManageId, String url) { boolean isSuccess = false; NiceCiDTO.IpinCiResDataBody dataBody = apiWebClient.exchange( @@ -400,7 +395,7 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA * * @return CI 생성 성공 여부 */ - private boolean requestNiceDici(EnsDTO.sndngValidation reqDto, String ihidnumManageId) { + private boolean requestNiceDici(EnsDTO.SndngValidation reqDto, String ihidnumManageId) { boolean isSuccess = false; EnsDTO.NiceCiRslt rslt = getDiCi(reqDto.getIhidnum(), true); @@ -434,26 +429,18 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA iRtn = vnoInterop.fnRequestDupInfo(diciSiteCode, diciSitePwd, ihidnum, "JID"); } switch (iRtn) { - case 1: + case 1 -> { // iRtn 값이 정상이므로, 귀사의 기획의도에 맞게 진행하시면 됩니다. // 아래와 같이 getDupInfo 함수를 통해 DI 값(64 Byte)을 추출할 수 있습니다. - if(isCi) ci = vnoInterop.getConnInfo(); - else ci = vnoInterop.getDupInfo(); - break; - case 3: - errMsg = "[사용자 정보와 실명확인 서비스 구분값 매핑 오류]"; - break; - case -9: - errMsg = "[입력값 오류]\nfnRequestDupInfo 함수 처리시, 필요한 4개의 파라미터값의 정보를 정확하게 입력해 주시기 바랍니다."; - break; - case -21: - case -31: - case -34: - errMsg = "[통신오류]\n서버 네트웍크 및 방확벽 관련하여 아래 IP와 Port(5개)를 오픈해 주셔야 이용 가능합니다.\nIP : 203.234.219.72 / Port : 81, 82, 83, 84, 85"; - break; - default: - errMsg = "return 값 확인 후, NICE평가정보 전산 담당자에게 문의해 주세요.\n[return 값:" + iRtn + "]"; - break; + if (isCi) + ci = vnoInterop.getConnInfo(); + else + ci = vnoInterop.getDupInfo(); + } + case 3 -> errMsg = "[사용자 정보와 실명확인 서비스 구분값 매핑 오류]"; + case -9 -> errMsg = "[입력값 오류]\nfnRequestDupInfo 함수 처리시, 필요한 4개의 파라미터값의 정보를 정확하게 입력해 주시기 바랍니다."; + case -21, -31, -34 -> errMsg = "[통신오류]\n서버 네트웍크 및 방확벽 관련하여 아래 IP와 Port(5개)를 오픈해 주셔야 이용 가능합니다.\nIP : 203.234.219.72 / Port : 81, 82, 83, 84, 85"; + default -> errMsg = "return 값 확인 후, NICE평가정보 전산 담당자에게 문의해 주세요.\n[return 값:" + iRtn + "]"; } if (!errMsg.isEmpty()){ return EnsDTO.NiceCiRslt.builder() @@ -499,5 +486,23 @@ public class EnsBatchAcceptService extends AbstractService implements IEnsBatchA } } } + + /** + *
+     * get 발송구분코드(문서중개자)
+     * @param dto SndngValidation
+     * @return SndngSeCode 발송구분코드(문서중개자)
+     * 
+ */ + private static ApiConstants.SndngSeCode getSndngSeCodFromTrySeq(final EnsDTO.SndngValidation dto) { + String[] tryVal = { + Checks.checkVal(dto.getTry1(), ""), + Checks.checkVal(dto.getTry2(), ""), + Checks.checkVal(dto.getTry3(), "") + }; + String seCode = tryVal[dto.getTrySeq() - 1]; + + return ApiConstants.SndngSeCode.getSndngSeCode(seCode); + } //----------------------------------------------------------------------------------------------------------------- } diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchExtractService.java b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchExtractService.java index 9f6c1da..e4397ff 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchExtractService.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchExtractService.java @@ -129,8 +129,6 @@ public class EnsBatchExtractService extends AbstractService implements // 모바일 페이지 컨텐트 생성 if (Checks.isNotEmpty(t.getEnvelopeId())) { mapper.insertKkotalkMobilePageManage(t.getExternalId()); - // FIXME: 코드값 확인후 지정 - code = ApiConstants.KkotalkDocStatus.READ.getCode(); }else{ code = t.getErrorCode(); } diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchMakeService.java b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchMakeService.java index 33fc577..3c53240 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchMakeService.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchMakeService.java @@ -13,12 +13,12 @@ import org.springframework.transaction.annotation.Transactional; import kr.xit.biz.common.ApiConstants; import kr.xit.biz.common.ApiConstants.SignguCode; import kr.xit.biz.common.ApiConstants.SndngSeCode; +import kr.xit.biz.ens.cmm.CmmEnsBizUtils; import kr.xit.biz.ens.mapper.IEnsBatchMapper; import kr.xit.biz.ens.model.EnsDTO; import kr.xit.biz.ens.model.cmm.SndngMssageParam; import kr.xit.core.exception.BizRuntimeException; import kr.xit.core.service.AbstractService; -import kr.xit.core.support.utils.Checks; import lombok.RequiredArgsConstructor; /** @@ -103,9 +103,15 @@ public class EnsBatchMakeService extends AbstractService implements IEnsBatchMak MDC.put(SNDNG_PROCESS_STTUS, "make-fail2"); dto.setProfile(ApiConstants.PROFILE); - //try2 발송 대상이 있는지 확인 - final int sendCnt = mapper.selectSendOkTgts(dto); + final SndngSeCode sndngSeCode = CmmEnsBizUtils.getSndngSeCodFromTrySeq(dto); + //try2 발송 대상이 있는지 확인 + int sendCnt = 0; + if(SndngSeCode.KAKAO.equals(sndngSeCode)) { + sendCnt = mapper.selectKkopaySendOkTgts(dto); + } else { + sendCnt = mapper.selectKkotalkSendOkTgts(dto); + } //없으면 연계 발송 마스터, 통합 발송 마스터 send-ok if (sendCnt == 0) { if(IS_CCN) dto.setNewSndngProcessSttus(ApiConstants.MappingSndngProcessStatus.fromEns(dto.getNewSndngProcessSttus())); @@ -179,12 +185,11 @@ public class EnsBatchMakeService extends AbstractService implements IEnsBatchMak //----------------------------------------------------------------------------------------------------------------- // make //----------------------------------------------------------------------------------------------------------------- - /** *
      * make 상세 데이타 생성 : 문서 중개자별 상세 데이타 생셩
      * - 최초(전송 없슴), 1차 전송, 2차 전송 데이타 대상
-     * KAKAO   - {@link IEnsBatchMapper#insertKakaoMyDocs(Object) insertKakaoMyDocs}
+     * KAKAO   - {@link IEnsBatchMapper#insertKakaopay(Object) insertKakaopay}
      *         - tb_ens_kakao_my_doc
      * KT_BC   - {@link IEnsBatchMapper#insertKtBcMastr(Object) insertKtBcMastr}
      *         - tb_ens_kt_bc_mastr FIXME::운영 전환 시 처리 필요
@@ -195,29 +200,25 @@ public class EnsBatchMakeService extends AbstractService implements IEnsBatchMak
      * 
*/ private int makeEnsDetailByTry(final SndngMssageParam dto) { - String[] tryVal = { - Checks.checkVal(dto.getTry1(), ""), - Checks.checkVal(dto.getTry2(), ""), - Checks.checkVal(dto.getTry3(), "") - }; - final String seCode = tryVal[dto.getTrySeq() - 1]; - - return switch (SndngSeCode.compare(seCode)) { - case KAKAO -> mapper.insertKakaoMyDocs(dto); - case KAKAO_NEW -> mapper.insertKakaoD10(dto); - case KT_BC -> { - // FIXME: KT callback url 확인 적용 - if(SignguCode.CHUNCHEON.getCode().equals(dto.getSignguCode())){ - dto.setUrl(CHUNCHEON_CALLBACK_URL); - } - // FIXME: KT callback url 확인 적용 - if(SignguCode.FUNERAL.getCode().equals(dto.getSignguCode())){ - dto.setUrl(ME_CALLBACK_URL); + final SndngSeCode sndngSeCode = CmmEnsBizUtils.getSndngSeCodFromTrySeq(dto); + + return + switch (sndngSeCode) { + case KAKAO -> mapper.insertKakaopay(dto); + case KAKAO_NEW -> mapper.insertKakaotalk(dto); + case KT_BC -> { + // FIXME: KT callback url 확인 적용 + if(SignguCode.CHUNCHEON.getCode().equals(dto.getSignguCode())){ + dto.setUrl(CHUNCHEON_CALLBACK_URL); + } + // FIXME: KT callback url 확인 적용 + if(SignguCode.FUNERAL.getCode().equals(dto.getSignguCode())){ + dto.setUrl(ME_CALLBACK_URL); + } + mapper.insertKtBcMastr(dto); + yield mapper.insertKtBcDetail(dto); } - mapper.insertKtBcMastr(dto); - yield mapper.insertKtBcDetail(dto); - } - default -> throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", seCode)); + //default -> throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", sndngSeCode.getCode())); }; } //----------------------------------------------------------------------------------------------------------------- diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchSendService.java b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchSendService.java index 6b06737..08603b9 100644 --- a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchSendService.java +++ b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchSendService.java @@ -138,18 +138,13 @@ public class EnsBatchSendService extends AbstractService implements IEnsBatchSen MDC.put("sndngMastrId", dto.getSndngMastrId()); MDC.put(SNDNG_PROCESS_STTUS, "send-fail" + dto.getTrySeq()); - final String[] tryVal = { - Checks.checkVal(dto.getTry1(), ""), - Checks.checkVal(dto.getTry2(), ""), - Checks.checkVal(dto.getTry3(), "") - }; + final SndngSeCode sndngSeCode = CmmEnsBizUtils.getSndngSeCodFromTrySeq(dto); // 마스터 상태 변경값을 파라메터에서 받은 상태값으로 set dto.setNewSndngProcessSttus(dto.getSndngProcessSttus()); - final String seCode = tryVal[dto.getTrySeq() - 1]; // 업무 문서 구분에 따른 분기 - switch (SndngSeCode.compare(seCode)) { + switch (sndngSeCode) { /* * 카카오페이 연계 결과 반영 : tb_ens_kakao_my_doc * 모바일 페이지 생성 : tb_ens_mobile_page_manage @@ -158,7 +153,7 @@ public class EnsBatchSendService extends AbstractService implements IEnsBatchSen case KAKAO -> sendBulkKakaopay(dto); case KAKAO_NEW -> sendBulkKakaotalk(dto); case KT_BC -> sendBulkKtBc(dto); - default -> throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", seCode)); + default -> throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", sndngSeCode.getCode())); } } @@ -170,7 +165,7 @@ public class EnsBatchSendService extends AbstractService implements IEnsBatchSen *
      * 카카오 문서 send
      * 1. 카카오페이 문서요청 대상 조회
-     *    - {@link IEnsBatchMapper#selectKakaoSendTgts(Object) selectKakaoSendTgts}
+     *    - {@link IEnsBatchMapper#selectKakaopaySendTgts(Object) selectKakaopaySendTgts}
      * 2. 요청 대상 파라메터 set, validtion check
      *    - {@link #setKkopaySendBulks}
      *    - {@link #validatedKkopaySendBulks}
@@ -242,16 +237,16 @@ public class EnsBatchSendService extends AbstractService implements IEnsBatchSen
      * 
      * 카카오톡 전자고지 send
      * 1. 카카오톡 전자고지 요청 대상 조회
-     *    - {@link IEnsBatchMapper#selectKakaoSendTgts(Object) selectKakaoSendTgts}
+     *    - {@link IEnsBatchMapper#selectKakaotalkSendTgts(Object) selectKakaotalkSendTgts}
      * 2. 요청 대상 파라메터 set, validtion check
-     *    - {@link #setKkoNewSendBulks}
-     *    - {@link #validatedKkoNewSendBulks}
+     *    - {@link #setKkotalkSendBulks}
+     *    - {@link #validatedKkotalkSendBulks}
      * 3. 카카오페이 문서요청  API 호출
      *    -> 결과 목록 획득
      * 4. 카카오페이 문서요청 결과 반영
      *    - bulk 전송 기준 모든건이 실패인 경우만 실패 처리
      *    -
-     *    -> {@link EnsBatchExtractService#saveKkopaySendResult(String, String, List) saveKkoNewSendResult}
+     *    -> {@link EnsBatchExtractService#saveKkotalkSendResult(String, String, List) saveKkoNewSendResult}
      *       - 카카오페이 연계 결과 반영 : tb_ens_kakao_my_doc
      *       - 모바일 페이지 생성 : tb_ens_mobile_page_manage
      *       - 연계발송결과 생성 : tb_cntc_sndng_result
@@ -307,7 +302,7 @@ public class EnsBatchSendService extends AbstractService implements IEnsBatchSen
         if(!isSuccess){
             extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO_NEW, "", errMsg, errMsg);
         }
-        extractService.saveKkoNewSendResult(mstId, dto.getUnitySndngMastrId(), resList);
+        extractService.saveKkotalkSendResult(mstId, dto.getUnitySndngMastrId(), resList);
     }
 
     /**
diff --git a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchStatusService.java b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchStatusService.java
index 3c1bc10..41284c2 100644
--- a/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchStatusService.java
+++ b/mens-batch/src/main/java/kr/xit/biz/ens/service/EnsBatchStatusService.java
@@ -85,31 +85,27 @@ public class EnsBatchStatusService extends AbstractService implements IEnsBatchS
             MDC.put("sndngMastrId", dto.getSndngMastrId());
             //MDC.put(SNDNG_PROCESS_STTUS, "send-fail" + dto.getTrySeq());
 
-            final String[] tryVal = {
-                Checks.checkVal(dto.getTry1(), ""),
-                Checks.checkVal(dto.getTry2(), ""),
-                Checks.checkVal(dto.getTry3(), "")
-            };
+            final SndngSeCode sndngSeCode = CmmEnsBizUtils.getSndngSeCodFromTrySeq(dto);
 
             // 마스터 상태 변경값을 파라메터에서 받은 상태값으로 set
             //dto.setNewSndngProcessSttus(reqDTO.getSndngProcessSttus());
-            final String seCode = tryVal[dto.getTrySeq() - 1];
 
             // 업무 문서 구분에 따른 분기
-            switch (SndngSeCode.compare(seCode)) {
+            switch (sndngSeCode) {
                 /*
                  * 카카오페이 연계 결과 반영 : tb_ens_kakao_my_doc
                  * 모바일 페이지 생성 : tb_ens_mobile_page_manage
                  * 연계발송결과 생성 : tb_cntc_sndng_result
                  */
-                case KAKAO:
-                    statusKakao(dto);
-                    break;
-                case KT_BC:
-                    break;
-
-                default:
-                    throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", seCode));
+                case KAKAO -> statusKakao(dto);
+
+                case KAKAO_NEW
+                    -> statusKakao(dto);
+                    //break;
+                case KT_BC -> {}
+
+                default ->
+                    throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", sndngSeCode.getCode()));
             }
         }
 
diff --git a/mens-batch/src/main/resources/config/application-local-ccn.yml b/mens-batch/src/main/resources/config/application-local-ccn.yml
index 0868dcc..2b8afc6 100644
--- a/mens-batch/src/main/resources/config/application-local-ccn.yml
+++ b/mens-batch/src/main/resources/config/application-local-ccn.yml
@@ -111,5 +111,5 @@ app:
     kt:
       api:
         # 모바일페이지 : 본문자수신등록 callback url - 토큰인증확인 조회, 열람확인결과 전송
-        dp-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/dpMblPage.do
+        chuncheon-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/dpMblPage.do
         me-callback-url: http://${app.api-ip}:8080/api/web/mbl/v1/kt/meMblPage.do
diff --git a/mens-batch/src/main/resources/egovframework/mapper/biz/ens-mysql-mapper.xml b/mens-batch/src/main/resources/egovframework/mapper/biz/ens-mysql-mapper.xml
index 173ccd6..aa0fb02 100644
--- a/mens-batch/src/main/resources/egovframework/mapper/biz/ens-mysql-mapper.xml
+++ b/mens-batch/src/main/resources/egovframework/mapper/biz/ens-mysql-mapper.xml
@@ -77,8 +77,7 @@
 
 	
 		/** ens-mysql-mapper|insertUnitySndngDtls-통합발송상세 생성|julim  */
-		INSERT
-		  INTO tb_ens_unity_sndng_detail (
+		INSERT INTO tb_ens_unity_sndng_detail (
 		    unity_sndng_detail_id,  /* 통합발송상세 ID*/
 			unity_sndng_mastr_id,	/* 통합발송마스터 ID */
 			signgu_code,			/* 시군구 코드 */
@@ -193,18 +192,30 @@
 		
 	
 
-	
+		/** ens-mysql-mapper|selectKkopaySendOkTgts-카카오페이 2차 발송 대상 건수 조회|seojh  */
 		SELECT count(1)
 		  FROM tb_ens_sndng_mastr tesm
-		 INNER JOIN tb_ens_kakao_my_doc tekmd
+		  JOIN tb_ens_kakao_my_doc tekmd
 		    ON tesm.sndng_mastr_id = tekmd.sndng_mastr_id
 		 WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
-			 AND tesm.signgu_code = #{signguCode}
-			 AND tesm.ffnlg_code = #{ffnlgCode}
+		   AND tesm.signgu_code = #{signguCode}
+		   AND tesm.ffnlg_code = #{ffnlgCode}
 		   AND (NOT (tekmd.doc_box_status = 'READ' AND tekmd.error_code IS NULL) OR (tekmd.doc_box_status IS NULL and tekmd.error_code IS NULL))
 	
 
+	
+
 	
 		/** ens-mysql-mapper|insertSndngMst-발송마스터 생성|julim  */
 		
@@ -252,8 +263,8 @@
 		 AND teusm.sndng_process_sttus = #{sndngProcessSttus}
 	
 
-	
-		/** ens-mysql-mapper|insertKakaoMyDocs-카카오내문서함 생성|julim  */
+	
+		/** ens-mysql-mapper|insertKakaopay-카카오내문서함 생성|julim  */
 		INSERT
 		  INTO tb_ens_kakao_my_doc (
 				sndng_detail_id,						/* 발송상세ID */
@@ -542,8 +553,8 @@
 		 WHERE unity_sndng_mastr_id = #{unitySndngMastrId}
 	
 
-	
-		/** ens-mysql-mapper|insertKakaoD10-카카오톡 D10_2 생성|julim  */
+	
+		/** ens-mysql-mapper|insertKakaotalk-카카오톡 D10_2 생성|julim  */
 		INSERT
 		INTO tb_ens_kakao_d10 (
 			sndng_detail_id,					/* 발송상세ID */
@@ -1142,7 +1153,7 @@
 		 WHERE tmplat_id = #{tmplatId}
 	
 
-	
 		/** ens-mysql-mapper|selectAcceptVali-Validate용|seojh  */
 		SELECT term.ffnlg_code
 			 , term.signgu_code
diff --git a/mens-core/src/main/java/kr/xit/biz/common/ApiConstants.java b/mens-core/src/main/java/kr/xit/biz/common/ApiConstants.java
index 19c9193..1a88958 100644
--- a/mens-core/src/main/java/kr/xit/biz/common/ApiConstants.java
+++ b/mens-core/src/main/java/kr/xit/biz/common/ApiConstants.java
@@ -197,7 +197,7 @@ public class ApiConstants {
             this.desc = desc;
         }
 
-        public static SndngSeCode compare(final String code){
+        public static SndngSeCode getSndngSeCode(final String code){
             return Arrays.stream(SndngSeCode.values())
                 .filter(ssc -> ssc.getCode().equals(code))
                 .findFirst()