/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHRyStpMlSend
*	ソースファイル名		：JBSbatCHRyStpMlSend.java
*	作成者			：富士通　
*	作成日			：2020年08月18日
*＜機能概要＞
*　利用停止予告メール作成部品です。
*＜修正履歴＞
*	バージョン		修正日		修正者			修正内容
*	v50.00.00	2020/08/18  ジョバニー			ANK-3899-00-00 利用停止・強制解約予告メールのシステム化
*	v52.00.00	2021/01/13  GDC)ミコ			ANK-3985-00-00_督促メールのメールアドレス未取得者のDLリスト化およびマスタ変更
*	v66.00.00	2023/06/21	GDC)ml.alcantara	ANK-4415-00-00_口振請求及びWeb申込システム移行 STEP1
*	v66.00.01	2023/07/11	GDC)ml.alcantara	ANK-4415-00-00_口振請求及びWeb申込システム移行 STEP1
*	v71.00.00	2024/03/05	GDC)j.tagongtong	ANK-4468-00-00 _eo光ネット「シンプルプラン」追加対応
*   v71.00.01   2024/07/29  FJ)張               ANK-4468-00-01 _eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;

import java.util.HashMap;
import java.util.HashSet;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatCHLST094;
import eo.business.util.file.JBSbatKKIFE398;
import eo.business.util.file.JBSbatCHIFM355;
import eo.business.util.table.JBSbatCC_M_MAIL;
import eo.business.util.table.JBSbatCK_T_RRKS;
import eo.business.util.table.JBSbatKK_T_KOZA;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
 * 利用停止・強制解約予告メールのシステム化
 * @author j.hortilano
 *
 */
public class JBSbatCHRyStpMlSend extends JBSbatBusinessService{

	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";
	
	private static final String D_TBL_NAME_CC_M_MAIL = "CC_M_MAIL";
	
	// ANK-4468-00-00 ADD START
	private static final String D_TBL_CK_T_RRKS = "CK_T_RRKS";
	// ANK-4468-00-00 ADD END
	
	/** SQL定義キー(CH_SELECT_002)*/
	private static final String ZM_M_WORK_PARAM_KNRI_CH_SELECT_002 = "CH_SELECT_002";
	
	/** SQL定義キー(CH_SELECT_001)*/
	private static final String CC_M_MAIL_CH_SELECT_001 = "CH_SELECT_001";
	
	// ANK-4468-00-00 ADD START
	/** SQL定義キー(KK_SELECT_012)*/
	private static final String CK_T_RRKS_KK_SELECT_012 = "KK_SELECT_012";
	// ANK-4468-00-00 ADD END
	
	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	
	/** テーブルアクセスクラス(メール)*/
	private JBSbatSQLAccess db_CC_M_MAIL = null;
	
	// ANK-4468-00-00 ADD START
	/** テーブルアクセスクラス(連絡先) */
	private JBSbatSQLAccess db_CK_T_RRKS = null;
	// ANK-4468-00-00 ADD END
	
	private HashMap<String, HashMap<String, String>> mailMaps = new HashMap<String, HashMap<String, String>>();
	
	//ANK-4415-00-00 ADD START
	private HashMap<String, HashMap<String, String>> mailMaps2 = new HashMap<String, HashMap<String, String>>();
	
	private HashMap<String, String> logMaps = new HashMap<String, String>();
	//ANK-4415-00-00 ADD END
	private int dataCnt = 0;
	
	
	/** 退避.請求年月(当月) */
	private String seikyYm = null;
	
	private String eventYmd = null;
	
	//ANK-4415-00-00 ADD START
	private String eventYmdCP = null;
	//ANK-4415-00-00 ADD END
	private String termYmd = null;
	
	
	private final String MAIL_SEND_FLAG = "MAIL_SEND_FLAG";
	
	private final String CH_RTYK_MAIL_PTN = "CH_RTYK_MAIL_PTN"; 

	private final String NUMBER_ONE = "1";
	
	private final String HALF_WIDTH_WHITESPACE = " ";
	
	//ANK-4415-00-00 ADD START
	private final String SEIKY_NO = "SEIKY_NO";
	
	private final String SEIKY_KEI_NO = "SEIKY_KEI_NO";
	
	private final String ECHB0260CW = "ECHB0260CW";
	
	private final String ECHB1490AI = "ECHB1490AI";
	//ANK-4415-00-00 ADD END
	/** 対応記録タイトル（利用停止予告メール） */
	private final String TAIO_KIROK_TITLE_RTYK = "利用停止予告メール";
	/** 対応記録タイトル（強制解約予告メール） */
	private final String TAIO_KIROK_TITLE_KKYK = "強制解約予告メール";
	
