결재 에러 수정정

This commit is contained in:
2026-02-24 18:50:57 +09:00
parent 16d11f385f
commit b91981fb79
3 changed files with 35 additions and 15 deletions

View File

@@ -626,7 +626,15 @@
CREATE INDEX IF NOT EXISTS IDX_AMARANTH_APPROVAL_APPRO_KEY ON AMARANTH_APPROVAL(APPRO_KEY);
===================================================== -->
<!-- Amaranth 결재 매핑 등록 (SSO URL 생성 시) -->
<!-- TARGET_OBJID + TARGET_TYPE으로 기존 매핑 조회 -->
<select id="selectAmaranthApprovalByTarget" parameterType="map" resultType="map">
SELECT
OBJID, APPRO_KEY, TARGET_TYPE, TARGET_OBJID, STATUS
FROM AMARANTH_APPROVAL
WHERE TARGET_OBJID = #{targetObjId} AND TARGET_TYPE = #{targetType}
</select>
<!-- Amaranth 결재 매핑 등록 (최초) -->
<insert id="insertAmaranthApproval" parameterType="map">
INSERT INTO AMARANTH_APPROVAL (
APPRO_KEY, TARGET_TYPE, TARGET_OBJID, APPROVAL_TITLE, WRITER, STATUS, REGDATE
@@ -635,6 +643,19 @@
)
</insert>
<!-- 기존 매핑의 APPRO_KEY 갱신 (재상신 시) -->
<update id="updateAmaranthApprovalResubmit" parameterType="map">
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}
</update>
<!-- approKey로 Amaranth 결재 매핑 조회 -->
<select id="selectAmaranthApprovalByApproKey" parameterType="map" resultType="map">
SELECT

View File

@@ -4713,16 +4713,9 @@ ORDER BY V.PATH2
A.ROUTE_OBJID
FROM
SALES_REQUEST_MASTER SRM
LEFT OUTER JOIN (
SELECT AA.TARGET_OBJID, AA.STATUS AS AMARANTH_STATUS
FROM AMARANTH_APPROVAL AA
INNER JOIN (
SELECT TARGET_OBJID, MAX(OBJID) AS MAX_OBJID
FROM AMARANTH_APPROVAL
WHERE TARGET_TYPE = 'PROPOSAL'
GROUP BY TARGET_OBJID
) AA_MAX ON AA.OBJID = AA_MAX.MAX_OBJID
) AMR ON SRM.OBJID::VARCHAR = AMR.TARGET_OBJID
LEFT OUTER JOIN AMARANTH_APPROVAL AMR
ON SRM.OBJID::VARCHAR = AMR.TARGET_OBJID
AND AMR.TARGET_TYPE = 'PROPOSAL'
LEFT OUTER JOIN (
SELECT
B.OBJID AS ROUTE_OBJID,

View File

@@ -1843,7 +1843,7 @@ public class ApprovalService {
String resultCode = extractJsonStringValue(apiResponse, "resultCode");
if("0".equals(resultCode) && !fullUrl.isEmpty()){
// approKey → targetObjId 매핑을 DB에 저장 (콜백/컨텐츠 조회 시 사용)
// approKey → targetObjId 매핑: 기존 건 있으면 UPDATE, 없으면 INSERT
sqlSession = SqlMapConfig.getInstance().getSqlSession(false);
Map<String, Object> mappingParam = new HashMap();
mappingParam.put("approKey", approKey);
@@ -1851,10 +1851,16 @@ public class ApprovalService {
mappingParam.put("targetObjId", targetObjId);
mappingParam.put("approvalTitle", approvalTitle);
mappingParam.put("writer", loginId);
sqlSession.insert("approval.insertAmaranthApproval", mappingParam);
sqlSession.commit();
System.out.println("Amaranth 결재 매핑 DB 저장 완료 - approKey: " + approKey);
Map<String, Object> existing = sqlSession.selectOne("approval.selectAmaranthApprovalByTarget", mappingParam);
if(existing != null){
sqlSession.update("approval.updateAmaranthApprovalResubmit", mappingParam);
System.out.println("Amaranth 결재 매핑 UPDATE - approKey: " + approKey);
} else {
sqlSession.insert("approval.insertAmaranthApproval", mappingParam);
System.out.println("Amaranth 결재 매핑 INSERT - approKey: " + approKey);
}
sqlSession.commit();
StringBuilder result = new StringBuilder();
result.append("{\"resultCode\":0,\"resultMsg\":\"SUCCESS\",\"resultData\":{");