아마란스 결재 반영영

This commit is contained in:
2026-02-23 17:27:51 +09:00
parent 34b233c7a2
commit 0a6ca61a12
8 changed files with 428 additions and 40 deletions

View File

@@ -31,7 +31,7 @@ public class AmaranthApprovalApiClient {
private static final String ACCESS_TOKEN = "MN5KzKBWRAa92BPxDlRLl3GcsxeZXc";
private static final String HASH_KEY = "22519103205540290721741689643674301018832465";
private static final String GROUP_SEQ = "gcmsAmaranth40578";
private static final String AES_KEY = "gcmsAmaranth40578"; // SSO 암호화 키
private static final String AES_KEY = "8441e27489d402cd"; // SSO 암호화 키 (API상품연동설정에서 확인)
/**
* 인증 토큰 발급
@@ -827,11 +827,13 @@ public class AmaranthApprovalApiClient {
* @param mod 작성/보기/삭제 구분 (W:작성, V:보기, D:삭제)
* @param compSeq 회사 시퀀스 (선택, 겸직별 결재 시 필요)
* @param deptSeq 부서 시퀀스 (선택, 겸직별 결재 시 필요)
* @param loginId 로그인 아이디 (appParams에 포함, 선택)
* @return API 응답 JSON (resultData.fullUrl 포함)
*/
public String getSsoUrl(String baseUrl, String empSeq, String outProcessCode,
String formId, String approKey, String subjectStr,
String mod, String compSeq, String deptSeq) throws Exception {
String mod, String compSeq, String deptSeq,
String loginId) throws Exception {
System.out.println("=== Amaranth SSO URL 생성 시작 ===");
System.out.println("empSeq: " + empSeq + ", outProcessCode: " + outProcessCode + ", formId: " + formId);
@@ -885,7 +887,7 @@ public class AmaranthApprovalApiClient {
// 요청 본문 구성
String requestBody = buildSsoRequestBody(empSeqEnc, outProcessCode, formId,
approKey, subjectStr, mod, compSeq, deptSeq);
approKey, subjectStr, mod, compSeq, deptSeq, loginId);
System.out.println("[2단계] SSO API 호출 - URL: " + fullUrl);
System.out.println("[2단계] Request Body: " + requestBody);
@@ -940,7 +942,8 @@ public class AmaranthApprovalApiClient {
private String buildSsoRequestBody(String empSeqEnc, String outProcessCode,
String formId, String approKey,
String subjectStr, String mod,
String compSeq, String deptSeq) {
String compSeq, String deptSeq,
String loginId) {
StringBuilder json = new StringBuilder();
json.append("{");
json.append("\"header\":{},");
@@ -965,6 +968,11 @@ public class AmaranthApprovalApiClient {
json.append("\"approKey\":\"").append(escapeJson(approKey)).append("\",");
json.append("\"mod\":\"").append(escapeJson(mod)).append("\"");
// loginId (가이드 예제에 따라 appParams에 포함)
if (loginId != null && !loginId.isEmpty()) {
json.append(",\"loginId\":\"").append(escapeJson(loginId)).append("\"");
}
// outProcessCode 또는 formId (둘 중 하나 필수)
if (outProcessCode != null && !outProcessCode.isEmpty()) {
json.append(",\"outProcessCode\":\"").append(escapeJson(outProcessCode)).append("\"");
@@ -978,6 +986,9 @@ public class AmaranthApprovalApiClient {
json.append(",\"subjectStr\":\"").append(escapeJson(subjectStr)).append("\"");
}
// 본문 인코딩 (UTF-8)
json.append(",\"contentsEnc\":\"U\"");
json.append("}"); // appParams 닫기
json.append("}"); // body 닫기
json.append("}"); // root 닫기