	// ANK-3985-00-00 ADD START
	private int errCnt = 1;
 	// ANK-3985-00-00 ADD END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception {
		
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		
		db_CC_M_MAIL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL);
		
		// ANK-4468-00-00 ADD START
		db_CK_T_RRKS = new JBSbatSQLAccess(commonItem, D_TBL_CK_T_RRKS);
		// ANK-4468-00-00 ADD END
		
		// 請求収納業務共通クラス生成
		final JCHbatSeikyKaknoBusinessUtil schdlUtil = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		
		// 請求年月取得
		this.seikyYm = schdlUtil.getBillYmContain(super.opeDate, JACStrConst.EVENT_CD_PRC_CALC_DAY);
		
		// Event date
		this.eventYmd = schdlUtil.getEventYmd(this.seikyYm, JACStrConst.EVENT_CD_KOUZA_HURIKAE_YMD);
		
		//ANK-4415-00-00 ADD START
		//口座振替日CP
		this.eventYmdCP = schdlUtil.getEventYmd(this.seikyYm, JACStrConst.EVENT_CD_KOUZA_HURIKAE_YMD_CP);
		//ANK-4415-00-00 ADD END
		// Terminal date
		this.termYmd = schdlUtil.getEventYmd(this.seikyYm, JACStrConst.EVENT_CD_USE_STOP_YMD);
		
		schdlUtil.close();
		
		
		JBSbatCommonDBInterface outDbZM_M_WORK_PARAM_KNRI_CH_SELECT_002Map = null;
		
		executeZM_M_WORK_PARAM_KNRI_CH_SELECT_002(CH_RTYK_MAIL_PTN, super.opeDate, super.opeDate);
		
		while ((outDbZM_M_WORK_PARAM_KNRI_CH_SELECT_002Map = db_ZM_M_WORK_PARAM_KNRI.selectNext()) != null) {
			
			String workParamSetteValue = outDbZM_M_WORK_PARAM_KNRI_CH_SELECT_002Map.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
			
			if (workParamSetteValue != null && !"".equals(workParamSetteValue)) { 
				
				String[] arrayValue = workParamSetteValue.split(",");
				
				String tokusokuMailPatternCode = arrayValue[0];
				String mailCD = arrayValue[1];
				String mailSendFlag = arrayValue[2];
				
				
				executeCC_M_MAIL_CH_SELECT_001(mailCD, super.opeDate, super.opeDate, super.opeDate);
				
				JBSbatCommonDBInterface outDbCC_M_MAIL_CH_SELECT_001Map = db_CC_M_MAIL.selectNext();
				
				if(outDbCC_M_MAIL_CH_SELECT_001Map == null)
				{
					continue;
				} 
				
				HashMap<String, String> mailMap = outDbCC_M_MAIL_CH_SELECT_001Map.getMap();
				
				if (mailMap != null) {
					
					if (mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT) == null && JACStrConst.KARA_MOJI.equals(mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT))) {
						continue;
					}
					
					// Replace all newline codes (LF, CR+LF) contained in the mailMap.MAIL_TEXT, then set this new value to MAIL_TEXT.
					mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT, mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceAll("\r\n|\n", "\\\\n"));
					
					String dateYear = super.opeDate.substring(0, 4);
					String dateMonth = changeYmdFormat(super.opeDate.substring(4, 6));
					String dateDay = changeYmdFormat(super.opeDate.substring(6, 8));
					
					mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%4%", dateYear));
					mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%5%", dateMonth));
					mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%6%", dateDay));
					
					if (!JACStrConst.TOKUSOKU_ML_PTN_CD_08.equals(tokusokuMailPatternCode)){
						
						dateYear = eventYmd.substring(0, 4);
						dateMonth = changeYmdFormat(eventYmd.substring(4, 6));
						dateDay = changeYmdFormat(eventYmd.substring(6, 8));
						
						mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%1%", dateYear));
						mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%2%", dateMonth));
						mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%3%", dateDay));
						
					} else {
						
						dateYear = termYmd.substring(0, 4);
						dateMonth = changeYmdFormat(termYmd.substring(4, 6));
						dateDay = changeYmdFormat(termYmd.substring(6, 8));
						
						mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%1%", dateYear));
						mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%2%", dateMonth));
						mailMap.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%3%", dateDay));
					}
					
					mailMap.put(MAIL_SEND_FLAG, mailSendFlag);
					this.mailMaps.put(tokusokuMailPatternCode, mailMap); 
				} 
				//ANK-4415-00-00 ADD START
				executeCC_M_MAIL_CH_SELECT_001(mailCD, super.opeDate, super.opeDate, super.opeDate);
				
				JBSbatCommonDBInterface outDbCC_M_MAIL_CH_SELECT_001Map2 = db_CC_M_MAIL.selectNext();
				
				if(outDbCC_M_MAIL_CH_SELECT_001Map2 == null)
				{
					continue;
				} 
				
				HashMap<String, String> mailMap2 = outDbCC_M_MAIL_CH_SELECT_001Map2.getMap();
				
				if (mailMap2 != null)
				{
					if (mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT) == null && JACStrConst.KARA_MOJI.equals(mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT))) {
						continue;
					}
					
					// Replace all newline codes (LF, CR+LF) contained in the mailMap.MAIL_TEXT, then set this new value to MAIL_TEXT.
					mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT, mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceAll("\r\n|\n", "\\\\n"));
					
					String dateYear = super.opeDate.substring(0, 4);
					String dateMonth = changeYmdFormat(super.opeDate.substring(4, 6));
					String dateDay = changeYmdFormat(super.opeDate.substring(6, 8));
					
					mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%4%", dateYear));
					mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%5%", dateMonth));
					mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%6%", dateDay));
					
					if (!JACStrConst.TOKUSOKU_ML_PTN_CD_08.equals(tokusokuMailPatternCode))
					{
						dateYear = eventYmdCP.substring(0, 4);
						dateMonth = changeYmdFormat(eventYmdCP.substring(4, 6));
						dateDay = changeYmdFormat(eventYmdCP.substring(6, 8));
						
						mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%1%", dateYear));
						mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%2%", dateMonth));
						mailMap2.put(JBSbatCC_M_MAIL.MAIL_TEXT,mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT).replaceFirst("%3%", dateDay));
						
					}
					
					mailMap2.put(MAIL_SEND_FLAG, mailSendFlag);
					this.mailMaps2.put(tokusokuMailPatternCode, mailMap2); 
				}
				//ANK-4415-00-00 ADD END
			}
		}
	}
	
	
	/** 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	
		// 出力電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		String tokusokuMailPatternCode = inMap.getString(JBSbatCHIFM355.TOKUSOKU_MAIL_PATTERN_CODE);
		
		HashMap<String, String> mailMap = mailMaps.get(tokusokuMailPatternCode);
		
		//ANK-4415-00-00 ADD START
		String kozaPaywayUkDiv = inMap.getString(JBSbatKK_T_KOZA.KOZA_PAYWAY_UK_DIV);
		
		HashMap<String, String> mailMap2 = mailMaps2.get(tokusokuMailPatternCode);
		//ANK-4415-00-00 ADD END
		//ANK-4415-00-00 MOD START
		//if (mailMap == null) {
		if (mailMap == null && mailMap2 == null) {
		//ANK-4415-00-00 MOD END
			// Minor Alarm Output
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1500KW, new String[] {"督促メールパターンコードが不正です。" + inMap.getMap().toString()});
			
			commonItem.addErrorCount(1);
			
			return null;
		}
		
		String mailSendFlag = mailMap.get(MAIL_SEND_FLAG);
		//ANK-4415-00-00 ADD START
		String mailSendFlag2 = mailMap2.get(MAIL_SEND_FLAG);
		//ANK-4415-00-00 ADD END
		//ANK-4415-00-00 MOD START
		//if (!NUMBER_ONE.equals(mailSendFlag)) {
		if (!NUMBER_ONE.equals(mailSendFlag) || !NUMBER_ONE.equals(mailSendFlag2)) {
		//ANK-4415-00-00 MOD END
			return null;
		}
		
		
		String mlad = inMap.getString(JBSbatCHIFM355.MLAD);
		
		// ANK-4468-00-00 ADD START
		String contactMlad = getContactMlad(inMap.getString(JBSbatCHIFM355.SVC_KEI_NO));
		// ANK-4468-00-00 ADD END
		
		// ANK-4468-00-00 MOD START
		//if (mlad == null || JACStrConst.KARA_MOJI.equals(mlad)) {
		if ((mlad == null || JACStrConst.KARA_MOJI.equals(mlad)) && 
				(contactMlad == null || JACStrConst.KARA_MOJI.equals(contactMlad))) {
		// ANK-4468-00-00 MOD END	
			
			// ANK-3985-00-00 MOD START
			//// Minor Alarm Output
			//super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1500KW, new String[] {"有効なメールアドレスが存在しません。" + inMap.getMap().toString()});
			
			//commonItem.addErrorCount(1);
			
			//return null;
			//入出力インターフェースオブジェクトを生成
			JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
			//項目を設定
			outmap.setString(JBSbatCHLST094.NO, errCnt++);
			outmap.setString(JBSbatCHLST094.SEIKY_KEI_NO, inMap.getString(JBSbatCHIFM355.SEIKY_KEI_NO));
			outmap.setString(JBSbatCHLST094.SVC_KEI_NO, inMap.getString(JBSbatCHIFM355.SVC_KEI_NO));
			//出力フラグを設定
			outmap.setOutFlg(true);
			//出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList_2(outmap);
			//出力共通電文を返却
			return outputBean;
			// ANK-3985-00-00 MOD END
			
		}
		
// ANK-4468-00-00 MOD START
//		//mineo利用停止予告メール送信の出力マップを生成
//		//ANK-4415-00-00 MOD START
//		//JBSbatServiceInterfaceMap mineoRtiMailMap = setSendMail(inMap,mailMap, tokusokuMailPatternCode);
//		JBSbatServiceInterfaceMap mineoRtiMailMap = setSendMail(inMap, mailMap, mailMap2, tokusokuMailPatternCode, kozaPaywayUkDiv);
//		if(mineoRtiMailMap == null)
//		{
//			return null;
//		}
//		else
//		{
//			//出力内容を設定
//			outputBean.addOutMapList(mineoRtiMailMap);
//			
//			dataCnt++;
//			
//			return outputBean;
//		}
//		//ANK-4415-00-00 MOD END
		//一意の電子メールアドレスのリスト
		HashSet<String> mladMap = new HashSet<String>(); 
		if(mlad != null && !JACStrConst.KARA_MOJI.equals(mlad)) {
			mladMap.add(mlad);
		}
		if(contactMlad != null && !JACStrConst.KARA_MOJI.equals(contactMlad)) {
			mladMap.add(contactMlad);
		}
		
		for(String emailAd : mladMap){
			//mineo利用停止予告メール送信の出力マップを生成
			JBSbatServiceInterfaceMap mineoRtiMailMap = setSendMail(inMap, emailAd, mailMap, mailMap2, tokusokuMailPatternCode, kozaPaywayUkDiv);
			if(mineoRtiMailMap == null)
			{
				continue;
			}
			else
			{
				//出力内容を設定
				outputBean.addOutMapList(mineoRtiMailMap);
				
				dataCnt++;
			}
		}
		
		if(dataCnt > 0) 
		{
			return outputBean;
		} 
		else 
		{
			return null;
		}		
// ANK-4468-00-00 MOD END
	}
	
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception {
		/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		
		// 件数ファイルオブジェクト
		JBSbatOutputFileUtil cntFile = null;

		try
		{
			//ANK-4415-00-00 ADD START
			//口座支払方法受付区分未取得レコードエラー出力処理
			String TEXT1 = "利用停止予告メール送信";
			if(!this.logMaps.isEmpty())
			{
				for (String i : this.logMaps.keySet())
				{
					super.logPrint.printBusinessErrorLog(ECHB1490AI, new String[] {TEXT1, this.logMaps.get(i), i});
				}
				super.logPrint.printBusinessErrorLog(ECHB0260CW, new String[] {TEXT1});
			}
			
			//ANK-4415-00-00 ADD END
			// フリーパラメータをチェック
			if(super.freeItem == null || JACStrConst.KARA_MOJI.equals(super.freeItem))
			{
				// 件数ファイルパラメータ異常
				throw new Exception();
			}
			// 件数ファイル作成
			cntFile = new JBSbatOutputFileUtil(super.freeItem);
			cntFile.setEncode(JKKBatConst.SJIS);
			cntFile.setLine(JACStrConst.LINE_LF);
			cntFile.createWriter();
			StringBuffer sb = new StringBuffer();
			sb.append(JACStrConst.DOUBLE_QUOTE);
			sb.append(String.format("%05d",dataCnt));
			sb.append(JACStrConst.DOUBLE_QUOTE);
			cntFile.write(sb.toString());
		}
		catch(Exception e)
		{
			// 出力ファイルの作成に失敗
			String rsn = "件数ファイルの作成に失敗（";
			StringBuffer buf = new StringBuffer();
			buf.append("出力件数パス：");
			buf.append(super.freeItem);	
			buf.append("）");
			// エラーを投げる
			throw new JBSbatBusinessException("ECHB1550CE", new String[]{ rsn, buf.toString() });
		}
		finally
		{
			// 件数ファイルオブジェクトを閉じる
			if(cntFile != null)
			{
				// 件数ファイルを閉じる
				cntFile.close();
				cntFile = null;
			}
		}
		
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		if (db_CC_M_MAIL != null) {
			db_CC_M_MAIL.close();
		}
		
		if (db_ZM_M_WORK_PARAM_KNRI != null) {
			db_ZM_M_WORK_PARAM_KNRI.close();
		}
		
		// ANK-4468-00-00 ADD START
		if (db_CK_T_RRKS != null) {
			db_CK_T_RRKS.close();
		}
		// ANK-4468-00-00 ADD END
		
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	
	/** 月または日を成形します。
	 * 
	 * @param md (月または日)
	 * @return md (月または日)
	 */
	private String changeYmdFormat(String md){
		
		//返却用月日
		int rtnMd = 0;
		//月または日を埋め込み文字用に編集する
		//月または日の一文字目を取得（"10"→"10","09"→"9"）
		rtnMd = Integer.parseInt(md);
		 
		return "" + rtnMd ;
	}
	
	/**
	 * 
	 * @param inMap
	 * @param mailMap
	 * @param mailMap2
	 * @param tokusokuMailPatternCode
	 * @param kozaPaywayUkDiv
	 * @return
	 * @throws Exception
	 */
	//ANK-4415-00-00 MOD START
	//private JBSbatServiceInterfaceMap setSendMail(JBSbatServiceInterfaceMap inMap, HashMap<String,String> mailMap, String tokusokuMailPatternCode) throws Exception
	// ANK-4468-00-00 MOD START
	//private JBSbatServiceInterfaceMap setSendMail(JBSbatServiceInterfaceMap inMap, HashMap<String,String> mailMap, HashMap<String,String> mailMap2, String tokusokuMailPatternCode, String kozaPaywayUkDiv) throws Exception
	private JBSbatServiceInterfaceMap setSendMail(JBSbatServiceInterfaceMap inMap, String mlad, HashMap<String,String> mailMap, 
			HashMap<String,String> mailMap2, String tokusokuMailPatternCode, String kozaPaywayUkDiv) throws Exception
	// ANK-4468-00-00 MOD END
