feat: post plus 적용

dev
gitea-관리자 2 years ago
parent b790c4e7fc
commit 6456e633d5

@ -21,6 +21,6 @@ import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusResponse;
* </pre>
*/
public interface IPplusService {
PpCommonResponse accept(final PpAcceptRequest reqDTO);
PpStatusResponse status(final PpStatusRequest reqDTO);
PpCommonResponse sendBulks(final PpAcceptRequest reqDTO);
PpStatusResponse statusBulks(final PpStatusRequest reqDTO);
}

@ -67,7 +67,7 @@ public class PplusService extends EgovAbstractServiceImpl implements IPplusServi
@Override
@TraceLogging
public PpCommonResponse accept(PpAcceptRequest reqDTO) {
public PpCommonResponse sendBulks(PpAcceptRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
reqDTO.setApiKey(ktMnsInfo.getPplusApiKey());
JSONObject mstJson = makePpAcceptMstData();
@ -125,7 +125,7 @@ public class PplusService extends EgovAbstractServiceImpl implements IPplusServi
}
@Override
public PpStatusResponse status(PpStatusRequest reqDTO) {
public PpStatusResponse statusBulks(PpStatusRequest reqDTO) {
final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getRlaybsnmInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
reqDTO.setApiKey(ktMnsInfo.getPplusApiKey());
CmmEnsUtils.validate(reqDTO);

@ -63,14 +63,14 @@ public class PplusController {
@Operation(summary = "우편제작접수", description = "우편제작접수 요청<br><a href='/pstFile.html'>우편제작접수</a>")
@PostMapping(value = "/accept", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
//@PostMapping(value = "/accept", produces = MediaType.APPLICATION_JSON_VALUE)
public IApiResponse accept(@ModelAttribute final PpAcceptRequest paramDTO) {
return ApiResponseDTO.success(service.accept(paramDTO));
public IApiResponse send(@ModelAttribute final PpAcceptRequest paramDTO) {
return ApiResponseDTO.success(service.sendBulks(paramDTO));
}
@Operation(summary = "우편제작 상태 조회", description = "우편제작상태조회")
@PostMapping(value = "/status", produces = MediaType.APPLICATION_JSON_VALUE)
public IApiResponse status(@RequestBody final PpStatusRequest paramDTO) {
return ApiResponseDTO.success(service.status(paramDTO));
return ApiResponseDTO.success(service.statusBulks(paramDTO));
}

@ -4,7 +4,8 @@ import java.util.List;
import java.util.Optional;
import kr.xit.biz.ens.model.EnsDTO;
import kr.xit.biz.ens.model.EnsDTO.SndngMssageParam;
import kr.xit.biz.ens.model.EnsKtBcDTO.KtBcMst;
import kr.xit.biz.ens.model.EnsKtBcDTO;
import kr.xit.biz.ens.model.EnsPostPlusDTO;
import kr.xit.biz.ens.model.cntc.CntcDTO;
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatus;
import kr.xit.biz.ens.model.kakao.KkopayDocDTO.OneTimeToken;
@ -182,7 +183,7 @@ public interface IEnsBatchMapper {
/**
* <pre>
* Post plus
* -
* - tb_ens_post_plus
* @param t T
* @return int
* </pre>
@ -308,9 +309,11 @@ public interface IEnsBatchMapper {
*/
<T> int updateProcessSttusSndngMst(final T t);
Optional<KtBcMst> selectKtBcMstTgtInfo(final SndngMssageParam dto);
Optional<EnsKtBcDTO> selectKtBcMstTgtInfo(final SndngMssageParam dto);
List<KtMainSendReqData> selectKtBcSendTgts(final SndngMssageParam dto);
int updateKtBcMst(final SndngMssageParam dto);
List<EnsPostPlusDTO> selectPostPlusSendTgts(final SndngMssageParam dto);
//----------------------------------------------------------------------
// send
//----------------------------------------------------------------------

@ -24,47 +24,41 @@ import lombok.experimental.SuperBuilder;
*
* </pre>
*/
public class EnsKtBcDTO {
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public class EnsKtBcDTO extends KtMainSendRequest {
@Builder.Default
private String sndngTyCode = "ENS";
/**
* 릿 ID
*/
private String tmplatId;
/**
*
*/
private String tgtYn;
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public static class KtBcMst extends KtMainSendRequest { //KtBcSendReqData {
/**
* ID
*/
private String unitySndngMastrId;
/**
* ID
*/
private String unitySndngDetailId;
@Builder.Default
private String sndngTyCode = "ENS";
/**
* 릿 ID
*/
private String tmplatId;
/**
*
*/
private String tgtYn;
/**
* ID
*/
private String unitySndngMastrId;
/**
* ID
*/
private String unitySndngDetailId;
/**
* ID
*/
private String sndngMastrId;
/**
*
*/
@Builder.Default
private String sndngProcessSttus = ApiConstants.SndngProcessStatus.ACCEPT.getCode();
}
/**
* ID
*/
private String sndngMastrId;
/**
*
*/
@Builder.Default
private String sndngProcessSttus = ApiConstants.SndngProcessStatus.ACCEPT.getCode();
}

@ -0,0 +1,128 @@
package kr.xit.biz.ens.model;
import java.io.Serializable;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
/**
* <pre>
* description : tb_ens_ Entity DTO
*
* packageName : kr.xit.biz.ens.model
* fileName : EnsDTO
* author : limju
* date : 2023-08-31
* ======================================================================
*
* ----------------------------------------------------------------------
* 2023-08-31 limju
*
* </pre>
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@SuperBuilder
public class EnsPostPlusDTO implements Serializable {
/**
* id
*/
private String unitySndngMastrId;
/**
* id
*/
private String unitySndngDetailId;
/**
* id
*/
private String sndngMastrId;
/**
* id
*/
private String sndngDetailId;
/**
*
*/
private String signguCode;
/**
*
*/
private String ffnlgCode;
/**
*
*/
private String serviceCd;
/**
*
*/
private String conKey;
/**
*
*/
private String sndngProcessSttus;
private String masterCols;
private String masterRows;
private String detailCols;
private String detailRows;
/**
*
*/
private String senderNm;
/**
*
*/
private String senderZipNo;
/**
*
*/
private String senderAddr;
/**
*
*/
private String senderDetailAddr;
/**
*
*/
private String receiverSendNo;
/**
*
*/
private String receiverNm;
/**
*
*/
private String receiverZipNo;
/**
*
*/
private String receiverAddr;
/**
*
*/
private String receiverDetailAddr;
/**
* 1
*/
private String sschnge1;
/**
* 2
*/
private String sschnge2;
/**
* 3
*/
private String sschnge3;
}

@ -69,8 +69,7 @@ public class EnsBatchExtractService extends EgovAbstractServiceImpl implements
*/
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveKkoMyDocResult(final String mstId, String unitySndMstId,
final List<BulkSendResponses> resList) {
public void saveKkoMyDocResult(final String mstId, String unitySndMstId, final List<BulkSendResponses> resList) {
// 결과 반영
resList.forEach(o ->
o.getDocuments().forEach(
@ -98,12 +97,12 @@ public class EnsBatchExtractService extends EgovAbstractServiceImpl implements
/**
* E-GREEN
*
* @param tgtDTO EnsDTO.SndngMssageParam
* @param dto EnsDTO.SndngMssageParam
*/
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void sendEgreen(final EnsDTO.SndngMssageParam tgtDTO) {
final List<EnsDTO.PostSndng> list = mapper.selectPostTgts(tgtDTO);
public void sendEgreen(final EnsDTO.SndngMssageParam dto) {
final List<EnsDTO.PostSndng> list = mapper.selectPostTgts(dto);
final String filePath = fileRoot + filePost;
final String fileName = list.get(0).getConKey() + ".txt";
@ -122,13 +121,13 @@ public class EnsBatchExtractService extends EgovAbstractServiceImpl implements
/**
* SMS - xit SMS : call
*
* @param tgtDTO EnsDTO.SndngMssageParam
* @param dto EnsDTO.SndngMssageParam
* @see kr.xit.biz.sms.service.SmsMessageService#sendSmsList(List)
*/
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void sendSms(final EnsDTO.SndngMssageParam tgtDTO) {
final List<EnsDTO.SmsSndng> list = mapper.selectSmsSendTgts(tgtDTO);
public void sendSms(final EnsDTO.SndngMssageParam dto) {
final List<EnsDTO.SmsSndng> list = mapper.selectSmsSendTgts(dto);
// Orcale DB - 서비스 분리
smsService.sendSmsList(list);
@ -143,7 +142,7 @@ public class EnsBatchExtractService extends EgovAbstractServiceImpl implements
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void sendPostPlus(SndngMssageParam tgtDTO) {
public void sendPostPlus(SndngMssageParam dto) {
}

@ -210,12 +210,10 @@ public class EnsBatchMakeService extends EgovAbstractServiceImpl implements IEns
};
final String seCode = tryVal[dto.getTrySeq() - 1];
int makeCnt = 0;
switch (SndngSeCode.compare(seCode)) {
case KAKAO -> makeCnt = mapper.insertKakaoMyDocs(dto);
case E_GREEN -> makeCnt = mapper.insertPostSndng(dto);
case SMS -> makeCnt = mapper.insertSmsSndng(dto);
// FIXME::처리 필요
return switch (SndngSeCode.compare(seCode)) {
case KAKAO -> mapper.insertKakaoMyDocs(dto);
case E_GREEN -> mapper.insertPostSndng(dto);
case SMS -> mapper.insertSmsSndng(dto);
case KT_BC -> {
if(SignguCode.TRAFFIC.getCode().equals(dto.getSignguCode())){
dto.setUrl(DP_CALLBACK_URL);
@ -224,13 +222,11 @@ public class EnsBatchMakeService extends EgovAbstractServiceImpl implements IEns
dto.setUrl(ME_CALLBACK_URL);
}
mapper.insertKtBcMastr(dto);
makeCnt = mapper.insertKtBcDetail(dto);
yield mapper.insertKtBcDetail(dto);
}
// FIXME::처리 필요
case PPLUS -> makeCnt = mapper.insertPplus(dto);
case PPLUS -> mapper.insertPplus(dto);
default -> throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", seCode));
}
return makeCnt;
};
}
//-----------------------------------------------------------------------------------------------------------------
}

@ -17,7 +17,8 @@ import kr.xit.biz.ens.mapper.IEnsBatchMapper;
import kr.xit.biz.ens.model.EnsDTO;
import kr.xit.biz.ens.model.EnsDTO.SendKakaoTgt;
import kr.xit.biz.ens.model.EnsDTO.SndngMssageParam;
import kr.xit.biz.ens.model.EnsKtBcDTO.KtBcMst;
import kr.xit.biz.ens.model.EnsKtBcDTO;
import kr.xit.biz.ens.model.EnsPostPlusDTO;
import kr.xit.biz.ens.model.kakao.KkopayDocAttrDTO.Receiver;
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkSendReq;
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkSendRequests;
@ -68,6 +69,8 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
private String apiKkoBulkSend;
@Value("${contract.kt.api.bulksend}")
private String apiKtBcBulkSend;
@Value("${contract.pplus.api.bulksend}")
private String apiPplusBulkSend;
@Value("${contract.kakao.bulk-max-cnt}")
private int bulkKkoMaxCnt;
@ -78,7 +81,7 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
private static final String SNDNG_PROCESS_STTUS = "sndngProcessSttus";
private static final String UNITY_SNDNG_MST_ID = "unitySndngMastrId";
private static final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
private final EnsBatchExtractService requireNewService;
private final EnsBatchExtractService extractService;
private final ApiWebClientUtil apiWebClient;
private final IEnsBatchMapper mapper;
@ -134,8 +137,8 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
case KAKAO -> sendBulkKakaoMyDocs(dto);
case KT_BC -> sendBulkKtBc(dto);
case PPLUS -> sendBulkPplus(dto);
case E_GREEN -> requireNewService.sendEgreen(dto);
case SMS -> requireNewService.sendSms(dto);
case E_GREEN -> extractService.sendEgreen(dto);
case SMS -> extractService.sendSms(dto);
default -> throw BizRuntimeException.create(String.format("정의 되지 않은 문서 중개자[%s] 입니다", seCode));
}
}
@ -162,13 +165,13 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
* - : tb_ens_kakao_my_doc
* - : tb_ens_mobile_page_manage
* - : tb_cntc_sndng_result
* @param reqDTO SndngMssageParam
* @param dto SndngMssageParam
* </pre>
*/
private void sendBulkKakaoMyDocs(final SndngMssageParam reqDTO) {
private void sendBulkKakaoMyDocs(final SndngMssageParam dto) {
final String url = apiHost + apiKkoBulkSend;
final List<SendKakaoTgt> list = mapper.selectKakaoSendTgts(reqDTO);
final List<SendKakaoTgt> list = mapper.selectKakaoSendTgts(dto);
if(list.isEmpty()) return;
final String mstId = list.get(0).getSndngMastrId();
@ -178,7 +181,7 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
try {
validatedKkoMyDocSendBulks(bulkList);
} catch (Exception e) {
requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO, "[send]카카오 문서 발송(bulks)요청 실패(파라메터 오류)");
extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO, "[send]카카오 문서 발송(bulks)요청 실패(파라메터 오류)");
throw e;
}
@ -188,8 +191,8 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
url,
HttpMethod.POST,
BulkSendRequests.builder()
.signguCode(reqDTO.getSignguCode())
.ffnlgCode(reqDTO.getFfnlgCode())
.signguCode(dto.getSignguCode())
.ffnlgCode(dto.getFfnlgCode())
.documents(bulkSendList)
.build(),
ApiResponseDTO.class,
@ -209,8 +212,8 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
errMsg = apiResult.getMessage();
}
// 카카오 send 결과 반영
if(!isSuccess) requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO, errMsg);
requireNewService.saveKkoMyDocResult(mstId, reqDTO.getUnitySndngMastrId(), resList);
if(!isSuccess) extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KAKAO, errMsg);
extractService.saveKkoMyDocResult(mstId, dto.getUnitySndngMastrId(), resList);
}
/**
@ -323,25 +326,24 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
/**
* <pre>
* KT BC send
* @param reqDTO SndngMssageParam
* @param dto SndngMssageParam
* </pre>
*/
// TODO :: 구현 필요
private void sendBulkKtBc(final SndngMssageParam reqDTO) {
private void sendBulkKtBc(final SndngMssageParam dto) {
final String url = apiHost + apiKtBcBulkSend;
KtBcMst mstDTO = mapper.selectKtBcMstTgtInfo(reqDTO)
EnsKtBcDTO mstDTO = mapper.selectKtBcMstTgtInfo(dto)
.orElseThrow(() -> BizRuntimeException.create("KT BC 본문자 수신 등록 대상이 존재 하지 않습니다 "));
final String mstId = mstDTO.getSndngMastrId();
final String unitySndMstId = mstDTO.getUnitySndngMastrId();
final List<KtMainSendReqData> sendReqs = mapper.selectKtBcSendTgts(reqDTO);
final List<KtMainSendReqData> sendReqs = mapper.selectKtBcSendTgts(dto);
// validation check
try {
validatedKtBcSendBulks(sendReqs);
} catch (Exception e) {
requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send]KT-BC 발송(bulks)요청 실패(파라메터 오류)");
extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send]KT-BC 발송(bulks)요청 실패(파라메터 오류)");
throw e;
}
@ -366,43 +368,43 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
if(ObjectUtils.isNotEmpty(apiResult.getData())) {
KtCommonResponse resDTO = toObjByObj(apiResult.getData(), KtCommonResponse.class);
assert resDTO != null;
reqDTO.setResultDt(resDTO.getResultDt());
dto.setResultDt(resDTO.getResultDt());
if(ObjectUtils.isNotEmpty(resDTO) && "00".equals(resDTO.getResultCd())){
isSuccess = true;
reqDTO.setErrorMssage("정상");
dto.setErrorMssage("정상");
}else{
errList.addAll(resDTO.getErrors());
}
}else{
// KT-BC API 호출전 에러 발생
if(ObjectUtils.isEmpty(reqDTO.getResultDt())) {
reqDTO.setResultDt(DateUtils.getTodayAndNowTime(ApiConstants.FMT_DT_EMPTY_DLT));
if(ObjectUtils.isEmpty(dto.getResultDt())) {
dto.setResultDt(DateUtils.getTodayAndNowTime(ApiConstants.FMT_DT_EMPTY_DLT));
}
reqDTO.setErrorMssage(apiResult.getMessage());
dto.setErrorMssage(apiResult.getMessage());
errList.add(new ErrorMsg(apiResult.getMessage()));
}
}
// 모두 실패한 경우
if(!isSuccess) {
reqDTO.setResultCd("01");
reqDTO.setErrorMssage(
dto.setResultCd("01");
dto.setErrorMssage(
errList.stream()
.map(ErrorMsg::getErrorMsg)
.collect(Collectors.joining(","))
);
mapper.updateKtBcMst(reqDTO);
requireNewService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send] KT-BC 발송(bulks)요청 실패");
mapper.updateKtBcMst(dto);
extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send] KT-BC 발송(bulks)요청 실패");
return;
}
// 성공 건수 존재시 성공 처리
reqDTO.setResultCd("00");
reqDTO.setErrorMssage("정상");
mapper.updateKtBcMst(reqDTO);
requireNewService.updateSendSndngMstStatus(mstId, unitySndMstId, SndngSeCode.KAKAO, "KT-BC 실패(발송마스터 데이타 오류)");
dto.setResultCd("00");
dto.setErrorMssage("정상");
mapper.updateKtBcMst(dto);
extractService.updateSendSndngMstStatus(mstId, unitySndMstId, SndngSeCode.KT_BC, "KT-BC 실패(발송마스터 데이타 오류)");
}
private void validatedKtBcSendBulks(List<KtMainSendReqData> sendReqs) {
@ -433,12 +435,99 @@ public class EnsBatchSendService extends EgovAbstractServiceImpl implements IEns
/**
* <pre>
* Post plus send
* @param tgtDTO SndngMssageParam
* @param dto SndngMssageParam
* </pre>
*/
// TODO:: 구현 필요
private void sendBulkPplus(final SndngMssageParam tgtDTO) {
requireNewService.sendPostPlus(tgtDTO);
private void sendBulkPplus(final SndngMssageParam dto) {
final String url = apiHost + apiPplusBulkSend;
final List<EnsPostPlusDTO> tgtList = mapper.selectPostPlusSendTgts(dto);
//
// PpAcceptRequestStruct reqDataDTO = PpAcceptRequestStruct.builder()
// .master(PpAcceptReqDataStruct.builder()
// .cols(JsonUtils.toJson(mstJson.get("cols")))
// .rows(JsonUtils.toJson(mstJson.get("rows")))
// .build())
// .detail(PpAcceptReqDataStruct.builder()
// .cols(JsonUtils.toJson(dtlJson.get("cols")))
// .rows(JsonUtils.toJson(dtlJson.get("rows")))
// .build())
// .build();
//
// String reqDataJsonStr = JsonUtils.toJson(reqDataDTO);
//
//
// // validation check
// try {
// validatedKtBcSendBulks(sendReqs);
// } catch (Exception e) {
// extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send]KT-BC 발송(bulks)요청 실패(파라메터 오류)");
// throw e;
// }
//
// final List<List<KtMainSendReqData>> partitions = ListUtils.partition(sendReqs, bulkKtMaxCnt);
// List<ApiResponseDTO> apiResults = partitions.stream()
// .map(bulkSendList -> {
// mstDTO.setReqs(bulkSendList);
// return apiWebClient.exchange(
// url,
// HttpMethod.POST,
// mstDTO,
// ApiResponseDTO.class,
// CmmEnsBizUtils.getHeadeMap());
// }
// )
// .toList();
//
// boolean isSuccess = false;
// List<ErrorMsg> errList = new ArrayList<>();
// for(ApiResponseDTO apiResult : apiResults) {
// // KT-BC API 정상 호출
// if(ObjectUtils.isNotEmpty(apiResult.getData())) {
// KtCommonResponse resDTO = toObjByObj(apiResult.getData(), KtCommonResponse.class);
// assert resDTO != null;
// dto.setResultDt(resDTO.getResultDt());
//
// if(ObjectUtils.isNotEmpty(resDTO) && "00".equals(resDTO.getResultCd())){
// isSuccess = true;
// dto.setErrorMssage("정상");
// }else{
// errList.addAll(resDTO.getErrors());
// }
//
// }else{
// // KT-BC API 호출전 에러 발생
// if(ObjectUtils.isEmpty(dto.getResultDt())) {
// dto.setResultDt(DateUtils.getTodayAndNowTime(ApiConstants.FMT_DT_EMPTY_DLT));
// }
// dto.setErrorMssage(apiResult.getMessage());
// errList.add(new ErrorMsg(apiResult.getMessage()));
// }
// }
//
// // 모두 실패한 경우
// if(!isSuccess) {
// dto.setResultCd("01");
// dto.setErrorMssage(
// errList.stream()
// .map(ErrorMsg::getErrorMsg)
// .collect(Collectors.joining(","))
// );
// mapper.updateKtBcMst(dto);
// extractService.updateSndngMstFailStatus(mstId, SndngSeCode.KT_BC, "[send] KT-BC 발송(bulks)요청 실패");
// return;
// }
//
// // 성공 건수 존재시 성공 처리
// dto.setResultCd("00");
// dto.setErrorMssage("정상");
// mapper.updateKtBcMst(dto);
// extractService.updateSendSndngMstStatus(mstId, unitySndMstId, SndngSeCode.KAKAO, "KT-BC 실패(발송마스터 데이타 오류)");
//
// extractService.sendPostPlus(tgtDTO);
}
//-----------------------------------------------------------------------------------------------------------------
}

@ -123,13 +123,13 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
* <pre>
*
*
* @param reqDTO BatchEnsRequest
* @param dto BatchEnsRequest
* </pre>
*/
private void statusKakao(final SndngMssageParam reqDTO) {
private void statusKakao(final SndngMssageParam dto) {
final String url = apiHost + apiKkoBulkStatus;
final List<String> docsBinderUuids = mapper.selectKakaoStatusTgts(reqDTO);
final List<String> docsBinderUuids = mapper.selectKakaoStatusTgts(dto);
final List<List<String>> partitions = ListUtils.partition(docsBinderUuids, bulkKkoMaxCnt);
final List<ApiResponseDTO> apiResults = partitions.stream()
@ -137,8 +137,8 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
url,
HttpMethod.POST,
BulkStatusRequests.builder()
.signguCode(reqDTO.getSignguCode())
.ffnlgCode(reqDTO.getFfnlgCode())
.signguCode(dto.getSignguCode())
.ffnlgCode(dto.getFfnlgCode())
.document_binder_uuids(uuids)
.build(),
ApiResponseDTO.class,
@ -190,6 +190,12 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
if(apiResult.getData() != null) {
PpStatusResponse resDTO = JsonUtils.toObjByObj(apiResult.getData(), PpStatusResponse.class);
if("OK".equals(resDTO.get())){
//String start
}else{
//TODO :: 실패처리가 필요한 경우 추가
// 에러메세지 - resDTO.get비고()
}
}
}
//-----------------------------------------------------------------------------------------------------------------

@ -29,9 +29,9 @@ public interface IEnsBatchExtractService {
// REQUIRES_NEW service method
//-----------------------------------------------------------------------------------------------------------------
void saveKkoMyDocResult(final String mstId, String unitySndMstId, final List<BulkSendResponses> resList);
void sendEgreen(final SndngMssageParam tgtDTO);
void sendSms(final SndngMssageParam tgtDTO);
void sendPostPlus(final SndngMssageParam tgtDTO);
void sendEgreen(final SndngMssageParam dto);
void sendSms(final SndngMssageParam dto);
void sendPostPlus(final SndngMssageParam dto);

@ -37,7 +37,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/batch/ens/v1")
public class SmsMessageController {
private final ISmsMessageService service;
private final EnsBatchExtractService requireNewService;
private final EnsBatchExtractService extractService;
@Operation(summary = "SMS 메세지 연계", description = "SMS 메세지 연계")
@PostMapping(value = "/sendMessages", produces = MediaType.APPLICATION_JSON_VALUE)
@ -49,7 +49,7 @@ public class SmsMessageController {
@Operation(summary = "SMS 메세지 연계", description = "SMS 메세지 연계")
@PostMapping(value = "/sendMessages2", produces = MediaType.APPLICATION_JSON_VALUE)
public IApiResponse sendMessages2(@RequestBody final SndngMssageParam reqDTO) {
requireNewService.sendSms(reqDTO);
extractService.sendSms(reqDTO);
return ApiResponseDTO.success();
}
}

@ -24,5 +24,6 @@ contract:
bulkstatus: /api/ens/kt/v1/messageResult
pplus:
api:
bulksend: /api/ens/pplus/v1/accept
bulkstatus: /api/ens/pplus/v1/status

@ -244,28 +244,28 @@
register
)
SELECT LPAD(NEXTVAL(sndng_detail_id_seq), 20, '0')
, teusd.unity_sndng_detail_id
, #{sndngMastrId}
, teusm.signgu_code
, teusm.ffnlg_code
, tetm.tmplat_nm
, SHA2(teusd.unity_sndng_detail_id, 256)
, '[NOTICE]'
, unix_timestamp(teusm.clos_dt)
-- , NULL
, teusd.moblphon_no
, teusd.nm
, teusd.ihidnum
, 'false'
, tetm.redirect_url
, tetm.tmplat_sj
, CASE WHEN teusm.sndng_ty_code='PNI' THEN teusd.tmplt_msg_data
ELSE tetm.tmplat_cn END
, tetm.cstmr_cnter_tlphon_no
, '콜센터'
-- , null
, now()
, 'batch'
, teusd.unity_sndng_detail_id
, #{sndngMastrId}
, teusm.signgu_code
, teusm.ffnlg_code
, tetm.tmplat_nm
, SHA2(teusd.unity_sndng_detail_id, 256)
, '[NOTICE]'
, unix_timestamp(teusm.clos_dt)
-- , NULL
, teusd.moblphon_no
, teusd.nm
, teusd.ihidnum
, 'false'
, tetm.redirect_url
, tetm.tmplat_sj
, CASE WHEN teusm.sndng_ty_code='PNI' THEN teusd.tmplt_msg_data
ELSE tetm.tmplat_cn END
, tetm.cstmr_cnter_tlphon_no
, '콜센터'
-- , null
, now()
, 'batch'
FROM tb_ens_unity_sndng_mastr teusm
LEFT JOIN tb_ens_tmplat_manage tetm
ON teusm.tmplat_id = tetm.tmplat_id
@ -411,13 +411,13 @@
register /* 등록자 */
)
SELECT #{sndngMastrId}
, teusm.signgu_code /* TODO :: 운영 시 kt_service_code, kt_dev_service_cerf_key, 다회선 사용자 처리 구분, 테스트 발송여부 변경 필요 */
, teusm.ffnlg_code
, term.kt_service_code
, teusm.signgu_code /* TODO :: 운영 시 kt_service_code, kt_dev_service_cerf_key, 다회선 사용자 처리 구분, 테스트 발송여부 변경 필요 */
, teusm.ffnlg_code
, term.kt_service_code
, term.kt_dev_service_cerf_key
, teusm.tmplat_id
, '2' /* RCS/xMS (RCS :1, xMS: 2) */
, teusm.sndng_dt_1
, teusm.sndng_dt_1
, teusm.clos_dt
, teusm.clos_dt
, '4' /* 3: LMS 4: MMS 6: RCS*/
@ -427,10 +427,10 @@
, teusm.sndng_co
, 'N'
, '3' /* 2 : 다회선 발송 제외(default) (NULL 일경우 동일취급) 3 : 다회선 중 임의 1회선 발송 */
, 'Y'
, 'Y'
, 'N'
, now()
, 'batch'
, now()
, 'batch'
FROM tb_ens_unity_sndng_mastr teusm
LEFT JOIN tb_ens_tmplat_manage tetm
ON teusm.tmplat_id = tetm.tmplat_id
@ -463,44 +463,50 @@
)
SELECT #{sndngMastrId} /* TODO :: 운영 시 mdn 삭제 */
, LPAD(NEXTVAL(sndng_detail_id_seq), 20, '0')
, teusd.unity_sndng_detail_id
, teusd.unity_sndng_detail_id
, row_number() over ()
, tec.ci
, CONCAT(tetm.tmplat_cn, '\n - 열람기간 : ', substring(teusm.clos_dt, 5, 2), '월 ', substring(teusm.clos_dt, 7, 2), '까지\n - 문의처 : ', tetm.cstmr_cnter_tlphon_no
, teusd.unity_sndng_detail_id
, teusd.unity_sndng_detail_id
, row_number() over ()
, tec.ci
, CONCAT(tetm.tmplat_cn, '\n - 열람기간 : ', substring(teusm.clos_dt, 5, 2), '월 ', substring(teusm.clos_dt, 7, 2), '까지\n - 문의처 : ', tetm.cstmr_cnter_tlphon_no
, '\n\n{#INFO_CFRM_STR}\n{#RCVE_RF_STR}')
, tetm.tmplat_sj
, #{url}
, #{url}
, SHA2(teusd.unity_sndng_detail_id, 256)
, '01093414345'
, '01093414345'
, 'N'
, '○ 안내문 확인하기 :'
, '○ 수신거부 및 수신 휴대폰 지정하기 : '
, now()
, 'batch'
, now()
, 'batch'
FROM tb_ens_unity_sndng_mastr teusm
LEFT JOIN tb_ens_tmplat_manage tetm
ON teusm.tmplat_id = tetm.tmplat_id
ON teusm.tmplat_id = tetm.tmplat_id
LEFT JOIN tb_ens_unity_sndng_detail teusd
ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
LEFT JOIN tb_ens_rlaybsnm_manage term
ON teusm.signgu_code = term.signgu_code AND teusm.ffnlg_code = term.ffnlg_code
ON teusm.signgu_code = term.signgu_code AND teusm.ffnlg_code = term.ffnlg_code
LEFT JOIN tb_ens_ci tec
ON teusd.unity_sndng_detail_id = tec.unity_sndng_detail_id
WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
AND teusm.sndng_process_sttus = #{sndngProcessSttus}
ON teusd.unity_sndng_detail_id = tec.unity_sndng_detail_id
WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
AND teusm.sndng_process_sttus = #{sndngProcessSttus}
</insert>
<insert id="insertPplus">
/** ens-mysql-mapper|insertPplus Post plus 데이터 생성|julim */
<!-- FIXME::확인 적용 필요-->
INSERT
INTO tb_ens_kt_bc (
INTO tb_ens_post_plus (
sndng_detail_id, /* 발송상세 id */
unity_sndng_detail_id, /* 통합발송상세 id */
sndng_mastr_id, /* 발송마스터 id */
signgu_code, /* 시군구 코드 */
ffnlg_code, /* 과태료 코드 */
service_cd, /* 서비스 코드 */
con_key, /* 연계 식별키 */
post_dlvr_se, /* 우편 배달 구분 */
addrse_co, /* 수취인 수 */
post_tmplat_code, /* 우편 템플릿 코드 */
sn, /* 순번 */
regist_dt,
register
)
@ -509,9 +515,12 @@
, #{sndngMastrId}
, teusm.signgu_code
, teusm.ffnlg_code
<!--
FIXME::필드 적용 필요
-->
, 'PST'
, teusd.unity_sndng_mastr_id
, tetm.post_dlvr_se
, tetm.addrse_co
, tetm.post_tmplat_code
, teppj.sn
, now()
, 'batch'
FROM tb_ens_unity_sndng_mastr teusm
@ -519,10 +528,8 @@
ON teusm.tmplat_id = tetm.tmplat_id
LEFT JOIN tb_ens_unity_sndng_detail teusd
ON teusm.unity_sndng_mastr_id = teusd.unity_sndng_mastr_id
LEFT JOIN tb_ens_rlaybsnm_manage term
ON teusm.signgu_code = term.signgu_code AND teusm.ffnlg_code = term.ffnlg_code
LEFT JOIN tb_ens_cntc_data tecd
ON teusd.unity_sndng_detail_id = tecd.unity_sndng_detail_id
JOIN tb_ens_post_plus_json teppj
ON teusd.unity_sndng_detail_id = teppj.unity_sndng_detail_id
WHERE teusm.unity_sndng_mastr_id = #{unitySndngMastrId}
AND teusm.sndng_process_sttus = #{sndngProcessSttus}
</insert>
@ -680,7 +687,7 @@
AND tesm.ffnlg_code = #{ffnlgCode}
</select>
<select id="selectKtBcMstTgtInfo" resultType="kr.xit.biz.ens.model.EnsKtBcDTO$KtBcMst">
<select id="selectKtBcMstTgtInfo" resultType="kr.xit.biz.ens.model.EnsKtBcDTO">
/** ens-mysql-mapper|selectKtBcMstTgtInfo-Kt 본문자 수신 대상 정보 조회|julim */
SELECT tesm.sndng_mastr_id /* 발송마스터 ID */
, tesm.unity_sndng_mastr_id /* 통합발송마스터 ID */
@ -764,6 +771,37 @@
ORDER BY tekbd.sndng_detail_id
</select>
<select id="selectPostPlusSendTgts" resultType="kr.xit.biz.ens.model.EnsPostPlusDTO">
/** ens-mysql-mapper|selectPostPlusSendTgts-Post Plus 발송 대상 목록 조회|julim */
SELECT tesm.unity_sndng_mastr_id
, tesm.sndng_mastr_id
, CASE WHEN tesm.try_seq = tesm.try_cnt THEN 'send-ok'
ELSE concat('sending', try_seq)
END AS sndngProcessSttus
, tepp.sndng_detail_id
, tepp.unity_sndng_detail_id
, tepp.signgu_code
, tepp.ffnlg_code
, tepp.service_cd
, tepp.con_key
, teppj.master_cols
, teppj.master_rows
, teppj.detail_cols
, teppj.detail_rows
FROM tb_ens_sndng_mastr tesm
JOIN tb_ens_post_plus tepp
ON tesm.sndng_mastr_id=tepp.sndng_mastr_id
AND tesm.signgu_code = tepp.signgu_code
AND tesm.ffnlg_code = tepp.ffnlg_code
JOIN tb_ens_post_plus_json teppj
ON tepp.unity_sndng_detail_id = teppj.unity_sndng_detail_id
AND tepp.con_key = teppj.con_key
AND tepp.sn = teppj.sn
WHERE tepp.sndng_mastr_id = #{sndngMastrId}
AND tesm.signgu_code = #{signguCode}
AND tesm.ffnlg_code = #{ffnlgCode}
</select>
<select id="selectSndProcessStatus" resultType="kr.xit.biz.ens.model.EnsDTO$SndngMssageParam">
/** ens-mysql-mapper|selectSndProcessStatus-발송상태정보조회|julim */
SELECT tesm.sndng_mastr_id

Loading…
Cancel
Save