feat: Post plus 상태 조회 반영

dev
gitea-관리자 2 years ago
parent 9b221d5986
commit 03b7dda280

@ -10,6 +10,7 @@ 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;
import kr.xit.biz.ens.model.kt.KtMmsSendDTO.KtMainSendReqData;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusResMapping;
import org.egovframe.rte.psl.dataaccess.mapper.Mapper;
/**
@ -350,6 +351,11 @@ public interface IEnsBatchMapper {
* </pre>
*/
int updateKakaoStatusInfo(final BulkStatus dto);
Optional<SndngMssageParam> selectPplusSndProcessStatus(final String unitySndngMastrId);
int updatePplusSndStatus(final PpStatusResMapping dto);
int updatePplusRgistNo(final PpStatusResMapping dto);
//----------------------------------------------------------------------
// status
//----------------------------------------------------------------------
@ -406,5 +412,4 @@ public interface IEnsBatchMapper {
* </pre>
*/
EnsDTO.MobilePageManage selectKkoMobilePage(final OneTimeToken dto);
}

@ -180,6 +180,25 @@ public class EnsBatchExtractService extends EgovAbstractServiceImpl implements
updateMstTable(paramDTO, seCode);
}
/**
* Post plus fail
* @param unitySndngMastrId
* @param status
* @param errCode
* @param errMsg
* @param stsErrMsg
*/
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updatePplusSndngMstFailStatus(final String unitySndngMastrId, final String status, final String errCode, final String errMsg, final String stsErrMsg) {
final SndngMssageParam dto = mapper.selectPplusSndProcessStatus(unitySndngMastrId)
.orElseThrow(() -> BizRuntimeException.create(stsErrMsg));
dto.setNewSndngProcessSttus(StringUtils.defaultString(status, "send-fail"));
dto.setErrorCode(errCode);
dto.setErrorMssage(errMsg);
updateMstTable(dto, SndngSeCode.PPLUS);
}
//-----------------------------------------------------------------------------------------------------------------
// REQUIRES_NEW service method
//-----------------------------------------------------------------------------------------------------------------
@ -195,9 +214,7 @@ public class EnsBatchExtractService extends EgovAbstractServiceImpl implements
* @param stsErrMsg
* </pre>
*/
public void updateSendSndngMstStatus(final String mstId,
final String unitySndMstId, final SndngSeCode seCode, final String stsErrMsg) {
public void updateSendSndngMstStatus(final String mstId, final String unitySndMstId, final SndngSeCode seCode, final String stsErrMsg) {
SndngMssageParam dto = mapper.selectSndProcessStatus(mstId)
.orElseThrow(() -> BizRuntimeException.create(stsErrMsg));
SndngMssageParam paramDTO = SndngMssageParam.builder()

@ -3,6 +3,7 @@ package kr.xit.biz.ens.service;
import static kr.xit.core.support.utils.JsonUtils.toObjByObj;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import kr.xit.biz.common.ApiConstants;
import kr.xit.biz.common.ApiConstants.SndngSeCode;
@ -14,6 +15,7 @@ import kr.xit.biz.ens.model.cntc.CntcDTO;
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatusRequests;
import kr.xit.biz.ens.model.kakao.KkopayDocBulkDTO.BulkStatusResponses;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusRequest;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusResMapping;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusResponse;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.model.ApiResponseDTO;
@ -64,6 +66,7 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
private final ApiWebClientUtil apiWebClient;
private final IEnsBatchMapper mapper;
private final EnsBatchExtractService extractService;
/**
* <pre>
@ -197,15 +200,81 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
CmmEnsBizUtils.getHeadeMap());
if(apiResult.getData() != null) {
PpStatusResponse resDTO = JsonUtils.toObjByObj(apiResult.getData(), PpStatusResponse.class);
final PpStatusResponse resDTO = JsonUtils.toObjByObj(apiResult.getData(), PpStatusResponse.class);
final String unitySndngMstId = resDTO.get();
// 확인불가 -> 일반 오류상태 msg
//출력대기 -> 제작 전단계
//출력/봉입/우체국접수중 -> 제작 중
//제작발송완료 -> 제작 후 우체국접수, 후불결제시 과금대상
//접수취소 -> 제작 취소
final String processSttus = resDTO.get();
// 일반|등기|준등기|익일특급|선택등기
final String dlvr = resDTO.get();
if("OK".equals(resDTO.get())){
//String start
// 실패 처리
if(Arrays.asList("확인불가","접수취소").contains(processSttus)){
extractService.updatePplusSndngMstFailStatus(unitySndngMstId, "send-fail", resDTO.get(), processSttus, "[send] Post Plus 발송(Accept)요청 실패");
return;
}
PpStatusResMapping resMapDTO = PpStatusResMapping.builder()
.unitySndngMastrId(unitySndngMstId)
.processSttus(processSttus)
.build();
// 일반우편
if("일반".equals(dlvr)){
if("제작발송완료".equals(processSttus)) resMapDTO.setDlvrSttus("배달");
mapper.updatePplusSndStatus(resMapDTO);
}
if(Arrays.asList("등기","준등기","익일특급").contains(processSttus)){
int dlvCnt = Integer.valueOf(resDTO.get());
int startRgistNo = Integer.parseInt(resDTO.get());
int endRgistNo = Integer.parseInt(resDTO.get());
if(endRgistNo != (startRgistNo + dlvCnt -1)) {
throw BizRuntimeException.create(
String.format("등기번호 오류(시작등기번호[%s]~종료등기번호[%s] 발송건수[%s])", startRgistNo, endRgistNo, dlvCnt)
);
}
// 등기번호 update
for(int idx = 1; idx <= dlvCnt; idx++){
mapper.updatePplusRgistNo(
PpStatusResMapping.builder()
.unitySndngMastrId(unitySndngMstId)
.rgistNo(String.valueOf(startRgistNo++))
.sn(idx)
.build());
}
// post plus 상태 변경
mapper.updatePplusSndStatus(resMapDTO);
// 제작발송완료 -> 종적추적
if("제작발송완료".equals(processSttus)){
//TODO 종적추적
}
}
}else{
//TODO :: 실패처리가 필요한 경우 추가
// 에러메세지 - resDTO.get비고()
extractService.updatePplusSndngMstFailStatus(unitySndngMstId, "send-fail", resDTO.get(), resDTO.get(), "[send] Post Plus 발송(Accept)요청 실패");
}
}
}
private void processOk(){
}
//-----------------------------------------------------------------------------------------------------------------
}

@ -895,6 +895,47 @@
FROM tb_ens_kakao_my_doc tekmd
WHERE tekmd.document_binder_uuid = #{document_binder_uuid})
</update>
<select id="selectPplusSndProcessStatus" resultType="kr.xit.biz.ens.model.cmm.SndngMssageParam">
/** ens-mysql-mapper|selectPplusSndProcessStatus-Post plus 발송 상태 조회|julim */
SELECT tesm.sndng_mastr_id
, tesm.unity_sndng_mastr_id
, tesm.try_cnt
, tesm.try_seq
, '' AS newSndngProcessSttus
FROM tb_ens_sndng_mastr tesm
JOIN tb_ens_post_plus tepp
ON tesm.sndng_mastr_id = tepp.sndng_mastr_id
WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
</select>
<update id="updatePplusSndStatus" parameterType="kr.xit.biz.ens.model.pplus.PplusDTO$PpStatusResMapping">
/** ens-mysql-mapper|updatePplusSndStatus-Post plus 상태 변경|julim */
UPDATE tb_ens_post_plus
SET process_sttus = #{processSttus}
, dlvr_sttus = #{dlvrSttus}
, updt_dt = now()
, updusr = 'batch'
WHERE sndng_mastr_id = (SELECT tesm.sndng_mastr_id
FROM tb_ens_sndng_mastr tesm
JOIN tb_ens_post_plus tepp
ON tesm.sndng_mastr_id = tepp.sndng_mastr_id
WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId})
</update>
<update id="updatePplusRgistNo" parameterType="kr.xit.biz.ens.model.pplus.PplusDTO$PpStatusResMapping">
/** ens-mysql-mapper|updatePplusRgistNo-Post plus 등기번호 변경|julim */
UPDATE tb_ens_post_plus
SET rgist_no = #{rgistNo}
, updt_dt = now()
, updusr = 'batch'
WHERE sndng_mastr_id = (SELECT tesm.sndng_mastr_id
FROM tb_ens_sndng_mastr tesm
JOIN tb_ens_post_plus tepp
ON tesm.sndng_mastr_id = tepp.sndng_mastr_id
WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId})
AND sn = #{sn}
</update>
<!-- =================================================================================== -->
<!-- ================================ status ============================================= -->
<!-- =================================================================================== -->

@ -8,6 +8,7 @@ import javax.validation.constraints.Size;
import kr.xit.biz.ens.model.cmm.CmmEnsRequestDTO;
import kr.xit.core.model.IApiResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@ -711,4 +712,49 @@ public class PplusDTO {
}
@Schema(name = "PpStatusResMapping", description = "Postplus 우편제작 상태 조회 결과 Mapping DTO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public static class PpStatusResMapping {
/**
* <pre>
* :
* </pre>
*/
private String unitySndngMastrId;
/**
*
*/
private Integer sn;
/**
* <pre>
* : ||||||
* -> msg
* ->
* // ->
* -> ,
* ->
* </pre>
*/
private String processSttus;
/**
* <pre>
*
* </pre>
*/
private String dlvrSttus;
/**
* <pre>
*
* </pre>
*/
private String rgistNo;
}
}

Loading…
Cancel
Save