//ANK-4415-00-00 MOD END
	{
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();

		//1.お客様ＩＤ
		outMap.set(JBSbatKKIFE398.SVC_KEI_NO,				inMap.getString(JBSbatCHIFM355.SVC_KEI_NO));
		//2.メール宛先
		// ANK-4468-00-00 MOD START
//		outMap.set(JBSbatKKIFE398.SENDS_MLAD,				inMap.get(JBSbatCHIFM355.MLAD));
		outMap.set(JBSbatKKIFE398.SENDS_MLAD,				mlad);
		// ANK-4468-00-00 MOD END
		//3.メール送信者名
		outMap.set(JBSbatKKIFE398.SENDM_MLAD_DSP_NM,		mailMap.get(JBSbatCC_M_MAIL.SENDM_MLAD_DSP_NM));
		//4.メール送信者
		outMap.set(JBSbatKKIFE398.SENDM_MLAD,				mailMap.get(JBSbatCC_M_MAIL.SENDM_MLAD));
		//5.メール返信先
		outMap.set(JBSbatKKIFE398.HNSIN_MLAD,				mailMap.get(JBSbatCC_M_MAIL.HNSIN_MLAD));
		//6.エラーメール返信先
		outMap.set(JBSbatKKIFE398.HNSIN_ERR_MLAD,			mailMap.get(JBSbatCC_M_MAIL.ERR_MLAD));
		//7.ＢＣＣ
		outMap.set(JBSbatKKIFE398.BCC_MLAD,					HALF_WIDTH_WHITESPACE);
		//8.メール題名
		outMap.set(JBSbatKKIFE398.MAIL_TITLE,				mailMap.get(JBSbatCC_M_MAIL.MAIL_TITLE));
		//9.メール本文
		//ANK-4415-00-00 MOD START
		//outMap.set(JBSbatKKIFE398.MAIL_TEXT,				mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT));
		//督促メールパターンコードが"01"、"02"、"04"、"06"の何れ
		if (JACStrConst.TOKUSOKU_ML_PTN_CD_01.equals(tokusokuMailPatternCode) || JACStrConst.TOKUSOKU_ML_PTN_CD_02.equals(tokusokuMailPatternCode)
				|| JACStrConst.TOKUSOKU_ML_PTN_CD_04.equals(tokusokuMailPatternCode) || JACStrConst.TOKUSOKU_ML_PTN_CD_06.equals(tokusokuMailPatternCode))
		{
			//口座支払方法受付区分 is "1" (クリアパス)
			if (JACStrConst.KOZA_PAYWAY_UK_DIV_CLEAR_PASS.equals(kozaPaywayUkDiv))
			{
				outMap.set(JBSbatKKIFE398.MAIL_TEXT,		mailMap2.get(JBSbatCC_M_MAIL.MAIL_TEXT));
			}
			//口座支払方法受付区分 is "2" (SMBCFS)
			else if (JACStrConst.KOZA_PAYWAY_UK_DIV_SMBCFS.equals(kozaPaywayUkDiv))
			{
				outMap.set(JBSbatKKIFE398.MAIL_TEXT,		mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT));
			}
			else
			{
				this.logMaps.put(inMap.getString(SEIKY_NO), inMap.getString(SEIKY_KEI_NO));
				return null;
			}
			
		}else
		{
			outMap.set(JBSbatKKIFE398.MAIL_TEXT,			mailMap.get(JBSbatCC_M_MAIL.MAIL_TEXT));
		}
		//ANK-4415-00-00 MOD END
		//10.対応記録タイトル
		if (!JACStrConst.TOKUSOKU_ML_PTN_CD_08.equals(tokusokuMailPatternCode)){
			outMap.set(JBSbatKKIFE398.TAIO_KIROK_TITLE,			TAIO_KIROK_TITLE_RTYK);
		}else{
			outMap.set(JBSbatKKIFE398.TAIO_KIROK_TITLE,			TAIO_KIROK_TITLE_KKYK);
		}

		outMap.setOutFlg(true);

		return outMap;
		
	}
	
	
	/**
	 * 
	 * @param chRtykMailPtn
	 * @param workParamTStaYmd
	 * @param workParamTEndYmd
	 * @throws Exception
	 */
	private void executeZM_M_WORK_PARAM_KNRI_CH_SELECT_002(String chRtykMailPtn, String workParamTStaYmd, String workParamTEndYmd) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(chRtykMailPtn);
		paramList.setValue(workParamTStaYmd);
		paramList.setValue(workParamTEndYmd);

		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_CH_SELECT_002);
	}
	
	
	/**
	 * 
	 * @param mailCD
	 * @param rsvApplyYmd
	 * @param mailTStaYmd
	 * @param mailTendYmd
	 * @throws Exception
	 */
	private void executeCC_M_MAIL_CH_SELECT_001(String mailCD, String rsvApplyYmd, String mailTStaYmd, String mailTendYmd) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(mailCD);
		paramList.setValue(rsvApplyYmd);
		paramList.setValue(mailTStaYmd);
		paramList.setValue(mailTendYmd);

		// DBアクセスを実行します
		db_CC_M_MAIL.selectBySqlDefine(paramList, CC_M_MAIL_CH_SELECT_001);
	}
	
	// ANK-4468-00-00 ADD START
	/**
	 * 
	 * @param svcKeiNo
	 * @throws Exception
	 */
	private String getContactMlad(String svcKeiNo) throws Exception
	{
		String mlad = null;
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(super.opeDate);
		paramList.setValue(svcKeiNo);
		//ANK-4468-00-01 ADD START
		paramList.setValue(super.opeDate);
		//ANK-4468-00-01 ADD END

		// SQL実行
		executeCK_T_RRKS_KK_SELECT_012(paramList.getList().toArray());
		
		JBSbatCommonDBInterface dbMap = db_CK_T_RRKS.selectNext();

		if(dbMap != null)
		{
			mlad = dbMap.getString(JBSbatCK_T_RRKS.MLAD);
		}
		return mlad;
	}
	
	/**
	 * SQLKEY(KK_SELECT_012)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	予約適用年月日
	 *		 	サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCK_T_RRKS_KK_SELECT_012(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		//ANK-4468-00-01 ADD START
		paramList.setValue(param[2].toString());
		//ANK-4468-00-01 ADD END

		// DBアクセスを実行します
		db_CK_T_RRKS.selectBySqlDefine(paramList, CK_T_RRKS_KK_SELECT_012);
	}
	// ANK-4468-00-00 ADD END
}
