package itn.let.schdlr.service.impl; import java.io.File; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.jsoup.Jsoup; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import egovframework.rte.fdl.idgnr.EgovIdGnrService; import itn.com.cmm.EgovMultiPartEmail; import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.impl.FileManageDAO; import itn.let.fax.user.service.impl.FaxDAO; import itn.let.kakao.user.kakaoAt.service.KakaoAlimTalkService; import itn.let.mjo.msgdata.service.MjonMsgDataService; import itn.let.mjo.pay.service.MjonPayService; import itn.let.mjo.pay.service.StVcVO; import itn.let.mjo.payva.service.VacsAhstService; import itn.let.mjo.payva.service.VacsAhstVO; import itn.let.schdlr.service.SchdlrManageService; import itn.let.schdlr.service.SchdlrVO; @Service("SchdlrManageService") public class SchdlrManageServiceImpl extends EgovAbstractServiceImpl implements SchdlrManageService { @Resource(name = "egovItsmSchdlrGnrService") private EgovIdGnrService idgenSchdlrId; @Resource(name = "egovItsmSchdlrConfigGnrService") private EgovIdGnrService idgenSchCfgId; @Resource(name = "egovItsmSchdlrShareIdGnrService") private EgovIdGnrService idgenSchdlrShareId; @Resource(name="SchdlrManageDAO") private SchdlrManageDAO schdlrManageDAO; @Resource(name = "FileManageDAO") private FileManageDAO fileMngDAO; @Resource(name="EgovFileMngService") private EgovFileMngService fileMngService; @Resource(name = "egovMultiPartEmail") private EgovMultiPartEmail egovMultiPartEmail; @Value("#{globalSettings['Globals.mailContentFileFolder']}") private String MAIL_CONTENT_PATH; @Value("#{globalSettings['Globals.HOMPAGE_URL']}") private String HOMPAGE_URL; //문자온 카카오 알림톡 발송 서비스 @Resource(name = "kakaoAlimTalkService") private KakaoAlimTalkService kakaoAlimTalkService; //문자온 문자 발송 서비스 @Resource(name = "MjonMsgDataService") private MjonMsgDataService mjonMsgDataService; //세틀뱅크 입금전문 서비스 @Resource(name = "vacsAhstService") private VacsAhstService vacsAhstService; //문자온 결제 서비스 @Resource(name = "mjonPayService") private MjonPayService mjonPayService; @Resource(name = "faxDAO") public FaxDAO faxDao; private static final Logger LOGGER = LoggerFactory.getLogger(SchdlrManageServiceImpl.class); // 스케줄달력 목록(월별) public List selectSchdlrList(SchdlrVO schdlrVO) throws Exception { return schdlrManageDAO.selectSchdlrList(schdlrVO); } // 스케줄 등록 public void schdlrInsert(SchdlrVO schdlrVO) throws Exception { schdlrVO.setSchdlrId(idgenSchdlrId.getNextStringId()); // 신규 키 schdlrManageDAO.schdlrInsert(schdlrVO); // 등록 if(schdlrVO.getSchdlrUserId() != null && schdlrVO.getSchdlrUserId().length() != 0) { String userId[] = schdlrVO.getSchdlrUserId().split(","); String userName[] = schdlrVO.getSchdlrUserName().split(","); for(int i=0; i selectSchdlrShare(SchdlrVO schdlrVO) throws Exception { return schdlrManageDAO.selectSchdlrShare(schdlrVO); } // 일정 목록 조회 public List selectSchList(SchdlrVO schdlrVO) throws Exception { return schdlrManageDAO.selectSchList(schdlrVO); } // 환경설정 등록 public void insertSchConfig(SchdlrVO schdlrVO) throws Exception { schdlrVO.setSchdlrCfgId(idgenSchCfgId.getNextStringId()); // 신규 키 schdlrManageDAO.insertSchConfig(schdlrVO); // 등록 } // 환경설정 수정 public void updateSchConfig(SchdlrVO schdlrVO) throws Exception { schdlrManageDAO.updateSchConfig(schdlrVO); } // 환경설정 상세 조회 public SchdlrVO selectSchConfigDetail(SchdlrVO schdlrVO) throws Exception { SchdlrVO result = schdlrManageDAO.selectSchConfigDetail(schdlrVO); if (result == null) { // 첫 조회시 기본값 등록 result = new SchdlrVO(); result.setSchdlrCfgId(idgenSchCfgId.getNextStringId()); result.setSchdlrCfgUserId(schdlrVO.getSchdlrCfgUserId()); result.setSchdlrOpenCd("01"); result.setSchdlrWeekBgnCd("01"); result.setSchdlrTimeCd("01"); result.setSchdlrColorUserCd("01"); result.setSchdlrColorShareCd("02"); result.setSchdlrColorPerCd("03"); schdlrManageDAO.insertSchConfig(result); } return result; } // 일정 알림 메일 전송 public void schMailSend(String bgnDateTime) throws Exception { List mailList = schdlrManageDAO.selectMailSendList(bgnDateTime); for (SchdlrVO vo : mailList) { if (("").equals(vo.getEmailAdres())) continue; boolean result = sendMail(vo); LOGGER.debug("send succ update:", result); if (result) schdlrManageDAO.updateMailSend(vo); } } /** * 일정 알림 메일 전송 * @param SchdlrVO schdlrVO * @return boolean * @throws Exception */ private boolean sendMail(SchdlrVO schdlrVO) throws Exception { boolean result = false; try { String mailSj = "["+schdlrVO.getSchdlrTitle()+"] N-CMS 스케줄러 일정 메일 알림입니다."; String alram = ""; // // 알림설정 표시 // if (Pattern.matches("^[0-9]*$", schdlrVO.getSchdlrAlarmCnd())) { // alram = schdlrVO.getSchdlrAlarmCnd() + " 분전"; // } else if (schdlrVO.getSchdlrAlarmCnd().equals("etc")) { // alram = schdlrVO.getSchdlrAlarmDatetime(); // } switch(schdlrVO.getSchdlrAlarmCnd()) { case "0" : alram = "정시"; break; case "10" : alram = "십분 전"; break; case "30" : alram = "삼십분 전"; break; case "60" : alram = "한시간 전"; break; case "etc" : alram = schdlrVO.getSchdlrAlarmDatetime(); break; } String mailContent = Jsoup.parse(new File(MAIL_CONTENT_PATH + "/direct/mail_template/sch_alrm_cont.html"), "UTF-8").toString(); mailContent = mailContent.replace("#일정명", schdlrVO.getSchdlrTitle()); mailContent = mailContent.replace("#일시", schdlrVO.getSchdlrBgnDatetime() + " ~ " + schdlrVO.getSchdlrEndDatetime()); mailContent = mailContent.replace("#장소", schdlrVO.getSchdlrPlace()); mailContent = mailContent.replace("#내용", schdlrVO.getSchdlrCn().replaceAll("(\r\n|\r|\n|\n\r)", "
")); mailContent = mailContent.replace("#알림설정", alram); String resultMsg = egovMultiPartEmail.send(schdlrVO.getEmailAdres(), mailSj, "", mailContent); // egovMultiPartEmail.send(mailAddres, mailSj", mgs); // Simple Text Mail method result = true; LOGGER.debug("mail send resultMsg: ", resultMsg); } catch (Exception ex) { LOGGER.error("Sending Mail Exception : {} [unknown Exception]", ex.getCause()); //LOGGER.error(ex.getMessage()); } return result; } // 메인화면 > 전체일정 public List selectMainSchList(SchdlrVO schdlrVO) throws Exception { return schdlrManageDAO.selectMainSchList(schdlrVO); } //문자온 문자발송 실패 건수 환불 배치(1주 대상) public void msgFailPayBack() throws Exception{ Date now = new Date(); System.out.println("문자온 실패 건수 환불 스케줄러 실행!!!(1weeks)" + now); /* * 문자발송 실패 건수 확인 및 캐시 환불 처리 * */ mjonMsgDataService.selectMsgSentFailList(); /* * 세틀뱅크 입금 확인 및 캐시 충전 배치 프로세스 * */ /*VacsAhstVO vacsAhstVO = new VacsAhstVO(); List resultBeforCashList = vacsAhstService.selectBeforCashList(vacsAhstVO); if(resultBeforCashList != null) { for(VacsAhstVO temp : resultBeforCashList) { StVcVO stvcVO = new StVcVO(); stvcVO.setOrgCd(temp.getOrgCd()); stvcVO.setBankCd(temp.getBankCd()); stvcVO.setIacctNo(temp.getIacctNo()); stvcVO.setTrNo(temp.getTrNo()); stvcVO.setTrIl(temp.getTrIl()); stvcVO.setTrAmt(temp.getTrAmt()); stvcVO.setIacctNm(temp.getIacctNm()); stvcVO.setMberId(temp.getMberId()); //세틀뱅크 입금 내역 자동 충전하기 mjonPayService.insertVcCharge(stvcVO); //세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기 vacsAhstService.updateVacsAhstCashComplete(temp); } }*/ } //문자온 문자발송 실패 건수 환불 배치(31일) public void msgFailPayBackOneByDay() throws Exception{ Date now = new Date(); System.out.println("문자온 실패 건수 환불 스케줄러 실행!!!(31days)" + now); /* * 문자발송 실패 건수 확인 및 캐시 환불 처리 * */ mjonMsgDataService.selectMsgSentFailListOneByDay(); } // 팩스 발송 실패 건수 환불 배치 public void faxFailPayBack() throws Exception{ System.out.println("팩스 실패 건수 환불 스케줄러 실행!!!" + new Date()); // 팩스 발송 실패 건수 확인 및 캐시 환불 처리 faxDao.selectFaxSentFailList(); } //전용계좌 자동 충전 배치 public void vacsAutoCharge() throws Exception{ Date now = new Date(); System.out.println("문자온 전용계좌 자동 충전 스케줄러 실행 !!!" + now); /* * 문자발송 실패 건수 확인 및 캐시 환불 처리 * */ //mjonMsgDataService.selectMsgSentFailList(); /* * 세틀뱅크 입금 확인 및 캐시 충전 배치 프로세스 * */ VacsAhstVO vacsAhstVO = new VacsAhstVO(); List resultBeforCashList = vacsAhstService.selectBeforCashList(vacsAhstVO); if(resultBeforCashList != null) { for(VacsAhstVO temp : resultBeforCashList) { StVcVO stvcVO = new StVcVO(); stvcVO.setOrgCd(temp.getOrgCd()); stvcVO.setBankCd(temp.getBankCd()); stvcVO.setIacctNo(temp.getIacctNo()); stvcVO.setTrNo(temp.getTrNo()); stvcVO.setTrIl(temp.getTrIl()); stvcVO.setTrAmt(temp.getTrAmt()); stvcVO.setIacctNm(temp.getIacctNm()); stvcVO.setMberId(temp.getMberId()); //세틀뱅크 입금 내역 자동 충전하기 mjonPayService.insertVcCharge(stvcVO); //세틀뱅크 입금 내역 원장에 처리 완료 내용 입력해 주기 vacsAhstService.updateVacsAhstCashComplete(temp); } } } //카카오 환불 처리 리스트 public void kakaoFailPayBack() throws Exception { kakaoAlimTalkService.selectKakaoAtSentRefundList(); } }