feat: Post plus 상태 조회 반영

dev
gitea-관리자 2 years ago
parent be7a976ffa
commit ad6973f62d

@ -71,169 +71,4 @@ public class BizKtMmsController {
public IApiResponse requestToken(@RequestBody final KtMnsRequest paramDTO) {
return ApiResponseDTO.success(service.requestToken(paramDTO));
}
// @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {
// @Content(
// mediaType = "application/json",
// examples = {
// @ExampleObject(
// name = "교통시설운영처",
// value = PARAM1),
// @ExampleObject(
// name = "승화원",
// value = PARAM2)
// })
// })
// @Operation(summary = "본문자 수신 등록 요청(BC-AG-SN-002)", description = "본문자 수신 등록 요청(BC-AG-SN-002)")
// @PostMapping(value = "/mainSend", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse mainSend(@RequestBody final KtMnsRequest reqDTO) {
// KtCommonResponse dto = service.mainSend(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// /*
// @io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {
// @Content(
// mediaType = "application/json",
// examples = {
// @ExampleObject(
// value = """
// {
// "signguCode": "",
// "ffnlgCode": "11",
// "service_cd": "NPS",
// "service_key": "A3AD41349D759DD3",
// "msg_cd": "10006",
// "msg_type": "2",
// "make_dt": "20211229102000",
// "sndn_ex_time": "20211229180000",
// "sndn_tot_cnt": 1,
// "reqs": [
// {
// "src_key": "S20211229102000001",
// "src_seq": "1",
// "ci": "gdlIa53FZGQz5aKa3wLk33nW57N3mDpcwHytWlWMhzxHKulk7EZs143442394326642342364238648423864237",
// "mdn": "01011112222", "rcve_rf_str":" ○ 수신거부 및 수신 휴대폰 지정하기 :"
// }
// ],
// "opt_type": "2",
// "mktn_rcve_csyn": "N",
// "m_type": "2"
// }
// """)
// })
// })*/
// @Operation(summary = "사전 문자 수신 등록 요청", description = "사전 문자 수신 등록 요청(BC-AG-SN-001)")
// @PostMapping(value = "/beforeSend", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse beforeSend(@RequestBody final KtBefSendRequest reqDTO) {
// KtCommonResponse dto = service.beforeSend(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "본문자 수신 등록 요청", description = "본문자 수신 등록 요청(BC-AG-SN-002)")
// @PostMapping(value = "/mainSend", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse mainSend(@RequestBody final KtMainSendRequest reqDTO) {
// KtCommonResponse dto = service.mainSend(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "수신 거부 등록 요청", description = "수신 거부 등록 요청(BC-AG-SN-007)")
// @PostMapping(value = "/blacklist", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse blacklist(@RequestBody final KtBlacklistRequest reqDTO) {
// KtCommonResponse dto = service.blacklist(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "토큰인증확인 조회", description = "토큰인증확인조회요청(BC-AG-SN-008)")
// @PostMapping(value = "/cfmToken", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse cfmToken(@RequestBody final KtTokenConfirmRequest reqDTO) {
// KtCommonResponse dto = service.cfmToken(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "토큰열람확인결과 전송", description = "토큰열람확인결과 전송(BC-AG-SN-009)")
// @PostMapping(value = "/readToken", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse readToken(@RequestBody final KtTokenReadRequest reqDTO) {
// KtCommonResponse dto = service.readToken(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "사전/본 문자 발송/수신 결과 전송 요청", description = "사전/본 문자 발송/수신 결과 전송 요청(BC-AG-SN-010)")
// @PostMapping(value = "/messageResult", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse messageResult(@RequestBody final KtMsgRsltRequest reqDTO) {
// KtCommonResponse dto = service.messageResult(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "백오피스 발송 통계 연계 조회 요청", description = "백오피스 발송 통계 연계 조회 요청(BC-AG-SN-011)")
// @PostMapping(value = "/sendSttc", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse sendSttc(@RequestBody final KtSendSttcRequest reqDTO) {
// KtMmsDTO.KtSendSttcResponse dto = service.sendSttc(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "백오피스 발송 결과 연계 조회 요청", description = "백오피스 발송 결과 연계 조회 요청(BC-AG-SN-012)")
// @PostMapping(value = "/sendSttcDtl", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse sendSttcDtl(@RequestBody final KtSendSttcDtlRequest reqDTO) {
// KtMmsDTO.KtSendSttcDtlResponse dto = service.sendSttcDtl(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "whitelist 등록 요청", description = "whitelist 등록 요청(BC-AG-SN-013)")
// @PostMapping(value = "/whitelist", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse whitelist(@RequestBody final KtWhitelistRequest reqDTO) {
// KtCommonResponse dto = service.whitelist(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "수신거부상태 전송", description = "수신거부상태전송(BC-AG-SN-014)")
// @PostMapping(value = "/refuseRcv", produces = MediaType.APPLICATION_JSON_VALUE)
// public KtCommonResponse refuseRcv(@RequestBody final KtRefuseRcvRequest reqDTO) {
// KtCommonResponse dto = service.refuseRcv(reqDTO);
// return dto;
// }
//
// @Operation(summary = "수신동의상태 전송", description = "수신동의상태전송(BC-AG-SN-015)")
// @PostMapping(value = "/approveRcv", produces = MediaType.APPLICATION_JSON_VALUE)
// public KtCommonResponse approveRcv(@RequestBody final KtApproveRcvRequest reqDTO) {
// KtCommonResponse dto = service.approveRcv(reqDTO);
// return dto;
// }
//
// @Operation(summary = "유통증명서발급처리 요청", description = "유통증명서발급처리 요청(BC-AG-SM-001)")
// @PostMapping(value = "/cerfAcmd", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse cerfAcmd(@RequestBody final KtAcmdCerfRequest reqDTO) {
// KtAcmdCerfResponse dto = service.cerfAcmd(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "가상정산화면 연계토큰 인증 요청", description = "가상정산화면 연계토큰 인증 요청(BC-AG-SM-002)")
// @PostMapping(value = "/excaAcmd", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse excaAcmd(@RequestBody final KtTokenExcaRequest reqDTO) {
// KtCommonResponse dto = service.excaAcmd(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "정산연계자료조회", description = "정산연계자료조회(BC-AG-EC-001)")
// @PostMapping(value = "/exca", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse exca(@RequestBody final KtExcaRequest reqDTO) {
// KtExcaResponse dto = service.exca(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "전자문서 유통정보 수치 조회", description = "전자문서 유통정보 수치 조회(BC-AG-HS-001)")
// @PostMapping(value = "/infoAcmd", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse infoAcmd(@RequestBody final KtAcmdInfoRequest reqDTO) {
// KtAcmdInfoResponse dto = service.infoAcmd(reqDTO);
// return ApiResponseDTO.success(dto);
// }
//
// @Operation(summary = "전자문서 유통정보 수치확인서 발급 처리", description = "전자문서 유통정보 수치확인서 발급 처리(BC-AG-HS-002)")
// @PostMapping(value = "/cfmAcmd", produces = MediaType.APPLICATION_JSON_VALUE)
// public IApiResponse cfmAcmd(@RequestBody final KtAcmdInfoCfmRequest reqDTO) {
// KtAcmdInfoCfmResponse dto = service.cfmAcmd(reqDTO);
// return ApiResponseDTO.success(dto);
// }
}

