/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKShosaAFMailSks
*	ソースファイル名	：JBSbatKKShosaAFMailSks.java
*	作成者				：富士通
*	作成日				：2021年12月13日
*＜機能概要＞
*	照査完了通知メール作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v56.00.00	2021/12/13	FJ)吉村		【ANK-4174-00-00】開通前マイページ関連業務改善（2022年1月下旬リリース） 新規作成
*   v71.00.00	2024/05/10	FJ)吉川		【ANK-4468-00-00】ANK-4468-00-00_eo光ネット「シンプルプラン」追加対応
*   v71.00.01	2024/09/10	FJ)張		【ANK-4468-00-01】ANK-4468-00-00_eo光ネット「シンプルプラン」追加対応
*********************************************************************/
package eo.business.service;


import java.util.ArrayList;
import java.util.HashMap;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatConst;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.application.JBSbatBusinessError;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatInputFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.business.util.file.JBSbatKKIFM919002;
import eo.business.util.table.JBSbatCN_M_CONT_SVC;
import eo.business.util.table.JBSbatKK_T_CONT_MKM_INF;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JKKStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKShosaAFMailSks extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	

	/** 改行コードCRLF*/
	private static final String LF = "\\\\n";
	/** 置換対象文字列(%)*/
	private static final String REPLACE_TG_PER = "%";
	/** 置換対象文字列($)*/
	private static final String REPLACE_TG_DL = "\\$";
	/** メールコード */
	private static final String MAIL_CD  = "KKM1000032";
	//ANK-4468-00-00 ADD START
	/** メールコード(シンプルプラン用) */
	private static final String MAIL_CD_SIMPLE  = "KKM1000053";
	//ANK-4468-00-00 ADD END
	/** メール明細コード(コンテンツ利用手続き項目) */
	private static final String MAIL_DTL_CD_CONT_KMK  = "KKD1000001";
	/** メール明細コード(コンテンツサービス利用案内文) */
	private static final String MAIL_DTL_CD_CONT_GUIDE  = "KKD1000002";
	/** メール明細コード(コンテンツサービス名) */
	private static final String MAIL_DTL_CD_CONT_SVC_NM  = "KKD1000003";
	/** 照査完了通知(送信済) */
	private static final String SHOSA_FIN  = "1";
	/** 住居タイプフラグ(ホーム) */
	private static final String JKYO_TYPE_FLG_HT  = "1";
	/** 住居タイプフラグ(メゾン) */
	private static final String JKYO_TYPE_FLG_MZ  = "2";
	/** 住居タイプフラグ(マンション) */
	private static final String JKYO_TYPE_FLG_MT  = "3";

	/** テーブル(メール)*/
	private static final String D_TBL_NAME_CC_M_MAIL = "CC_M_MAIL";
	/** テーブルアクセスクラス(メール)*/
	private JBSbatSQLAccess db_CC_M_MAIL = null;
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String CC_M_MAIL_KK_SELECT_004 = "KK_SELECT_004";
	/** テーブル(メール明細)*/
	private static final String D_TBL_NAME_CC_M_MAIL_DTL = "CC_M_MAIL_DTL";
	/** テーブルアクセスクラス(メール明細)*/
	private JBSbatSQLAccess db_CC_M_MAIL_DTL = null;
	/** SQL定義キー(CC_SELECT_002)*/
	private static final String CC_M_MAIL_DTL_CC_SELECT_002 = "CC_SELECT_002";
	/** テーブル(コンテンツ申込情報)*/
	private static final String D_TBL_NAME_KK_T_CONT_MKM_INF = "KK_T_CONT_MKM_INF";
	/** テーブルアクセスクラス(コンテンツ申込情報)*/
	private JBSbatSQLAccess db_KK_T_CONT_MKM_INF = null;
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_CONT_MKM_INF_KK_SELECT_003 = "KK_SELECT_003";
	/** テーブル(コンテンツ申込情報)*/
	private static final String D_TBL_NAME_KK_T_MSKM = "KK_T_MSKM";
	/** テーブルアクセスクラス(コンテンツ申込情報)*/
	private JBSbatSQLAccess db_KK_T_MSKM = null;
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_MSKM_KK_UPDATE_001 = "KK_UPDATE_001";
	//ANK-4468-00-00 ADD START
	/** テーブル(コンテンツ申込情報)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";
	/** テーブルアクセスクラス(コンテンツ申込情報)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;
	/** SQL定義キー(KK_SELECT_003)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_382 = "KK_SELECT_382";
	//ANK-4468-00-00 ADD END

	/** 照査完了通知情報(メール送信)インファイル */
	private JBSbatInputFileUtil kkifm919002Infile = null;
	
	/** 照査完了通知情報(メール送信)抽出ファイル定義 */
	private JBSbatDefFileUtil kkifm919002FileObjDef = null;
	
	/** ブロッキング情報通知メールファイルオブジェクト(出力ファイル) */
	private JBSbatOutputFileUtil kkifm919002FileObjOut = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		String[] freeItems = commonItem.getFreeItem().split(JKKBatConst.S_PARAM_DELIM);

		// DBアクセスクラスを生成します
		db_CC_M_MAIL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL);
		db_CC_M_MAIL_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CC_M_MAIL_DTL);
		db_KK_T_CONT_MKM_INF = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_CONT_MKM_INF);
		db_KK_T_MSKM = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM);
		//ANK-4468-00-00 ADD START
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		//ANK-4468-00-00 ADD END

		// KKIFM919002ファイル作成
		this.kkifm919002FileObjOut = new JBSbatOutputFileUtil(freeItems[0]);
		this.kkifm919002FileObjOut.setEncode(JKKBatConst.SJIS);
		this.kkifm919002FileObjOut.setLine(LF);
		this.kkifm919002FileObjOut.createWriter();
		// 入力ファイル
		kkifm919002Infile = new JBSbatInputFileUtil(freeItems[1]);

		// 定義ファイル
		kkifm919002FileObjDef= new JBSbatDefFileUtil(JBSbatAplConst.getAplConstValue("IND") + freeItems[2], kkifm919002Infile);

		/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute() throws Exception
	{

		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		try
		{
			// バッチ運用日付の取得
			String batOpeDate = super.opeDate;
			//ANK-4468-00-00 ADD START
			//シンプルプラン用判別フラグ
			boolean smplFlg = false;
			//ANK-4468-00-00 ADD END
			
			// メール情報を取得
			// ANK-4468-00-00 MOD START
			//JBSbatCommonDBInterface mailInfo = executeCC_M_MAIL_KK_SELECT_004(new String[]{ batOpeDate });
			JBSbatCommonDBInterface mailInfo = executeCC_M_MAIL_KK_SELECT_004(new String[]{ batOpeDate,MAIL_CD }, MAIL_CD);
			// ANK-4468-00-00 MOD END
			// ANK-4468-00-00 ADD START
			// メール情報を取得（シンプルプラン用）
			JBSbatCommonDBInterface smplMailInfo = executeCC_M_MAIL_KK_SELECT_004(new String[]{ batOpeDate }, MAIL_CD_SIMPLE);
			// ANK-4468-00-00 ADD END
			if ( mailInfo == null )
			{
				super.commonItem.setErrFlg(true);
				// %1%テーブルに%2%が存在しません。
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[] { "メール", "メールコード：" + MAIL_CD });
				throw new JBSbatBusinessError();
			}
			// ANK-4468-00-00 ADD START
			if ( smplMailInfo == null )
			{
				super.commonItem.setErrFlg(true);
				// %1%テーブルに%2%が存在しません。
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[] { "メール", "メールコード：" + MAIL_CD_SIMPLE });
				throw new JBSbatBusinessError();
			}
			// ANK-4468-00-00 ADD END
			// メール明細情報を取得
			HashMap<String, Object> mailDtlInfo = executeCC_M_MAIL_DTL_CC_SELECT_002(new String[]{ batOpeDate });
			if ( mailDtlInfo == null )
			{
				super.commonItem.setErrFlg(true);
				// %1%テーブルに%2%が存在しません。
				super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.EKKB0210CE, new String[] { "メール明細", "メール明細コード"});
				throw new JBSbatBusinessError();
			}
			
			int row = 0;
			kkifm919002Infile.createReader();
			while ( kkifm919002Infile.ready() )
			{
				row++;
				String line = kkifm919002Infile.readLine();
				JBSbatServiceInterfaceMap shosaAFInfo = kkifm919002FileObjDef.lineToObject(line, kkifm919002Infile, row);
				/** 対象データ取得 */
				String sysid = shosaAFInfo.getString(JBSbatKKIFM919002.SYSID);					// SYSID
				String mskmNo = shosaAFInfo.getString(JBSbatKKIFM919002.MSKM_NO);				// 申込番号
				// ANK-4468-00-00 ADD START
				String svcKeiNo = shosaAFInfo.getString(JBSbatKKIFM919002.SVC_KEI_NO);				// サービス契約番号
				
				//サービス契約情報取得(シンプルプランコースのサービス契約であるか確認する）
				JBSbatCommonDBInterface svcInfo = executeKK_T_SVC_KEI_KK_SELECT_382(new String[]{ svcKeiNo,sysid,batOpeDate });
				
				//サービス契約情報が取得できた場合シンプルプランコース
				if(svcInfo != null){
					smplFlg = true;
				}
				// ANK-4468-00-00 ADD END
				// ANK-4468-00-01 ADD START
				else{
					smplFlg = false;
				}
				// ANK-4468-00-01 ADD END
				
				// 利用開始依頼を行っていないコンテンツを取得
				ArrayList<HashMap<String, Object>> contInfo = executeKK_T_CONT_MKM_INF_KK_SELECT_003( new String[]{ mskmNo,sysid,batOpeDate});
				
				
				// ANK-4468-00-00 ADD START
				//メール作成(シンプルプランコース)
				if (smplFlg) {
					// メール本文を取得する
					String smplMailText = getMailText(shosaAFInfo, smplMailInfo, mailDtlInfo, contInfo);
					// メールマスタの改行コードを置換する
					smplMailText = smplMailText.replaceAll("\r\n", LF);

					// 照査完了通知情報通知メールを作成
					writeShosaAFMail(shosaAFInfo, smplMailInfo, smplMailText);
					
				//メール作成(シンプルプランコース以外)
				} else {
				// ANK-4468-00-00 ADD END
					// メール本文を取得する
					String mailText = getMailText(shosaAFInfo, mailInfo, mailDtlInfo, contInfo);
					// メールマスタの改行コードを置換する
					mailText = mailText.replaceAll("\r\n", LF);

					// 照査完了通知情報通知メールを作成
					writeShosaAFMail(shosaAFInfo, mailInfo, mailText);
				// ANK-4468-00-00 ADD START
				}
				// ANK-4468-00-00 ADD END
				
				// 申込スキーマの更新
				executeKK_T_MSKM_KK_UPDATE_001(new String[]{ mskmNo });
			}
			
		}
		catch(Exception e)
		{
			super.commonItem.setErrFlg(true);
			throw new JBSbatBusinessError();
		}

		return outputBean;
	}
	
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
		// DBクローズ処理
		db_CC_M_MAIL.close();
		db_CC_M_MAIL_DTL.close();
		db_KK_T_CONT_MKM_INF.close();
		// ANK-4468-00-00 ADD START
		db_KK_T_SVC_KEI.close();
		// ANK-4468-00-00 ADD END
	}

	/**
	 * KKIFM919002の照査完了通知情報メールの作成
	 * @param  shosaAFInfo
	 * @param  mailInfo
	 * @param  mailText
	 * @throws Exception
	 */
	private void writeShosaAFMail(JBSbatServiceInterfaceMap shosaAFInfo, JBSbatCommonDBInterface mailInfo, String mailText)
	throws Exception
	{
		StringBuilder str = new StringBuilder();
		// サービス契約番号
		appendStr(str, shosaAFInfo.getString(JBSbatKKIFM919002.SVC_KEI_NO), 10, true, true);
		// メール宛先
		appendStr(str, shosaAFInfo.getString(JBSbatKKIFM919002.SENDS_MLAD), 64, true, true);
		// メール送信者名
		appendStr(str, mailInfo.getString(JBSbatKKIFM919002.SENDM_MLAD_DSP_NM), 100, true, true);
		// メール送信者
		appendStr(str, mailInfo.getString(JBSbatKKIFM919002.SENDM_MLAD), 64, true, true);
		// メール返信先
		appendStr(str, mailInfo.getString(JBSbatKKIFM919002.HNSIN_MLAD), 64, true, true);
		// エラーメール返信先
		appendStr(str, mailInfo.getString("ERR_MLAD"), 64, true, true);
		// ＢＣＣ
		appendStr(str, mailInfo.getString(JBSbatKKIFM919002.BCC_MLAD), 64, true, true);
		// メール題名
		appendStr(str, mailInfo.getString(JBSbatKKIFM919002.MAIL_TITLE), 500, true, true);
		// メール本文
		appendStr(str, mailText, 4200, true, true);
		// 対応記録タイトル
		appendStr(str, mailInfo.getString(JBSbatKKIFM919002.TAIO_KIROK_TITLE), 80, false, true);

		this.kkifm919002FileObjOut.write(str.toString());
	}


	/**
	 * 文字列を連結します。
	 * 
	 * @param str
	 *            文字列
	 * @param value
	 *            連結対象の文字列
	 * @param len
	 *            桁数
	 * @param continueFlg
	 *            継続フラグ
	 * @throws Exception 
	 */
	private void appendStr(StringBuilder str, String value, int len, boolean continueFlg, boolean doubleQuoteFlg) throws Exception
	{
		String preValue = value;

		if (null == value)
		{
			preValue = "";
		}
		
		if (doubleQuoteFlg)
		{
			str.append("\"");
		}
		
		str.append(adjustCharSize(preValue, len));
		
		if (doubleQuoteFlg)
		{
			str.append("\"");
		}

		if (continueFlg)
		{
			str.append(JBSbatKKConst.STR_COMMA);
		}
	}

	/**
	 * 文字列を指定された桁数に調整する。<BR>
	 * 指定サイズが文字列の桁数より小さい場合は、文字列の語尾を切り捨てる。
	 * <BR>
	 * @param para 調整前の文字列
	 * @param len 指定桁数（桁数）
	 * @param encode 文字コード（ＯＳ準拠の場合は""（空）を指定）
	 * @return String 調整後の文字列
	 * @throws Exception
	 */
	public String adjustCharSize(String para, int len)
			throws Exception
	{
		String retStr = "";
		if (null == para)
		{
			return retStr;
		}
		if (0 >= len)
		{
			return retStr;
		}

		// 入力文字列の桁数を取得する
		int paralen = para.length();

		// 入力文字列を返却文字列に設定
		retStr = para;
		
		// 入力文字列の桁数 ＞ 指定桁数の場合
		if ( paralen > len )
		{ 
			// 指定桁数分の文字列を生成する
			retStr = para.substring(0, len);
		}

		return retStr;
	}

	/**
	 * メール本文を取得します。
	 * <br>
	 * @param outputInItem 出力情報ワーク
	 * @return メール本文
	 * @throws Exception キャストで例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private String getMailText(JBSbatServiceInterfaceMap shosaAFInfo, JBSbatCommonDBInterface mailInfo, HashMap<String, Object> mailDtlInfo, ArrayList<HashMap<String, Object>> contInfo) throws Exception
	{
		// 住居タイプフラグ
		String jkyoTypeFlg = (String)shosaAFInfo.getString(JBSbatKKIFM919002.JKYO_TYPE_FLG);
		// 申込書番号
		String mskmshoNo = (String)shosaAFInfo.getString(JBSbatKKIFM919002.MSKMSHO_NO);
		// メール本文（置換前）
		String mailText = mailInfo.getString(JBSbatKKIFM919002.MAIL_TEXT);
		// メール明細
		String mailDtl = (String) mailDtlInfo.get(MAIL_DTL_CD_CONT_SVC_NM);
		// メール本文連結
		StringBuffer mailSb = new StringBuffer(); 
		
		String contGuide = "";		//コンテンツサービス利用手続き案内
		String contSvcNm = "";		//コンテンツサービス名
		String contUseKmk = "";		//コンテンツ利用手続き項目
		String enqtJkyoTypeFlg = "";//アンケート住居タイプフラグ
		
		// 住居タイプフラグが"1"(ホーム)の場合"ht"(ホーム)、"2"(メゾン)の場合"mz"(メゾン)、"3"(マンション)の場合"mt"(マンション)
		if (JKYO_TYPE_FLG_HT.equals(jkyoTypeFlg))
		{
			enqtJkyoTypeFlg = "ht";	//ホーム
		}
		else if (JKYO_TYPE_FLG_MZ.equals(jkyoTypeFlg))
		{
			enqtJkyoTypeFlg = "mz";	//メゾン
		}
		else if (JKYO_TYPE_FLG_MT.equals(jkyoTypeFlg))
		{
			enqtJkyoTypeFlg = "mt";	//マンション
		}
		
		// 同時申込コンテンツの一覧が1件も取得できなかった場合置換文字を空文字で返却する
		if (contInfo != null && contInfo.size() > 0)
		{
			// コンテンツサービス利用案内文
			contGuide = (String) mailDtlInfo.get(MAIL_DTL_CD_CONT_GUIDE);
			contGuide = contGuide.replace("\\n", "\\\\n");
			// コンテンツメール本文を連結する
			mailSb.append(contGuide);
			//コンテンツサービスのある分だけ繰り返し処理を行う
			for (int i = 0; i < contInfo.size(); i++)
			{
				HashMap<String, Object> contInfoMap = contInfo.get(i);
				String contNm = JKKStringUtil.nullToBlank((String) contInfoMap.get(JBSbatCN_M_CONT_SVC.CONT_SVC_NM));
				String mailContText = mailDtl.replace(REPLACE_TG_PER, contNm);
				mailSb.append(mailContText);
				mailSb.append(LF);
			}
			
			contUseKmk = (String) mailDtlInfo.get(MAIL_DTL_CD_CONT_KMK);
			contSvcNm = mailSb.toString();
		}

		String[] replaceTargets = {REPLACE_TG_DL, REPLACE_TG_DL, REPLACE_TG_PER, REPLACE_TG_PER};
		String[] replaceItemts = {contUseKmk, contSvcNm, enqtJkyoTypeFlg, mskmshoNo};

		return repTextDataString(mailText, replaceItemts, replaceTargets);
	}

	/**
	 * 文字列内を置換します。
	 * <br>
	 * @param textData 編集対象
	 * @param param 置換対象
	 * @param chgNo 置換文字列
	 * @return 置換結果
	 */
	private String repTextDataString(String textData, String[] param, String[] chgNo)
	{
		for(int i = 0; i < param.length; i++)
		{
			if (param[i] != null)
			{
				textData = textData.replaceFirst(chgNo[i], param[i]);
			}
		}
		return textData;
	}

	/**
	 * SQLKEY(CC_M_MAIL_KK_SELECT_004)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @param mailCd SQL検索条件となるメールコード
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	// ANK-4468-00-00 MOD START
	//private JBSbatCommonDBInterface executeCC_M_MAIL_KK_SELECT_004(Object[] param) throws Exception
	private JBSbatCommonDBInterface executeCC_M_MAIL_KK_SELECT_004(Object[] param, String mailCd) throws Exception
	// ANK-4468-00-00 MOD END
	{
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		// ANK-4468-00-00 MOD START
		//paramList.setValue(MAIL_CD);
		//メールコードが"KKM1000032"の場合
		if (MAIL_CD.equals(mailCd)) {
			paramList.setValue(MAIL_CD);
		//メールコードが"KKM1000053"の場合
		} else if (MAIL_CD_SIMPLE.equals(mailCd)) {
			paramList.setValue(MAIL_CD_SIMPLE);
		}
		// ANK-4468-00-00 MOD END
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_M_MAIL.selectBySqlDefine(paramList, CC_M_MAIL_KK_SELECT_004);
		
		dbInterface = db_CC_M_MAIL.selectNext();
		
		if(dbInterface == null)
		{
			return null;
		}
		return dbInterface;
	}

	/**
	 * SQLKEY(CC_M_MAIL_DTL_CC_SELECT_002)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private HashMap<String, Object> executeCC_M_MAIL_DTL_CC_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_CC_M_MAIL_DTL.selectBySqlDefine(paramList, CC_M_MAIL_DTL_CC_SELECT_002);
		
		HashMap<String, Object> outMap = new HashMap<String, Object>();
		while(null != (dbInterface = db_CC_M_MAIL_DTL.selectNext())){
			outMap.put((String) dbInterface.getValue("MAIL_DTL_CD"), dbInterface.getValue("MAIL_DTL_TEXT"));	// メール明細本文
		}
		return outMap;
	}

	/**
	 * SQLKEY(KK_T_CONT_MKM_INF_KK_SELECT_003)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private ArrayList<HashMap<String, Object>> executeKK_T_CONT_MKM_INF_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_CONT_MKM_INF.selectBySqlDefine(paramList, KK_T_CONT_MKM_INF_KK_SELECT_003);
		
		HashMap<String, Object> outMap = null;
		ArrayList<HashMap<String, Object>> infoMapList =  new ArrayList<HashMap<String, Object>>();
		while(null != (dbInterface = db_KK_T_CONT_MKM_INF.selectNext())){
			outMap =  new HashMap<String, Object>();
			outMap.put(JBSbatKK_T_CONT_MKM_INF.CONT_SVC_CD,dbInterface.getValue("CONT_SVC_CD"));	// コンテンツサービスコード
			outMap.put(JBSbatCN_M_CONT_SVC.CONT_SVC_NM,dbInterface.getValue("CONT_SVC_NM"));		// コンテンツサービス名
			infoMapList.add(outMap);
		}
		return infoMapList;
	}

	/**
	 * SQLKEY(KK_T_MSKM_KK_UPDATE_001)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_MSKM_KK_UPDATE_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(SHOSA_FIN);
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM.executeBySqlDefine(paramList, KK_T_MSKM_KK_UPDATE_001);
	}
	
	// ANK-4468-00-00 MOD START
	/**
	 * SQLKEY(KK_T_SVC_KEI_KK_SELECT_382)でDBアクセスを行います。<br>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_SVC_KEI_KK_SELECT_382(Object[] param) throws Exception
	{
		
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface dbInterface = null;
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_382);
		
		dbInterface = db_KK_T_SVC_KEI.selectNext();
		
		if(dbInterface == null)
		{
			return null;
		}
		return dbInterface;
	}
	// ANK-4468-00-00 ADD END

}