feat: Post plus 종적 추적 반영

dev
Jonguk. Lim 2 years ago
parent 78e3f4a02c
commit 9c9db797b5

@ -37,7 +37,7 @@ public class EpostController {
private final IEpostService service;
@Operation(summary = "우편물 종적추적", description = "우편물 종적 추적")
@PostMapping(value = "/postTrackInfo", produces = MediaType.APPLICATION_JSON_VALUE)
@PostMapping(value = "/trace", produces = MediaType.APPLICATION_JSON_VALUE)
public IApiResponse postTrackInfo(@RequestBody final EpostTraceRequest paramDTO) {
EpostTraceResponse resDTO = service.postTrackInfo(paramDTO);
return ApiResponseDTO.success(resDTO);

@ -15,7 +15,7 @@ app:
log:
request:
# exclude pattern : CommonsRequestLoggingFilter && LoggingFilter 적용
exclude-patterns: /swagger-ui/(.*), /api-docs/(.*), /favicon.ico
exclude-patterns: '/swagger-ui/(.*), /api-docs/(.*), /favicon.ico'
custom-enabled: false
# CommonsRequestLoggingFilter 사용 parameter 로그 출력
common-enabled: false

@ -65,8 +65,8 @@ app:
url: 'http://localhost:${server.port}${server.servlet.context-path:}/'
data:
root:
#path: /Users/minuk/data
path: d:/data
path: /Users/minuk/data
#path: d:/data
#---------------------------------------------------------------
# log 설정

@ -355,7 +355,15 @@ public interface IEnsBatchMapper {
Optional<SndngMssageParam> selectPplusSndProcessStatus(final String unitySndngMastrId);
int updatePplusSndStatus(final PpStatusResMapping dto);
/**
*
* @param rgistNo
* @return int
*/
int selectCountRgistNo(final String rgistNo);
int updatePplusRgistNo(final PpStatusResMapping dto);
List<String> selectPplusRgistNos(final String unitySndngMastrId);
//----------------------------------------------------------------------
// status
//----------------------------------------------------------------------

@ -12,6 +12,8 @@ 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.biz.ens.model.cntc.CntcDTO;
import kr.xit.biz.ens.model.epost.EPostDTO.EpostTraceRequest;
import kr.xit.biz.ens.model.epost.EPostDTO.EpostTraceResponse;
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;
@ -56,9 +58,11 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
private String apiHost;
@Value("${contract.kakao.api.bulkstatus}")
private String apiKkoBulkStatus;
@Value("${contract.pplus.api.bulkstatus}")
private String apiPplusBulkStatus;
@Value("${contract.epost.api.trace}")
private String apiEpostTrace;
@Value("${contract.kakao.bulk-max-cnt}")
private int bulkKkoMaxCnt;
@ -231,33 +235,15 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
}
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());
}
// 등기번호 set
setPostPlusRgistNo(resDTO, unitySndngMstId);
// post plus 상태 변경
mapper.updatePplusSndStatus(resMapDTO);
// 제작발송완료 -> 종적추적
if("제작발송완료".equals(processSttus)){
//TODO 종적추적
epostTrace(unitySndngMstId, reqDTO);
}
}
@ -270,4 +256,64 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
}
}
}
/**
* Post plus set
*
* ->
* @param resDTO
* @param unitySndngMstId
*/
private void setPostPlusRgistNo(PpStatusResponse resDTO, String unitySndngMstId) {
if(mapper.selectCountRgistNo(resDTO.get()) == 0) {
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());
}
}
}
private void epostTrace(final String unitySndngMstId, final SndngMssageParam reqDTO){
final List<String> rgistNos = mapper.selectPplusRgistNos(unitySndngMstId);
//final List<String> rgistNos = List.of("1900472677718","1900472677695");
if(!rgistNos.isEmpty()){
final String url = apiHost + apiEpostTrace;
rgistNos.forEach( rgistNo -> {
ApiResponseDTO apiResult = apiWebClient.exchange(
url,
HttpMethod.POST,
EpostTraceRequest.builder()
.signguCode(reqDTO.getSignguCode())
.ffnlgCode(reqDTO.getFfnlgCode())
.rgist(rgistNo)
.build(),
ApiResponseDTO.class,
CmmEnsBizUtils.getHeadeMap());
if(apiResult.getData() != null) {
final EpostTraceResponse resDTO = JsonUtils.toObjByObj(apiResult.getData(),
EpostTraceResponse.class);
//final String unitySndngMstId = resDTO.get연계식별키();
System.out.println(""+resDTO);
}
});
}
}
}

@ -15,7 +15,7 @@ app:
log:
request:
# exclude pattern : CommonsRequestLoggingFilter && LoggingFilter 적용
exclude-patterns: /swagger-ui/(.*), /api-docs/(.*), /favicon.ico
exclude-patterns: '/swagger-ui/(.*), /api-docs/(.*), /favicon.ico'
custom-enabled: false
# CommonsRequestLoggingFilter 사용 parameter 로그 출력
common-enabled: false

@ -26,4 +26,7 @@ contract:
api:
bulksend: /api/ens/pplus/v1/accept
bulkstatus: /api/ens/pplus/v1/status
epost:
api:
trace: /api/ens/epost/v1/trace

@ -73,7 +73,8 @@ app:
url: 'http://localhost:${server.port}${server.servlet.context-path:}/'
data:
root:
path: D:/data
path: /Users/minuk/data
#path: d:/data
#---------------------------------------------------------------
# log 설정

@ -907,6 +907,7 @@
JOIN tb_ens_post_plus tepp
ON tesm.sndng_mastr_id = tepp.sndng_mastr_id
WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
AND LIMIT 1
</select>
<update id="updatePplusSndStatus" parameterType="kr.xit.biz.ens.model.pplus.PplusDTO$PpStatusResMapping">
@ -924,6 +925,13 @@
LIMIT 1)
</update>
<select id="selectCountRgistNo" resultType="int">
/** ens-mysql-mapper|selectCountRgistNo-Post plus 등기번호 조회|julim */
Select count(sndng_detail_id)
FROM tb_ens_post_plus
WHERE rgist_no = #{rgistNo}
</select>
<update id="updatePplusRgistNo" parameterType="kr.xit.biz.ens.model.pplus.PplusDTO$PpStatusResMapping">
/** ens-mysql-mapper|updatePplusRgistNo-Post plus 등기번호 변경|julim */
UPDATE tb_ens_post_plus
@ -935,9 +943,17 @@
JOIN tb_ens_post_plus tepp
ON tesm.sndng_mastr_id = tepp.sndng_mastr_id
WHERE tesm.unity_sndng_mastr_id = #{unitySndngMastrId}
LIMIT 1)
AND sn = #{sn}
AND tepp.sn = #{sn})
</update>
<select id="selectPplusRgistNos" resultType="string">
/** ens-mysql-mapper|selectPplusRgistNos-Post plus 등기번호 목록 조회|julim */
SELECT tepp.rgist_no
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>
<!-- =================================================================================== -->
<!-- ================================ status ============================================= -->
<!-- =================================================================================== -->

Loading…
Cancel
Save