package com.urpsys.itmsbatch.cmm.excute;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.PersistJobDataAfterExecution;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
import com.urpsys.basebatch.common.util.CommonUtil;
import com.urpsys.basebatch.common.util.ConvertUtils;
import com.urpsys.basebatch.common.util.HtmlEmailUtil;
import com.urpsys.basebatch.common.util.RestApiCallUtil;
import com.urpsys.itmsbatch.cmm.dao.MailKaTalkDao;
import com.urpsys.itmsbatch.cmm.service.MailKaTalkService;
import kong.unirest.json.JSONObject;
import lombok.extern.slf4j.Slf4j;
/**
* KIC(한국투자공사) 메일/카톡 처리 실행 클래스
*
* @author urp 인프라본부 나혁제
* @since 2025.06.11
* @version 1.0.0
* @see
*
*
*
* << 개정이력(Modification information) >>
*
* 수정일 수정자 수정내용
* ----------- --------- ------------------------
* 2025.06.11 나혁제 최초작성
*
*
*/
@Slf4j
@Component
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class MailKaTalkSendKiccJob2 implements Job
{
@Autowired
MailKaTalkService mailKaTalkService;
@Autowired
HtmlEmailUtil htmlEmailUtil;
@Autowired
RestApiCallUtil restApiCallUtil;
@Value("${custom.api_kic_msg_key}")
private String strApiKicMsgKey; // KIC 메신저서버 api key
@Override
public void execute(JobExecutionContext context) throws JobExecutionException
{
log.info(" >>>>>>>>>> MailKaTalkSendKiccJob Executed <<<<<<<<<< ");
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
log.info("dataMap date : {}", dataMap.get("date"));
log.info("dataMap executeCount : {}", dataMap.get("executeCount"));
// 전송메일 대상 조회
List> listNctn = mailKaTalkService.selectNctnProcSndInfo();
for(LinkedHashMap tempMap : listNctn)
{
String strProcRsltCn = "";
String strProcRsltCd = "";
// 메일 처리
if(tempMap.get("procTy").equals("1"))
{
Map bodyMap = new HashMap();
String strMailAddress = CommonUtil.nvl(tempMap.get("rcvrAddr"));
// 2025.07.01 나혁제 자기 메일로 처리
// bodyMap.put("email" , "hong@kic.go.kr");
bodyMap.put("email" , CommonUtil.nvl(tempMap.get("rcvrAddr")) );
bodyMap.put("to" , CommonUtil.nvl(tempMap.get("rcvrAddr")) );
bodyMap.put("subject" , CommonUtil.nvl(tempMap.get("ttl")) );
bodyMap.put("content" , CommonUtil.nvl(tempMap.get("bdy")) );
// bodyMap.put("content" , "itms 메일테스트 입니다. 메일 삭제해주세요." );
bodyMap.put("contentType" , "text/html" );
try
{
// 메일주소가 없는경우 오류 처리
if(strMailAddress.equals(""))
{
strProcRsltCn = "메일주소 존재하지 않음";
strProcRsltCd = "-1";
}
else
{
// Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/test/kicMailTest.do");
Map retMap = restApiCallUtil.RestApiCallNoAuthKicMailTextHtml(bodyMap, "/api/mail/send/json");
strProcRsltCn = retMap.toString();
strProcRsltCd = "0";
}
}
catch(Exception e)
{
e.printStackTrace();
strProcRsltCn = e.toString();
strProcRsltCd = "-2";
}
}
// 메신저 처리
else if(tempMap.get("procTy").equals("3"))
{
String strTtl = CommonUtil.nvl(tempMap.get("ttl"));
String strRcvrAddr = CommonUtil.nvl(tempMap.get("rcvrAddr"));
String strBdy = CommonUtil.nvl(tempMap.get("bdy"));
String[] srBdy = strBdy.split(",");
try
{
/*
Map messageMap = new HashMap();
messageMap.put("\""+"title" +"\"" , "\""+strTtl+"\"" );
messageMap.put("\""+"context" +"\"" , "\""+srBdy[0]+"\"" );
Map messageFuncMap = new HashMap();
messageFuncMap.put("\""+"name" +"\"", "\""+"상세페이지로이동"+"\"" );
messageFuncMap.put("\""+"type" +"\"", "\""+"link" +"\"" );
messageFuncMap.put("\""+"data" +"\"", "\""+srBdy[1] +"\"" );
messageMap.put("\""+"func"+"\"", messageFuncMap);
*/
// JSONParser parser = new JSONParser();
/*
Map messageMap = new HashMap();
messageMap.put("title" , strTtl );
messageMap.put("context" , srBdy[0] );
Map messageFuncMap = new HashMap();
messageFuncMap.put("name" , "상세페이지로이동" );
messageFuncMap.put("type" , "link" );
messageFuncMap.put("data" , srBdy[1] );
messageMap.put("func", messageFuncMap);
StringBuilder strBulider = new StringBuilder(1000);
strBulider.append("\"");
strBulider.append(messageMap.toString().replaceAll("\"", "\\\""));
strBulider.append("\"");
*/
// 변환처리
// JSONObject jsonObj = ConvertUtils.getJsonFromMap(messageMap);
Map bodyMap = new HashMap();
List