package egovframework.com.cop.ems.service.impl; import java.io.File; import java.util.List; import egovframework.com.cmm.service.EgovFileMngService; import egovframework.com.cmm.service.FileVO; import egovframework.com.cmm.service.Globals; import egovframework.com.cop.ems.service.AtchmnFileVO; import egovframework.com.cop.ems.service.EgovSndngMailRegistService; import egovframework.com.cop.ems.service.EgovSndngMailService; import egovframework.com.cop.ems.service.SndngMailVO; import egovframework.com.utl.sim.service.EgovXMLDoc; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import javax.annotation.Resource; import noNamespace.SndngMailDocument; import org.springframework.stereotype.Service; @Service("sndngMailRegistService") public class EgovSndngMailRegistServiceImpl extends EgovAbstractServiceImpl implements EgovSndngMailRegistService { /** SndngMailRegistDAO */ @Resource(name = "sndngMailRegistDAO") private SndngMailRegistDAO sndngMailRegistDAO; /** Message ID Generation */ @Resource(name = "egovMailMsgIdGnrService") private EgovIdGnrService egovMailMsgIdGnrService; @Resource(name = "egovSndngMailService") private EgovSndngMailService egovSndngMailService; @Resource(name = "EgovFileMngService") private EgovFileMngService fileService; @Override public boolean insertSndngMail(SndngMailVO vo) throws Exception { String recptnPersons = vo.getRecptnPerson().replaceAll(" ", ""); String[] recptnPersonList = recptnPersons.split(";"); for (int j = 0; j < recptnPersonList.length; j++) { // 1-0.메세지ID를 생성한다. String mssageId = egovMailMsgIdGnrService.getNextStringId(); // 1-1.발송메일 데이터를 만든다. SndngMailVO mailVO = new SndngMailVO(); mailVO.setMssageId(mssageId); mailVO.setDsptchPerson(vo.getDsptchPerson()); mailVO.setRecptnPerson(recptnPersonList[j]); mailVO.setSj(vo.getSj()); //mailVO.setEmailCn(EgovStringUtil.checkHtmlView(vo.getEmailCn())); mailVO.setEmailCn(vo.getEmailCn()); mailVO.setSndngResultCode("R"); // 발송결과 요청 if (vo.getAtchFileId() == null || vo.getAtchFileId().equals("")) { mailVO.setAtchFileId(null); mailVO.setFileStreCours(null); mailVO.setOrignlFileNm(null); } else { FileVO fileVO = new FileVO(); fileVO.setAtchFileId(vo.getAtchFileId()); fileVO.setFileSn("0"); FileVO fvo = fileService.selectFileInf(fileVO); File uFile = new File(fvo.getFileStreCours(), fvo.getStreFileNm()); mailVO.setAtchFileId(vo.getAtchFileId()); mailVO.setFileStreCours(uFile.getPath()); mailVO.setOrignlFileNm(vo.getOrignlFileNm()); } // 1-3.발송메일을 등록한다. sndngMailRegistDAO.insertSndngMail(mailVO); // 1-4.메일을 발송한다. boolean sendingMailResult = egovSndngMailService.sndngMail(mailVO); if (!sendingMailResult) { mailVO.setSndngResultCode("F"); // 발송결과 실패 sndngMailRegistDAO.updateSndngMail(mailVO); // 발송상태를 DB에 업데이트 한다. return false; } // 1-5.발송메일 요청XML 파일을 생성한다. trnsmitXmlData(mailVO); } return true; } @Override public boolean trnsmitXmlData(SndngMailVO vo) throws Exception { // 1. 첨부파일 목록 (원파일명, 저장파일명) String orignlFileList = ""; String streFileList = ""; List atchmnFileList = sndngMailRegistDAO.selectAtchmnFileList(vo); for (int i = 0; i < atchmnFileList.size(); i++) { AtchmnFileVO fileVO = (AtchmnFileVO) atchmnFileList.get(i); String orignlFile = fileVO.getOrignlFileNm(); String streFile = fileVO.getFileStreCours() + fileVO.getStreFileNm(); orignlFileList += orignlFile + ";"; streFileList += streFile + ";"; } // 2. XML데이터를 만든다. SndngMailDocument mailDoc; SndngMailDocument.SndngMail mailElement; mailDoc = SndngMailDocument.Factory.newInstance(); mailElement = mailDoc.addNewSndngMail(); mailElement.setMssageId(vo.getMssageId()); mailElement.setDsptchPerson(vo.getDsptchPerson()); mailElement.setRecptnPerson(vo.getRecptnPerson()); mailElement.setSj(vo.getSj()); mailElement.setEmailCn(vo.getEmailCn()); mailElement.setSndngResultCode(vo.getSndngResultCode()); mailElement.setOrignlFileList(orignlFileList); mailElement.setStreFileList(streFileList); // 2. XML파일로 저장한다. String xmlFile = Globals.MAIL_REQUEST_PATH + vo.getMssageId() + ".xml"; boolean result = EgovXMLDoc.getClassToXML(mailDoc, xmlFile); if (result == true) { recptnXmlData(xmlFile); } return result; } @Override public boolean recptnXmlData(String xmlFile) throws Exception { // 1. XML파일에서 발송결과코드를 가져온다. SndngMailDocument mailDoc = EgovXMLDoc.getXMLToClass(xmlFile); SndngMailDocument.SndngMail mailElement = mailDoc.getSndngMail(); SndngMailVO sndngMailVO = new SndngMailVO(); sndngMailVO.setMssageId(mailElement.getMssageId()); sndngMailVO.setSndngResultCode("C"); // 발송결과 완료 // 2. DB에 업데이트 한다. sndngMailRegistDAO.updateSndngMail(sndngMailVO); return true; } }