From f02327d93d50aacabe9cdce7d983a9105d99cc8b Mon Sep 17 00:00:00 2001 From: chpark Date: Tue, 24 Feb 2026 19:00:51 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B2=B0=EC=9E=AC=20=EC=98=A4=EB=A5=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/pms/mapper/approval.xml | 6 +--- src/com/pms/service/ApprovalService.java | 41 +++++++++++++++--------- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/com/pms/mapper/approval.xml b/src/com/pms/mapper/approval.xml index 667ec60..2a2d6b4 100644 --- a/src/com/pms/mapper/approval.xml +++ b/src/com/pms/mapper/approval.xml @@ -643,15 +643,11 @@ ) - + UPDATE AMARANTH_APPROVAL SET - APPRO_KEY = #{approKey}, APPROVAL_TITLE = #{approvalTitle}, WRITER = #{writer}, - STATUS = 'create', - AMARANTH_DOC_ID = NULL, - DOC_STS = '0', UPDATE_DATE = NOW() WHERE TARGET_OBJID = #{targetObjId} AND TARGET_TYPE = #{targetType} diff --git a/src/com/pms/service/ApprovalService.java b/src/com/pms/service/ApprovalService.java index 0f1ce97..8eea2ae 100644 --- a/src/com/pms/service/ApprovalService.java +++ b/src/com/pms/service/ApprovalService.java @@ -1809,14 +1809,30 @@ public class ApprovalService { String compSeq = CommonUtils.checkNull(paramMap.get("compSeq"), "1000"); String deptSeq = CommonUtils.checkNull(paramMap.get("deptSeq")); - // approKey 생성: "UB_" + UUID (외부시스템과 결재문서 매핑 키) - String approKey = "UB_" + java.util.UUID.randomUUID().toString(); + // DB에서 기존 매핑 조회 → 있으면 approKey 재사용, 없으면 신규 생성 + sqlSession = SqlMapConfig.getInstance().getSqlSession(false); + Map mappingParam = new HashMap(); + mappingParam.put("targetType", targetType); + mappingParam.put("targetObjId", targetObjId); + + Map existing = sqlSession.selectOne("approval.selectAmaranthApprovalByTarget", mappingParam); + existing = existing != null ? CommonUtils.toUpperCaseMapKey(existing) : null; + + String approKey; + boolean isNewRecord; + if(existing != null){ + approKey = CommonUtils.checkNull(existing.get("APPRO_KEY")); + isNewRecord = false; + System.out.println("=== 기존 approKey 재사용: " + approKey + " ==="); + } else { + approKey = "UB_" + java.util.UUID.randomUUID().toString(); + isNewRecord = true; + System.out.println("=== 신규 approKey 생성: " + approKey + " ==="); + } - System.out.println("=== Amaranth SSO URL 생성 ==="); System.out.println("empSeq: " + empSeq + ", loginId: " + loginId); System.out.println("targetType: " + targetType + ", targetObjId: " + targetObjId); System.out.println("outProcessCode: " + outProcessCode + ", formId: " + formId); - System.out.println("approKey: " + approKey); // API 클라이언트 생성 com.pms.api.AmaranthApprovalApiClient apiClient = new com.pms.api.AmaranthApprovalApiClient(); @@ -1830,7 +1846,7 @@ public class ApprovalService { fileEx.printStackTrace(); } - // SSO URL 생성 API 호출 + // SSO URL 생성 API 호출 (기존/신규 동일한 approKey 사용) String apiResponse = apiClient.getSsoUrl( AMARANTH_BASE_URL, empSeq, outProcessCode, formId, approKey, approvalTitle, "W", compSeq, deptSeq, loginId, fileListEncoded @@ -1843,22 +1859,17 @@ public class ApprovalService { String resultCode = extractJsonStringValue(apiResponse, "resultCode"); if("0".equals(resultCode) && !fullUrl.isEmpty()){ - // approKey → targetObjId 매핑: 기존 건 있으면 UPDATE, 없으면 INSERT - sqlSession = SqlMapConfig.getInstance().getSqlSession(false); - Map mappingParam = new HashMap(); + // 신규면 INSERT, 기존이면 UPDATE (제목/작성자만 갱신) mappingParam.put("approKey", approKey); - mappingParam.put("targetType", targetType); - mappingParam.put("targetObjId", targetObjId); mappingParam.put("approvalTitle", approvalTitle); mappingParam.put("writer", loginId); - Map existing = sqlSession.selectOne("approval.selectAmaranthApprovalByTarget", mappingParam); - if(existing != null){ - sqlSession.update("approval.updateAmaranthApprovalResubmit", mappingParam); - System.out.println("Amaranth 결재 매핑 UPDATE - approKey: " + approKey); - } else { + if(isNewRecord){ sqlSession.insert("approval.insertAmaranthApproval", mappingParam); System.out.println("Amaranth 결재 매핑 INSERT - approKey: " + approKey); + } else { + sqlSession.update("approval.updateAmaranthApprovalResubmit", mappingParam); + System.out.println("Amaranth 결재 매핑 UPDATE - approKey: " + approKey); } sqlSession.commit();