/**
* @brief 정산 > 사용처리대사 > 엑셀 자료 업로드
* <pre>POST - /api/v2/calc/crosscheck/channelused/save</pre>
*
* @param request
* @return
* @throws IOException
* @throws ServletException
*/
@RequestMapping(method = RequestMethod.POST, value="/api/v2/calc/crosscheck/channelused/save", headers={"Accept=application/json,application/xml"}, produces={"application/json","application/xml"})
public ResponseEntity<ReturnResource> saveCrossCheckChannelUsed(final HttpServletRequest request
, @RequestBody JSONObject params
) throws TcmException, IOException, ServletException{
logger.debug(markerParam, "/api/v2/calc/crosscheck/channelused/save POST : saveCrossCheckChannelUsed with params[{}]", params.toJSONString());
ReturnResource resource = new ReturnResource();
try{
final Claims claims = (Claims) request.getAttribute("claims");
if (!TokenUtils.isSystemAdmin(claims) && !TokenUtils.isCompAgentMaster(claims) && !TokenUtils.isSiteAgent(claims)) {
resource.setCode("9010");
resource.setMessage("권한이 없습니다.");
return new ResponseEntity<ReturnResource>(resource, HttpStatus.OK);
}
// {{ 필수 조건
if (params.get("channel_seq") == null || "".equals(params.get("channel_seq"))) {
resource.setInit();
resource.setCode("9090");
resource.setMessage("필수 입력 값이 없습니다.[channel_seq]");
return new ResponseEntity<ReturnResource>(resource, HttpStatus.OK);
}
else if (params.get("client_comp_seq") == null || "".equals(params.get("client_comp_seq"))) {
resource.setInit();
resource.setCode("9090");
resource.setMessage("필수 입력 값이 없습니다.[client_comp_seq]");
return new ResponseEntity<ReturnResource>(resource, HttpStatus.OK);
}
// }} 필수 조건
String userAuth = claims.get("user_auth").toString();
logger.info(markerParam, "/api/v2/calc/crosscheck/channelused/save userAuth : {}", userAuth);
params.put("log_ip", LogUtil.getClientIP(request));
params.put("user_comp_seq", claims.get("comp_seq").toString());
params.put("user_seq", claims.get("user_seq").toString());
JSONObject jobject = new JSONObject();
JSONParser jparser = new JSONParser();
jobject = (JSONObject) jparser.parse(params.toJSONString());
JSONObject result = calculateService.saveCrossCheckChannelUsed(jobject);
if ("0000".equals(result.get("code"))) {
resource.setCode(result.get("code").toString());
}
else {
resource.setCode(result.get("code").toString());
resource.setMessage(result.get("message").toString());
}
return new ResponseEntity<ReturnResource>(resource, HttpStatus.OK);
}
catch(final SignatureException e) {
resource.setCode("9999");
resource.setMessage(e.getMessage());
return new ResponseEntity<ReturnResource>(resource, HttpStatus.INTERNAL_SERVER_ERROR);
}
catch(final Exception e) {
resource.setCode("9999");
resource.setMessage(e.getMessage());
return new ResponseEntity<ReturnResource>(resource, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
java.util.ArrayList cannot be cast to org.json.simple.JSONArray
java admin 프로젝트와 api 프로젝트간에 데이터를 바인딩하는 과정에서 위와 같은 오류가 발생한다.
구글로 찾아보니 JSONParser 를 사용해서 Casting을 하면 된다고 하는데 문제는 이 parser를 어떻게 써야하는지 모르는 상황이고 어디에서 어떻게 변환해줘야하는지 몰라서....헤메고 있었다.
해결 방법은 params 를 갖고 오는데 그 params를 JSONObject 로 변환을 해서 그 변환된 값을 변수에 담아 Controle 단에서 service 단으로 넘겨주는 주는 방식으로 사용하면 된다.
헝헝 ㅠㅠㅠ 백단은 어렵다.......