diff --git a/mens-api/src/main/java/kr/xit/ens/pplus/service/PplusService.java b/mens-api/src/main/java/kr/xit/ens/pplus/service/PplusService.java
index f624c78..6c99404 100644
--- a/mens-api/src/main/java/kr/xit/ens/pplus/service/PplusService.java
+++ b/mens-api/src/main/java/kr/xit/ens/pplus/service/PplusService.java
@@ -1,13 +1,35 @@
package kr.xit.ens.pplus.service;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import kr.xit.biz.ens.model.cmm.CmmEnsRlaybsnmDTO;
+import kr.xit.biz.ens.model.pplus.PplusDTO.PpAcceptReqDataDtl;
+import kr.xit.biz.ens.model.pplus.PplusDTO.PpAcceptReqDataMst;
+import kr.xit.biz.ens.model.pplus.PplusDTO.PpAcceptReqDataStruct;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpAcceptRequest;
+import kr.xit.biz.ens.model.pplus.PplusDTO.PpAcceptRequestStruct;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpCommonResponse;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusRequest;
import kr.xit.biz.ens.model.pplus.PplusDTO.PpStatusResponse;
import kr.xit.core.spring.util.ApiWebClientUtil;
+import kr.xit.core.support.utils.FileUtil;
+import kr.xit.core.support.utils.JsonUtils;
+import kr.xit.ens.kt.cmm.CmmKtMmsUtils;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
/**
*
@@ -24,18 +46,158 @@ import org.springframework.stereotype.Service;
*
*
*/
+@Slf4j
@RequiredArgsConstructor
@Service
public class PplusService extends EgovAbstractServiceImpl implements IPplusService {
+ @Value("${file.cmm.temp-path}")
+ private String FILE_TEMP_PATH;
+
+ @Value("${contract.pplus.host}")
+ private String HOST;
+
+ @Value("${contract.pplus.api.accept}")
+ private String ACCEPT;
+
private final ApiWebClientUtil webClient;
@Override
public PpCommonResponse accept(PpAcceptRequest reqDTO) {
+ final CmmEnsRlaybsnmDTO ktMnsInfo = CmmKtMmsUtils.getKtMnsInfo(reqDTO.getSignguCode(), reqDTO.getFfnlgCode());
+ reqDTO.setApiKey(ktMnsInfo.getPplusApiKey());
+ JSONObject mstJson = makePpAcceptMstData();
+ JSONObject dtlJson = makePpAcceptDtlData();
+
+ 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);
+ log.debug(reqDataJsonStr);
+
+
+ FileUtil.saveFile(FILE_TEMP_PATH,"pstFile.json", reqDataJsonStr.getBytes(StandardCharsets.UTF_8));
+ MultipartFile pstFile = FileUtil.createMutipartFile("pstFile.json", FILE_TEMP_PATH);
+
+ List pstFiles = new ArrayList<>();
+
+ pstFiles.add(pstFile);
+ if(ObjectUtils.isNotEmpty(reqDTO.getPstFile())) pstFiles.add(reqDTO.getPstFile());
+
+
+ final Map headerMap = new HashMap<>();
+ headerMap.put(HttpHeaders.CONTENT_TYPE, MediaType.TEXT_PLAIN_VALUE);
+// headerMap.put(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE);
+// headerMap.put("client-id", "client-id");
+// headerMap.put("client-tp", "10");
+// headerMap.put(HttpHeaders.AUTHORIZATION, String.format("%s %s", AUTH_TYPE_BEARER, "access-token"));
+
+
+ return webClient.exchangeFile(
+ HOST + ACCEPT,
+ HttpMethod.POST,
+ pstFiles,
+ "pstFile.json",
+ PpCommonResponse.class,
+ headerMap
+ );
+
+/*
+ String reqJson = JsonUtils.toJson(reqDTO);
+ reqDTO.setSignguCode(null);
+ reqDTO.setFfnlgCode(null);
+ String reqJson2 = JsonUtils.toJson(reqDTO);
return null;
+
+ */
}
@Override
public PpStatusResponse status(PpStatusRequest reqDTO) {
return null;
}
+
+ private JSONObject makePpAcceptMstData(){
+ PpAcceptReqDataMst mst = PpAcceptReqDataMst.builder()
+ .build();
+ //CmmEnsUtils.validate(mst);
+ return JsonUtils.extractObjKeyValue(mst, "cols", "rows");
+ }
+ private JSONObject makePpAcceptDtlData(){
+ JSONArray arrJson = new JSONArray();
+ PpAcceptReqDataDtl dtl = PpAcceptReqDataDtl.builder()
+ .순번("1")
+ .이름("홍길동")
+ .우편번호("05048")
+ .주소("서울특별시 광진구 강변로역2")
+ .이미지갯수(1)
+ .build();
+
+ //CmmEnsUtils.validate(dtl);
+ JSONObject dtlJson = JsonUtils.toObjByObj(dtl, JSONObject.class);
+
+ // 가변인자 처리
+ for(int i=0; i<2; i++) {
+ JSONObject json = new JSONObject(dtlJson);
+ json.put("f1", "d1-"+i);
+ json.put("f2", "d2-"+i);
+ json.put("f3", "d3-"+i);
+
+ arrJson.add(json);
+ }
+ return JsonUtils.extractJsonArrayKeyValue(net.sf.json.JSONArray.fromObject(arrJson), "cols", "rows");
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/*
+ List dtls = new ArrayList<>();
+
+ PpAcceptReqDataDtl dtl = PpAcceptReqDataDtl.builder()
+ .순번("1")
+ .이름("홍길동")
+ .우편번호("05048")
+ .주소("서울특별시 광진구 강변로역2")
+ .이미지갯수(1)
+ .build();
+ dtls.add(dtl);
+ dtls.add(dtl);
+
+ JSONObject dtlJson = JsonUtils.extractJsonArrayKeyValue(net.sf.json.JSONArray.fromObject(dtls), "cols", "rows");
+
+ JSONArray arrDtlColsJson = (JSONArray)dtlJson.get("cols");
+ JSONArray tmpArr = new JSONArray();
+ tmpArr.add("f1");
+ tmpArr.add("f2");
+ tmpArr.add("f3");
+ arrDtlColsJson.addAll(tmpArr);
+
+ JSONArray arrDtlRowsJson = (JSONArray)dtlJson.get("rows");
+ for(int i=0; i accept(@ModelAttribute final PpAcceptRequest paramDTO) {
diff --git a/mens-api/src/main/resources/config/application-local.yml b/mens-api/src/main/resources/config/application-local.yml
index b937f0f..28fc92d 100644
--- a/mens-api/src/main/resources/config/application-local.yml
+++ b/mens-api/src/main/resources/config/application-local.yml
@@ -72,7 +72,8 @@ app:
url: 'http://localhost:${server.port}${server.servlet.context-path:}/'
data:
root:
- path: /Users/minuk/data
+ #path: /Users/minuk/data
+ path: d:/data
#---------------------------------------------------------------
# log 설정
diff --git a/mens-api/src/main/resources/config/application.yml b/mens-api/src/main/resources/config/application.yml
index 9e1bead..b59ee19 100644
--- a/mens-api/src/main/resources/config/application.yml
+++ b/mens-api/src/main/resources/config/application.yml
@@ -83,6 +83,7 @@ logging:
file:
cmm:
+ temp-path: ${app.data.root.path}/temp
upload:
root: ${app.data.root.path}
# root: /data
diff --git a/mens-api/src/main/resources/static/pstFile.html b/mens-api/src/main/resources/static/pstFile.html
index 9917571..6aab684 100644
--- a/mens-api/src/main/resources/static/pstFile.html
+++ b/mens-api/src/main/resources/static/pstFile.html
@@ -55,7 +55,7 @@
detail.cols = detailCols;
var detailRows = new Array();
- var detailRowsArr1 = ['1','홍길동1','31010','서울특별시 광진구 강변역로2','서울광진우체국 B동 1층','01012341234','pstFile.pdf','24926737','2021-09-02','대출(고정)','31,000,000'];
+ var detailRowsArr1 = ['1',['홍길동1','lll'],'31010','서울특별시 광진구 강변역로2','서울광진우체국 B동 1층','01012341234','pstFile.pdf','24926737','2021-09-02','대출(고정)','31,000,000'];
detailRows.push(detailRowsArr1);
var detailRowsArr2 = ['2','홍길동2','08394','서울특별시 광진구 강변역로2','서울광진우체국 B동 2층','01012341234','pstFile.pdf','25685047','2021-09-02','대출B(변동)','421,000,000'];
detailRows.push(detailRowsArr2);
@@ -73,16 +73,18 @@
var formData = new FormData();
+ formData.append("signguCode", "88328");
+ formData.append("ffnlgCode", "11");
formData.append("apiKey", "PnvGWlH0X55ZyEqIEyJIJpKAf26xIcY11/UYgMehuhlR8+8yfV01S2Qjr7d/f0FMhVhdeJGg/KChN2sjb/Rg==");
- formData.append('pstFile', new Blob([pstMsr], {type : "application/json"}));
+ formData.append('pstFile', new File([new Blob([pstMsr], {type : "application/json"})], "pstFile", {type : "application/json"}));
var files = $("input[name=attchFile]")[0].files;
formData.append("pstFile", files[0]);
$.ajax({
- url: 'https://t.postplus.co.kr/po/api/postplusPstMsrApi.do',
- //url: '/api/ens/pplus/v1/accept',
+ //url: 'https://t.postplus.co.kr/po/api/postplusPstMsrApi.do',
+ url: '/api/ens/pplus/v1/accept',
data: formData,
cache: false,
contentType: false,
@@ -91,9 +93,11 @@
type: 'POST',
success: function(data) {
console.log(data);
+ alert(JSON.stringify(data));
},
error: function(e) {
console.log(e);
+ alert(JSON.stringify(e));
}
});
}