@ -3,7 +3,6 @@ package kr.xit.ens.epost.web;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import kr.xit.biz.ens.model.epost.EPostDTO.EpostTraceRequest;
import kr.xit.biz.ens.model.epost.EPostDTO.EpostTraceResponse;
import kr.xit.core.model.ApiResponseDTO;
import kr.xit.core.model.IApiResponse;
import kr.xit.ens.epost.service.IEpostService;
@ -39,7 +38,6 @@ public class EpostController {
@Operation(summary = "우편물 종적추적", description = "우편물 종적 추적")
@PostMapping(value = "/trace", produces = MediaType.APPLICATION_JSON_VALUE)
public IApiResponse postTrackInfo(@RequestBody final EpostTraceRequest paramDTO) {
EpostTraceResponse resDTO = service.postTrackInfo(paramDTO);
return ApiResponseDTO.success(resDTO);
return ApiResponseDTO.success(service.postTrackInfo(paramDTO));
}
}

@ -38,31 +38,8 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/api/ens/pplus/v1")
public class PplusController {
private final IPplusService service;
/*
@io.swagger.v3.oas.annotations.parameters.RequestBody(required = true, content = {
@Content(
mediaType = "application/json",
examples = {
@ExampleObject(
value = """
{
"master":{
"cols":["버전","테스트여부","서비스","연계식별키","봉투","봉투창","흑백칼라","단면양면","배달","템플릿코드","템플릿출력여부","페이지수","동봉물페이지수","수취인수","주소페이지유무","맞춤자제유무","메일머지유무","반송여부","스테이플러유무","발송인명","발송인우편번호","발송인주소","발송인상세주소","발송인전화번호"],
"rows":["v1.10","N","PST","TEST20230221_000001","대봉투","단창","흑백","단면","일반","001","N",2,0,2,"N","Y","N","N","N","포플테스트","05777","서울특별시 광진구 강변역로2","B동 4층","15778114"]
},
"detail":{
"cols":["순번","이름","우편번호","주소","상세주소","전화번호","첨부파일"],
"rows":[
["1","포플1","05777","서울특별시 광진구 강변역로2","B동 4층","15778114","TEST20230221_000001.pdf"],
["2","포플2","05777","서울특별시 광진구 강변역로2","B동 4층","15778114","TEST20230221_000001.pdf"]
]
}
}
""")
})
})*/
@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 send(@ModelAttribute final SndngMssageParam paramDTO) {
PpCommonResponse resDTO = service.sendBulks(paramDTO);

@ -86,9 +86,8 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
@Override
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void statusBulks(final EnsDTO.BatchEnsRequest reqDTO) {
final String url = apiHost + apiKkoBulkStatus;
final List<SndngMssageParam> tgtList = mapper.selectStatusBulkTgts(reqDTO);
for (SndngMssageParam dto : tgtList) {
dto.setSignguCode(reqDTO.getSignguCode());
dto.setFfnlgCode(reqDTO.getFfnlgCode());
@ -250,7 +249,6 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
.build()
)
);
}
if(Arrays.asList("등기","준등기","익일특급").contains(processSttus)){
@ -314,55 +312,50 @@ public class EnsBatchStatusService extends EgovAbstractServiceImpl implements IE
pMap.put("endRgistNo", resDTO.get());
final List<PplusResult> lists = mapper.selectPplusUnitySndngDetailIdsByRgistNo(pMap);
//final List<String> rgistNos = List.of("1900472677718","1900472677695");
if(!lists.isEmpty()){
final String url = apiHost + apiEpostTrace;
lists.forEach( dto -> {
ApiResponseDTO apiResult = apiWebClient.exchange(
url,
HttpMethod.POST,
EpostTraceRequest.builder()
.signguCode(reqDTO.getSignguCode())
.ffnlgCode(reqDTO.getFfnlgCode())
.rgist(dto.getRgistNo())
.build(),
ApiResponseDTO.class,
CmmEnsBizUtils.getHeadeMap());
if(apiResult.getData() != null) {
final EpostTraceResponse epostResDTO = JsonUtils.toObjByObj(apiResult.getData(),
EpostTraceResponse.class);
//final String unitySndngMstId = resDTO.get연계식별키();
System.out.println(""+epostResDTO);
dto.setSignguCode(reqDTO.getSignguCode());
dto.setFfnlgCode(reqDTO.getFfnlgCode());
try{
assert epostResDTO != null;
EpostTraceResTrackInfo traceDTO = epostResDTO.result();
mapper.updatePplusDlvrStatusFromEPostByRgistNo(traceDTO);
dto.setDlvrSttus(traceDTO.getTrackState());
dto.setSenderData(traceDTO.getSenderData());
dto.setReceiveDate(traceDTO.getReceiveDate());
mapper.savePplusCntcSndngResult(dto);
}catch (BizRuntimeException e){
//TODO :: error 처리 확인 필요
mapper.updatePplusDlvrStatusFromEPostByRgistNo(
EpostTraceResTrackInfo.builder()
.regiNo(dto.getRgistNo())
.trackState(e.getMessage())
.build()
);
dto.setErrorCn(e.getMessage());
}
mapper.savePplusCntcSndngResult(dto);
final String url = apiHost + apiEpostTrace;
lists.forEach( dto -> {
if(Checks.isEmpty(dto.getRgistNo())) return;
ApiResponseDTO apiResult = apiWebClient.exchange(
url,
HttpMethod.POST,
EpostTraceRequest.builder()
.signguCode(reqDTO.getSignguCode())
.ffnlgCode(reqDTO.getFfnlgCode())
.rgist(dto.getRgistNo())
.build(),
ApiResponseDTO.class,
CmmEnsBizUtils.getHeadeMap());
if(apiResult.getData() != null) {
final EpostTraceResponse epostResDTO = JsonUtils.toObjByObj(apiResult.getData(),
EpostTraceResponse.class);
dto.setSndngSeCode(SndngSeCode.PPLUS.getCode());
dto.setSignguCode(reqDTO.getSignguCode());
dto.setFfnlgCode(reqDTO.getFfnlgCode());
try{
assert epostResDTO != null;
EpostTraceResTrackInfo traceDTO = epostResDTO.result();
mapper.updatePplusDlvrStatusFromEPostByRgistNo(traceDTO);
dto.setDlvrSttus(traceDTO.getTrackState());
dto.setSenderData(Checks.isNotEmpty(traceDTO.getSenderData()) ? traceDTO.getSenderData() + "0000" : null);
dto.setReceiveDate(Checks.isNotEmpty(traceDTO.getReceiveDate()) ? traceDTO.getReceiveDate() + "0000" : null);
}catch (BizRuntimeException e){
//TODO :: error 처리 확인 필요
mapper.updatePplusDlvrStatusFromEPostByRgistNo(
EpostTraceResTrackInfo.builder()
.regiNo(dto.getRgistNo())
.trackState(e.getMessage())
.build()
);
dto.setErrorCn(e.getMessage());
}
});
}
mapper.savePplusCntcSndngResult(dto);
}
});
}
}

@ -972,7 +972,7 @@
<update id="updatePplusDlvrStatusFromEPostByRgistNo" parameterType="kr.xit.biz.ens.model.epost.EPostDTO$EpostTraceResTrackInfo">
/** ens-mysql-mapper|updatePplusDlvrStatusFromEPostByRgistNo-Post plus 우체국 종적 추적을 통한 배송상태 변경|julim */
UPDATE tb_ens_post_plus
SET dlvr_sttus = SUBSTR(#{trackStatus}, 1, 20)
SET dlvr_sttus = SUBSTR(#{trackState}, 1, 20)
, dlvr_de = REPLACE(#{receiveDate}, "-", "")
, recevie_name = #{receiveName}
, updt_dt = now()
@ -1017,7 +1017,7 @@
WHERE unity_sndng_detail_id = #{unitySndngDetailId}
</insert>
<insert id="updateCntcSndngResultByKkoMyDoc">
<update id="updateCntcSndngResultByKkoMyDoc">
/** ens-mysql-mapper|updateCntcSndngResult-연계발송결과반영|julim */
UPDATE tb_cntc_sndng_result
SET sndng_result_sttus = #{sndngResultSttus}
@ -1030,7 +1030,7 @@
WHERE unity_sndng_detail_id = (SELECT tekmd.unity_sndng_detail_id
FROM tb_ens_kakao_my_doc tekmd
WHERE tekmd.document_binder_uuid = #{documentBinderUuid})
</insert>
</update>
<select id="selectPplusResultTgtsByUnitySndngMstId" parameterType="string" resultType="string">
/** ens-mysql-mapper|selectPplusResultTgtsByUnitySndngMstId-post plus 연계발송결과반영 대상 조회|julim */
@ -1060,19 +1060,19 @@
#{unitySndngDetailId}
, #{sndngSeCode} /* 발송구분코드 - KAKAO-MY-DOC|KT-BC */
, #{signguCode} /* 시군구코드 */
, #{ffnlgcode} /* 과태료코드 */
, #{ffnlgCode} /* 과태료코드 */
, #{dlvrSttus}
, #{rgistNo}
, #{senderData} /* 송신(요청) 일시 */
, #{receiveDate} /* 수신(조회) 일시 */
, REPLACE(#{senderData}, "-", "") /* 송신(요청) 일시 */
, REPLACE(#{receiveDate}, "-", "") /* 수신(조회) 일시 */
, #{errorCn} /* 에러내용 */
, now()
, 'batch'
)
ON DUPLICATE KEY UPDATE
sndng_result_sttus = IFNULL(#{dlvrSttus}, sndng_result_sttus)
, requst_dt = IFNULL(#{senderData}, requst_dt) /* 송신(요청) 일시 */
, inqire_dt = IFNULL(#{receiveDate}, inqire_dt) /* 수신(조회) 일시 */
, requst_dt = IFNULL(REPLACE(#{senderData}, "-", ""), requst_dt) /* 송신(요청) 일시 */
, inqire_dt = IFNULL(REPLACE(#{receiveDate}, "-", ""), inqire_dt) /* 수신(조회) 일시 */
, updt_dt = now()
, updusr = 'batch'
</insert>

@ -16,11 +16,8 @@ import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;
import org.apache.commons.lang3.ObjectUtils;
/**
* <pre>
@ -81,8 +78,9 @@ public class EPostDTO {
* </pre>
*/
@Schema(name = "EpostTraceResponse", description = "EPost 종적추적 요청 결과 DTO")
@Getter
@Setter
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "response")
@Builder
@ -110,8 +108,9 @@ public class EPostDTO {
* </pre>
*/
@Schema(name = "EpostTraceResHeader", description = "EPost 종적추적 요청 결과 header DTO")
@Getter
@Setter
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "header")
public static class EpostTraceResHeader {
@ -156,8 +155,9 @@ public class EPostDTO {
* </pre>
*/
@Schema(name = "EpostTraceResTrackInfo", description = "EPost 종적추적 요청 결과 trackInfo DTO")
@Getter
@Setter
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "trackInfo")
@Builder
@ -234,8 +234,9 @@ public class EPostDTO {
* </pre>
*/
@Schema(name = "EpostTraceResDtlTrack", description = "EPost 종적추적 요청 결과 detaileTrackList DTO")
@Getter
@Setter
@Data
@NoArgsConstructor
@AllArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "detaileTrackList")
private static class EpostTraceResDtlTrack {

@ -772,6 +772,8 @@ public class PplusDTO {
*/
private String unitySndngDetailId;
private String sndngSeCode;
/**
*
*/

@ -18,7 +18,7 @@ import kr.xit.core.support.utils.ConvertHelper;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
@ -43,7 +43,7 @@ import org.springframework.validation.ObjectError;
* </pre>
*/
@Schema(name = "ApiResponseDTO", description = "Restful API 결과")
@Getter
@Data
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder

@ -4,8 +4,12 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.spring.util.CoreSpringUtils;
import lombok.AccessLevel;
@ -16,6 +20,9 @@ import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
@ -94,6 +101,25 @@ public class JsonUtils {
}
}
/**
* xml String -> cls
* @param xml String
* @param cls Class
* @return cls Class
*/
public static <T> T toObjByXml(String xml, final Class<T> cls){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xml)));
return toObject(OM.writeValueAsString(document), cls);
} catch (ParserConfigurationException | SAXException | IOException e) {
throw BizRuntimeException.create(e.getMessage());
}
}
/**
* Json string -> class list
* @return T
@ -127,12 +153,10 @@ public class JsonUtils {
}
/**
* Object key value
* -> key, value JSONObject return
* @param obj key, value Object
* @param keyName key JSON key name
* @param valueName value JSON key name
* @return JSONObject key, value JSONObject
* Object
* -> MultiValueMap<String, String> return
* @param obj Object
* @return MultiValueMap<String, String>
*/
public static MultiValueMap<String, String> toMultiValue(final Object obj){
if(ObjectUtils.isEmpty(obj)) return null;

Loading…
Cancel
Save