/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUChkAddOptinmInfoCC
*   ソースファイル名：JFUChkAddOptinmInfoCC.java
*   作成者          ：富士通
*   日付            ：2016年09月21日
*＜機能概要＞
*  オプトインメール情報チェック登録コモンコンポーネント部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v27.00      2016/09/21   FJ)岡井     【ANK-2987-00-00】メールリーチ率向上
*   v47.00      2019/12/20   FJ)吉田     【OM-2019-0001299】障害対応
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0141B002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0141B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0141B005CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0141B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0141D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0201B002CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0201B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0201C030CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0201D010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0251B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0251B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0251C010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EZM0511B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0511B001CBSMsg1List;

/**
 * オプトインメール情報チェック登録部品です。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUChkAddOptinmInfoCC extends JFUBaseCC
{
	/* ■□ EZM0511B001_Webアクセス認証キー一覧照会SC ■□ */
	/** テンプレートID(Webアクセス認証キー一覧照会) */
	private static final String TEMP_ID_EZM0511B001 = "EZM0511B001";
	/** テンプレートID(Webアクセス認証キー一覧照会明細) */
	private static final String TEMP_ID_DTL_EZM0511B001 = EZM0511B001CBSMsg.EZM0511B001CBSMSG1LIST;
	/** IN項目リスト(Webアクセス認証キー一覧照会) */
	private static final List<String> IN_LIST_EZM0511B001 = Arrays.asList(EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY_SBT_CD,
			EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY, EZM0511B001CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(Webアクセス認証キー一覧照会) */
	private static final String ERR_EZM0511B001 = EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY_ERR;
	/** SC実行結果取得キー(Webアクセス認証キー一覧照会) */
	private static final String TEMP_TEMP_KEY_EZM0511B001 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EZM0511B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0081B002_サービス契約一覧照会（SYSID）SC ■□ */
	/** テンプレートID(サービス契約一覧照会（SYSID）) */
	private static final String TEMP_ID_EKK0081B002 = "EKK0081B002";
	/** テンプレートID(サービス契約一覧照会（SYSID）明細) */
	private static final String TEMP_ID_DTL_EKK0081B002 = EKK0081B002CBSMsg.EKK0081B002CBSMSG1LIST;
	/** IN項目リスト(サービス契約一覧照会（SYSID）) */
	private static final List<String> IN_LIST_EKK0081B002 = Arrays.asList(EKK0081B002CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(サービス契約一覧照会（SYSID）) */
	private static final String ERR_EKK0081B002 = EKK0081B002CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(サービス契約一覧照会（SYSID）) */
	private static final String TEMP_TEMP_KEY_EKK0081B002 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0081B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0251B010_オプトインメール受信設定ワーク一覧照会SC ■□ */
	/** テンプレートID(オプトインメール受信設定ワーク一覧照会) */
	private static final String TEMP_ID_ECK0251B010 = "ECK0251B010";
	/** テンプレートID(オプトインメール受信設定ワーク一覧照会明細) */
	private static final String TEMP_ID_DTL_ECK0251B010 = ECK0251B010CBSMsg.ECK0251B010CBSMSG1LIST;
	/** IN項目リスト(オプトインメール受信設定ワーク一覧照会) */
	private static final List<String> IN_LIST_ECK0251B010 = Arrays.asList(ECK0251B010CBSMsg.KEY_SYSID,
			ECK0251B010CBSMsg.KEY_WEB_ACCSS_NSKEY_NO);
	/** 関連チェックエラー項目(オプトインメール受信設定ワーク一覧照会) */
	private static final String ERR_ECK0251B010 = ECK0251B010CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(オプトインメール受信設定ワーク一覧照会) */
	private static final String TEMP_TEMP_KEY_ECK0251B010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0251B010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141B005_オプトインメール受信設定一覧照会(SYSID)２SC ■□ */
	/** テンプレートID(オプトインメール受信設定一覧照会(SYSID)２) */
	private static final String TEMP_ID_ECK0141B005 = "ECK0141B005";
	/** テンプレートID(オプトインメール受信設定一覧照会(SYSID)２明細) */
	private static final String TEMP_ID_DTL_ECK0141B005 = ECK0141B005CBSMsg.ECK0141B005CBSMSG1LIST;
	/** IN項目リスト(オプトインメール受信設定一覧照会(SYSID)２) */
	private static final List<String> IN_LIST_ECK0141B005 = Arrays.asList(ECK0141B005CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(オプトインメール受信設定一覧照会(SYSID)２) */
	private static final String ERR_ECK0141B005 = ECK0141B005CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(オプトインメール受信設定一覧照会(SYSID)２) */
	private static final String TEMP_TEMP_KEY_ECK0141B005 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0141B005 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0201B002_連絡先(コンテンツ用メールアドレス)一覧照会SC ■□ */
	/** テンプレートID(連絡先(コンテンツ用メールアドレス)一覧照会) */
	private static final String TEMP_ID_ECK0201B002 = "ECK0201B002";
	/** テンプレートID(連絡先(コンテンツ用メールアドレス)一覧照会明細) */
	private static final String TEMP_ID_DTL_ECK0201B002 = ECK0201B002CBSMsg.ECK0201B002CBSMSG1LIST;
	/** IN項目リスト(連絡先(コンテンツ用メールアドレス)一覧照会) */
	private static final List<String> IN_LIST_ECK0201B002 = Arrays.asList(ECK0201B002CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(連絡先(コンテンツ用メールアドレス)一覧照会) */
	private static final String ERR_ECK0201B002 = ECK0201B002CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(連絡先(コンテンツ用メールアドレス)一覧照会) */
	private static final String TEMP_TEMP_KEY_ECK0201B002 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0201B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0011A010_お客様一意照会SC ■□ */
	/** テンプレートID(お客様一意照会) */
	private static final String TEMP_ID_ECK0011A010 = "ECK0011A010";
	/** テンプレートID(お客様一意照会明細) */
	private static final String TEMP_ID_DTL_ECK0011A010 = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	/** IN項目リスト(お客様一意照会) */
	private static final List<String> IN_LIST_ECK0011A010 = Arrays.asList(ECK0011A010CBSMsg.KEY_SYSID, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(お客様一意照会) */
	private static final String ERR_ECK0011A010 = ECK0011A010CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(お客様一意照会) */
	private static final String TEMP_TEMP_KEY_ECK0011A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0011A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141B002_オプトインメール一覧照会SC ■□ */
	/** テンプレートID(オプトインメール一覧照会) */
	private static final String TEMP_ID_ECK0141B002 = "ECK0141B002";
	/** テンプレートID(オプトインメール一覧照会明細) */
	private static final String TEMP_ID_DTL_ECK0141B002 = ECK0141B002CBSMsg.ECK0141B002CBSMSG1LIST;
	/** IN項目リスト(オプトインメール一覧照会) */
	private static final List<String> IN_LIST_ECK0141B002 = Arrays.asList(ECK0141B002CBSMsg.KEY_OPE_YMD);
	/** 関連チェックエラー項目(オプトインメール一覧照会) */
	private static final String ERR_ECK0141B002 = ECK0141B002CBSMsg.KEY_OPE_YMD_ERR;
	/** SC実行結果取得キー(オプトインメール一覧照会) */
	private static final String TEMP_TEMP_KEY_ECK0141B002 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0141B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141D010_オプトインメール受信設定登録SC ■□ */
	/** テンプレートID(オプトインメール受信設定登録) */
	private static final String TEMP_ID_ECK0141D010 = "ECK0141D010";
	/** テンプレートID(オプトインメール受信設定登録明細) */
	private static final String TEMP_ID_DTL_ECK0141D010 = null;
	/** IN項目リスト(オプトインメール受信設定登録) */
	private static final List<String> IN_LIST_ECK0141D010 = Arrays.asList(ECK0141D010CBSMsg.OPTINM_NO, ECK0141D010CBSMsg.SYSID,
			ECK0141D010CBSMsg.MLAD, ECK0141D010CBSMsg.RCV_DIV, ECK0141D010CBSMsg.RCV_SETTE_YMD, ECK0141D010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(オプトインメール受信設定登録) */
	private static final String ERR_ECK0141D010 = ECK0141D010CBSMsg.OPTINM_NO_ERR;
	/** SC実行結果取得キー(オプトインメール受信設定登録) */
	private static final String TEMP_TEMP_KEY_ECK0141D010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0141D010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0251C010_オプトインメール受信設定ワーク更新SC ■□ */
	/** テンプレートID(オプトインメール受信設定ワーク更新) */
	private static final String TEMP_ID_ECK0251C010 = "ECK0251C010";
	/** テンプレートID(オプトインメール受信設定ワーク更新明細) */
	private static final String TEMP_ID_DTL_ECK0251C010 = null;
	/** IN項目リスト(オプトインメール受信設定ワーク更新) */
	private static final List<String> IN_LIST_ECK0251C010 = Arrays.asList(ECK0251C010CBSMsg.OPTINM_RCVST_WK_NO,
			ECK0251C010CBSMsg.SHOSAJI_RRKS_MLAD, ECK0251C010CBSMsg.WEB_ACCSS_NSKEY_NO, ECK0251C010CBSMsg.MAIL_TTU_CFM_CD, 
			ECK0251C010CBSMsg.RCV_DIV, ECK0251C010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(オプトインメール受信設定ワーク更新) */
	private static final String ERR_ECK0251C010 = ECK0251C010CBSMsg.OPTINM_RCVST_WK_NO_ERR;

	/* ■□ ECK0201D010_連絡先登録SC ■□ */
	/** テンプレートID(連絡先登録) */
	private static final String TEMP_ID_ECK0201D010 = "ECK0201D010";
	/** テンプレートID(連絡先登録明細) */
	private static final String TEMP_ID_DTL_ECK0201D010 = null;
	/** IN項目リスト(連絡先登録) */
	private static final List<String> IN_LIST_ECK0201D010 = Arrays.asList(ECK0201D010CBSMsg.SYSID, ECK0201D010CBSMsg.RRK_WAY_CD,
			ECK0201D010CBSMsg.RRKS_SBT_CD, ECK0201D010CBSMsg.RRKS_BUNRUI_CD, ECK0201D010CBSMsg.MLAD, ECK0201D010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(連絡先登録) */
	private static final String ERR_ECK0201D010 = ECK0201D010CBSMsg.SYSID_ERR;

	/* ■□ ECK0201C030_連絡先メールアドレス本登録SC ■□ */
	/** テンプレートID(連絡先メールアドレス本登録) */
	private static final String TEMP_ID_ECK0201C030 = "ECK0201C030";
	/** テンプレートID(連絡先メールアドレス本登録明細) */
	private static final String TEMP_ID_DTL_ECK0201C030 = null;
	/** IN項目リスト(連絡先メールアドレス本登録) */
	private static final List<String> IN_LIST_ECK0201C030 = Arrays.asList(ECK0201C030CBSMsg.RRKS_NO, ECK0201C030CBSMsg.MLAD,
			ECK0201C030CBSMsg.MLAD_CHGE_YMD, ECK0201C030CBSMsg.RSV_APLY_YMD, ECK0201C030CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(連絡先メールアドレス本登録) */
	private static final String ERR_ECK0201C030 = ECK0201C030CBSMsg.RRKS_NO_ERR;

	/* ■□ IN項目 ■□ */
	/** IN：Webアクセス認証キー */
	private static final String IN_WEB_ACCSS_NSKEY = "in_web_accss_nskey";
	/** 引継ぎSYSID */
	private static final String HKTG_SYSID = "hktg_sysid";
	/** 引継ぎメールアドレス */
	private static final String HKTG_MLAD = "hktg_mlad";
	/** 引継ぎ連絡先番号(コンテンツメールアドレス) */
	private static final String HKTG_RRKS_NO_CONT_MLAD = "hktg_rrks_no_cont_mlad";
	/** 最終更新年月日時分秒(お客様) */
	private static final String HKTG_CUST_LAST_UPD_DTM = "hktg_cust_last_upd_dtm";
	/** オプトインメール受信設定ワーク更新フラグ */
	private static final String OPTINM_WK_CHG_FLG = "optinm_wk_chg_flg";

	/* ■□ OUT項目 ■□ */
	/** IN：処理結果区分 */
	private static final String OUT_SHORI_RSLT_KBN = "shori_rslt_kbn";

	/* ■□ その他 ■□ */
	/** Ｗｅｂアクセス認証キー種別コード 02 */
	private static final String WEB_ACCSS_NSKEY_SBT_CD_02 = "02";
	/** メール到達確認コード 003：確認済 */
	private static final String MAIL_TTU_CFM_CD_003 = "003";
	/** 処理結果区分 0：オプトインメール受信設定登録完了 */
	private static final String SHORI_RSLT_KBN_0 = "0";
	/** 処理結果区分 1：有効なサービスの契約が存在しない */
	private static final String SHORI_RSLT_KBN_1 = "1";
	/** 処理結果区分 2：URLの有効期限が切れている */
	private static final String SHORI_RSLT_KBN_2 = "2";
	/** 処理結果区分 3：既にオプトイン情報が存在する */
	private static final String SHORI_RSLT_KBN_3 = "3";
// ANK-3609-00-00 ADD START
	/** オプトインメール番号 101:ＨＴＭＬメールの受信 */
	private static final String OPTINM_NO_HTMLMAIL = "101";
// ANK-3609-00-00 ADD END

	/** 対象外サービス契約ステータス */
	private static final List<String> TG_OUT_SVC_KEI_STAT_LIST = Arrays.asList(JFUStrConst.CD00037_910, JFUStrConst.CD00037_920);

	/**
	 * オプトインメール情報チェック登録処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// リクエストパラメータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		if (inMap == null || inMap.size() == 0)
		{
			// 情報が存在しない場合
			return param;
		}

		//***************************************************************************
		//■チェック処理
		//***************************************************************************

		// ●Webアクセス認証キー一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_EZM0511B001);
		// 上りマッピング
		setEZM0511B001(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EZM0511B001, TEMP_ID_DTL_EZM0511B001, IN_LIST_EZM0511B001, ERR_EZM0511B001);
		// 結果取得
		List<HashMap> eZM0511B001List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0511B001), TEMP_ID_DTL_EZM0511B001);

		// ★Webアクセス認証キーチェック
		if (eZM0511B001List == null || eZM0511B001List.size() == 0)
		{
			// Webアクセス認証キーが存在しない場合
			inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_3);
			return param;
		}

		// SYSID取得
		String sysid = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0511B001), TEMP_ID_DTL_EZM0511B001,
				EZM0511B001CBSMsg1List.SYSID, 0);
		inMap.put(HKTG_SYSID, sysid);

		// メールアドレス取得
		String mlad = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0511B001), TEMP_ID_DTL_EZM0511B001,
				EZM0511B001CBSMsg1List.SENDS_MLAD, 0);
		inMap.put(HKTG_MLAD, mlad);

		// ●サービス契約一覧照会（SYSID）
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_EKK0081B002);
		// 上りマッピング
		setEKK0081B002(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081B002, TEMP_ID_DTL_EKK0081B002, IN_LIST_EKK0081B002, ERR_EKK0081B002);
		// 結果取得
		List<HashMap> eKK0081B002List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0081B002), TEMP_ID_DTL_EKK0081B002);

		// ★サービス契約チェック
		if (!chkSvcKei(eKK0081B002List))
		{
			// 有効なサービス契約が存在しない場合
			inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_1);
			return param;
		}

		// ★Webアクセス認証キー有効期限チェック
		String ykKigenDtm = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EZM0511B001), TEMP_ID_DTL_EZM0511B001,
				EZM0511B001CBSMsg1List.YK_KIGEN_DTM, 0);

		if (!JFUBPCommon.isNull(ykKigenDtm) && ykKigenDtm.compareTo(JFUBPCommon.getSysDateTimeStamp()) < 0)
		{
			// Webアクセス認証キーの有効期限が切れている場合
			inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_2);
			return param;
		}

		// ●オプトインメール受信設定一覧照会(SYSID)２
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_ECK0141B005);
		// 上りマッピング
		setECK0141B005(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0141B005, TEMP_ID_DTL_ECK0141B005, IN_LIST_ECK0141B005, ERR_ECK0141B005);
		// 結果取得
		List<HashMap> eCK0141B005List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0141B005), TEMP_ID_DTL_ECK0141B005);

		// ●連絡先(コンテンツ用メールアドレス)一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_ECK0201B002);
		// 上りマッピング
		setECK0201B002(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0201B002, TEMP_ID_DTL_ECK0201B002, IN_LIST_ECK0201B002, ERR_ECK0201B002);
		// 結果取得
		List<HashMap> eCK0201B002List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0201B002), TEMP_ID_DTL_ECK0201B002);

		// ★オプトインメール受信設定と連絡先(コンテンツ用メールアドレス)の存在チェック
		if (eCK0141B005List != null && eCK0141B005List.size() > 0
				&& eCK0201B002List != null && eCK0201B002List.size() > 0)
		{
			// オプトインメール受信設定と連絡先(コンテンツ用メールアドレス)が存在する場合
			inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_3);
			return param;
		}

		// ●オプトインメール受信設定ワーク一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_ECK0251B010);
		// 上りマッピング
		setECK0251B010(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0251B010, TEMP_ID_DTL_ECK0251B010, IN_LIST_ECK0251B010, ERR_ECK0251B010);
		// 結果取得
		List<HashMap> eCK0251B010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0251B010), TEMP_ID_DTL_ECK0251B010);

		if (!chkOptinmRcvstWk(eCK0251B010List))
		{
			// 有効なオプトインメール受信設定ワークが存在しない場合
			inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_3);
			return param;
		}

		//***************************************************************************
		//■登録処理
		//***************************************************************************

		// ●お客様一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_ECK0011A010);
		// 上りマッピング
		setECK0011A010(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0011A010, TEMP_ID_DTL_ECK0011A010, IN_LIST_ECK0011A010, ERR_ECK0011A010);
		// 結果取得
		List<HashMap> eCK0011A010List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0011A010), TEMP_ID_DTL_ECK0011A010);

		if (eCK0011A010List == null || eCK0011A010List.size() == 0)
		{
			// お客様が存在しない場合
			inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_3);
			return param;
		}

		// 最終更新年月日時分秒(お客様)
		String custLastUpdDtm = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0011A010), TEMP_ID_DTL_ECK0011A010,
				ECK0011A010CBSMsg1List.LAST_UPD_DTM, 0);
		inMap.put(HKTG_CUST_LAST_UPD_DTM, custLastUpdDtm);

		// ★オプトインメール受信設定の登録
		// OM-2019-0001299 MOD START
//		addOptinmJushinSettei(handle, param, fixedText, eCK0251B010List);
		addOptinmJushinSettei(handle, param, fixedText, eCK0251B010List, eCK0141B005List);
		// OM-2019-0001299 MOD END

		// ★連絡先の登録変更処理
		addChgRrks(handle, param, fixedText, eCK0201B002List);

		// オプトインメール受信設定登録完了
		inMap.put(OUT_SHORI_RSLT_KBN, SHORI_RSLT_KBN_0);

		return param;
	}

	/**
	 * チェック処理（共通処理）です。
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * Webアクセス認証キー一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setEZM0511B001(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿Ｗｅｂアクセス認証キー種別コード
		inMap.put(EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY_SBT_CD, WEB_ACCSS_NSKEY_SBT_CD_02);
		// ＫＥＹ＿Ｗｅｂアクセス認証キー
		inMap.put(EZM0511B001CBSMsg.KEY_WEB_ACCSS_NSKEY, (String)inMap.get(IN_WEB_ACCSS_NSKEY));
	}

	/**
	 * サービス契約一覧照会（SYSID）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setEKK0081B002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿SYSID
		inMap.put(EKK0081B002CBSMsg.KEY_SYSID, (String)inMap.get(HKTG_SYSID));
	}

	/**
	 * オプトインメール受信設定ワーク一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0251B010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿ＳＹＳＩＤ
		inMap.put(ECK0251B010CBSMsg.KEY_SYSID, (String)inMap.get(HKTG_SYSID));
	}

	/**
	 * オプトインメール受信設定一覧照会(SYSID)２の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0141B005(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿SYSID
		inMap.put(ECK0141B005CBSMsg.KEY_SYSID, (String)inMap.get(HKTG_SYSID));
		// ＫＥＹ＿メールアドレス
		inMap.put(ECK0141B005CBSMsg.KEY_MLAD, (String)inMap.get(HKTG_MLAD));
	}

	/**
	 * 連絡先(コンテンツ用メールアドレス)一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0201B002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ＫＥＹ＿SYSID
		inMap.put(ECK0201B002CBSMsg.KEY_SYSID, (String)inMap.get(HKTG_SYSID));
	}

	/**
	 * お客様一意照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0011A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿SYSID
		inMap.put(ECK0011A010CBSMsg.KEY_SYSID, (String)inMap.get(HKTG_SYSID));
		// ＫＥＹ＿予約適用年月日
		inMap.put(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * オプトインメール一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0141B002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);
		// ＫＥＹ＿運用年月日
		inMap.put(ECK0141B002CBSMsg.KEY_OPE_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * オプトインメール受信設定登録の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param optinmWkMap オプトインメール受信設定ワーク情報
	 * @throws RequestParameterException
	 */
	private void setECK0141D010(IRequestParameterReadWrite param, String fixedText, HashMap optinmWkMap) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// オプトインメール番号
		inMap.put(ECK0141D010CBSMsg.OPTINM_NO, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.OPTINM_NO));
		// SYSID
		inMap.put(ECK0141D010CBSMsg.SYSID, (String)inMap.get(HKTG_SYSID));
		// メールアドレス
		inMap.put(ECK0141D010CBSMsg.MLAD, (String)inMap.get(HKTG_MLAD));
		// 受信区分
		inMap.put(ECK0141D010CBSMsg.RCV_DIV, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.RCV_DIV));
		// 受信設定年月日
		inMap.put(ECK0141D010CBSMsg.RCV_SETTE_YMD, JFUBPCommon.getOpeDate(null));
		// 更新年月日時分秒(更新前)
		inMap.put(ECK0141D010CBSMsg.UPD_DTM_BF, (String)inMap.get(HKTG_CUST_LAST_UPD_DTM));
	}

	/**
	 * オプトインメール受信設定ワーク更新の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @param optinmWkMap オプトインメール受信設定ワーク情報
	 * @throws RequestParameterException
	 */
	private void setECK0251C010(IRequestParameterReadWrite param, String fixedText, HashMap optinmWkMap) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// オプトインメール受信設定ワーク番号
		inMap.put(ECK0251C010CBSMsg.OPTINM_RCVST_WK_NO, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.OPTINM_RCVST_WK_NO));
		// 照査時連絡先メールアドレス
		inMap.put(ECK0251C010CBSMsg.SHOSAJI_RRKS_MLAD, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.SHOSAJI_RRKS_MLAD));
		// Webアクセス認証キー番号
		inMap.put(ECK0251C010CBSMsg.WEB_ACCSS_NSKEY_NO, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.WEB_ACCSS_NSKEY_NO));
		// メール到達確認コード
		inMap.put(ECK0251C010CBSMsg.MAIL_TTU_CFM_CD, MAIL_TTU_CFM_CD_003);
		// 受信区分
		inMap.put(ECK0251C010CBSMsg.RCV_DIV, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.RCV_DIV));
		// 更新年月日時分秒(更新前)
		inMap.put(ECK0251C010CBSMsg.UPD_DTM_BF, (String)optinmWkMap.get(ECK0251B010CBSMsg1List.UPD_DTM));
	}

	/**
	 * 連絡先登録の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0201D010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// SYSID
		inMap.put(ECK0201D010CBSMsg.SYSID, (String)inMap.get(HKTG_SYSID));
		// 連絡方法コード
		inMap.put(ECK0201D010CBSMsg.RRK_WAY_CD, JFUStrConst.CD00790_001);
		// 連絡先種別コード
		inMap.put(ECK0201D010CBSMsg.RRKS_SBT_CD, JFUStrConst.CD00254_1);
		// 連絡先分類コード
		inMap.put(ECK0201D010CBSMsg.RRKS_BUNRUI_CD, JFUStrConst.CD00871_1);
		// メールアドレス
		inMap.put(ECK0201D010CBSMsg.MLAD, (String)inMap.get(HKTG_MLAD));
		// 更新年月日時分秒(更新前)
		inMap.put(ECK0201D010CBSMsg.UPD_DTM_BF, (String)inMap.get(HKTG_CUST_LAST_UPD_DTM));
	}

	/**
	 * 連絡先メールアドレス本登録の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText 固定文字列
	 * @throws RequestParameterException
	 */
	private void setECK0201C030(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// 連絡先番号
		inMap.put(ECK0201C030CBSMsg.RRKS_NO, (String)inMap.get(HKTG_RRKS_NO_CONT_MLAD));
		// メールアドレス
		inMap.put(ECK0201C030CBSMsg.MLAD, (String)inMap.get(HKTG_MLAD));
		// メールアドレス変更年月日
		inMap.put(ECK0201C030CBSMsg.MLAD_CHGE_YMD, JFUBPCommon.getOpeDate(null));
		// 予約適用年月日
		inMap.put(ECK0201C030CBSMsg.RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
		// 更新年月日時分秒(更新前)
		inMap.put(ECK0201C030CBSMsg.UPD_DTM_BF, (String)inMap.get(HKTG_CUST_LAST_UPD_DTM));
	}

	/**
	 * サービス契約のチェック処理です。
	 * 
	 * <br>
	 * @param svcKeiList サービス契約リスト
	 * @return チェック結果
	 */
	private boolean chkSvcKei(List<HashMap> svcKeiList)
	{
		boolean result = false;

		if (svcKeiList == null || svcKeiList.size() == 0)
		{
			// リストが存在しない場合
			return false;
		}

		for (int i = 0; i < svcKeiList.size(); i++)
		{
			HashMap childMap = svcKeiList.get(i);

			// サービス契約ステータス
			String svcKeiStat = (String)childMap.get(EKK0081B002CBSMsg1List.SVC_KEI_STAT);

			if (!TG_OUT_SVC_KEI_STAT_LIST.contains(svcKeiStat))
			{
				// 1つでも有効なサービス契約が存在する場合
				result = true;
				break;
			}
		}

		return result;
	}

	/**
	 * オプトインメール受信設定ワークの存在チェック処理です。
	 * 
	 * <br>
	 * @param optinmRcvstWkList オプトインメール受信設定ワークリスト
	 * @return 判定結果
	 */
	private boolean chkOptinmRcvstWk(List<HashMap> optinmRcvstWkList)
	{
		boolean res = false;

		if (optinmRcvstWkList == null || optinmRcvstWkList.size() == 0)
		{
			// リストが存在しない場合
			return res;
		}

		for (int i = 0; i < optinmRcvstWkList.size(); i++)
		{
			HashMap wkMap = optinmRcvstWkList.get(i);
			if (wkMap == null || wkMap.size() == 0)
			{
				continue;
			}

			String mailTtuCfmCd = (String)wkMap.get(ECK0251C010CBSMsg.MAIL_TTU_CFM_CD);

			if (!MAIL_TTU_CFM_CD_003.equals(mailTtuCfmCd))
			{
				// メール到達確認コードの「003：確認済」以外が1つでも存在する場合
				res = true;
				break;
			}
		}

		return res;
	}

	/**
	 * オプトインメール受信設定登録処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param eCK0251B010List オプトインメール受信設定ワークリスト
	 * @param eCK0141B005List オプトインメール受信設定一覧
	 * @throws Exception 例外
	 */
// OM-2019-0001299 ADD START
//	private void addOptinmJushinSettei(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, List<HashMap> eCK0251B010List)
	private void addOptinmJushinSettei(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, List<HashMap> eCK0251B010List, List<HashMap> eCK0141B005List)
// OM-2019-0001299 ADD END
		throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// オプトインメール受信設定ワークの集約情報取得
		HashMap optinmWkInfoMap = getOptinmSetteiJushinWkInfo(eCK0251B010List);

		// オプトインメール一覧照会
		List<HashMap> eCK0141B002List = getOptinmList(handle, param, fixedText);

		// 登録リスト
		List<HashMap> addList = new ArrayList();

		// 登録リスト設定処理
		if (eCK0141B002List != null && eCK0141B002List.size() > 0)
		{
			// 結果が存在する場合
			for (int i = 0; i < eCK0141B002List.size(); i++)
			{
				HashMap eCK0141B002Map = eCK0141B002List.get(i);
				if (eCK0141B002Map == null || eCK0141B002Map.size() == 0)
				{
					// 情報が存在しない場合
					continue;
				}

				HashMap optinmWkMap = new HashMap();
				String optinmNo = (String)eCK0141B002Map.get(ECK0141B002CBSMsg1List.OPTINM_NO);

				if (optinmWkInfoMap.containsKey(optinmNo) && optinmWkInfoMap.get(optinmNo) != null)
				{
					// ワークに情報が存在する場合、ワーク情報とワークを更新するように設定する
					optinmWkMap = (HashMap)optinmWkInfoMap.get(optinmNo);
					optinmWkMap.put(OPTINM_WK_CHG_FLG, JFUStrConst.CD00001_1);
				}
				else
				{
					// ワークに情報が存在しない場合、マスタを主として受信しないで設定する(ワークの更新はなし)
					optinmWkMap.put(ECK0251B010CBSMsg1List.OPTINM_NO, optinmNo);
// ANK-3609-00-00 MOD START
					// オプトインメール番号「101:ＨＴＭＬメールの受信」の場合は「受信する」で設定
					if (OPTINM_NO_HTMLMAIL.equals(optinmNo))
					{
						optinmWkMap.put(ECK0251B010CBSMsg1List.RCV_DIV, JFUStrConst.CD00263_1);
					}
					else
					{
// OM-2019-0001299 MOD START
//						optinmWkMap.put(ECK0251B010CBSMsg1List.RCV_DIV, JFUStrConst.CD00263_0);
						String rcvDiv = getOptinmSetteiJushinRcvDiv(optinmNo, eCK0141B005List, (String)eCK0141B002Map.get(ECK0141B002CBSMsg1List.SHK_VALUE_FLG));
						optinmWkMap.put(ECK0251B010CBSMsg1List.RCV_DIV, rcvDiv);
						
// OM-2019-0001299 MOD END
					}
// ANK-3609-00-00 MOD END
					optinmWkMap.put(OPTINM_WK_CHG_FLG, JFUStrConst.CD00001_0);
				}

				addList.add(optinmWkMap);
			}
		}

		// 登録処理
		for (int i = 0; i < addList.size(); i++)
		{
			HashMap optinmWkMap = addList.get(i);

			if (optinmWkMap == null || optinmWkMap.size() == 0)
			{
				// 情報が取得できない場合
				continue;
			}

			// ●オプトインメール受信設定登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_LIST_ECK0141D010);
			// 上りマッピング
			setECK0141D010(param, fixedText, optinmWkMap);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_ECK0141D010, TEMP_ID_DTL_ECK0141D010, IN_LIST_ECK0141D010, ERR_ECK0141D010);

			String wkAddFlg = (String)optinmWkMap.get(OPTINM_WK_CHG_FLG);

			if (JFUStrConst.CD00001_1.equals(wkAddFlg))
			{
				// オプトインメール受信設定ワーク更新フラグが「1」の場合

				// ●オプトインメール受信設定ワーク更新
				// ユーザデータ初期化
				initData(param, fixedText, IN_LIST_ECK0251C010);
				// 上りマッピング
				setECK0251C010(param, fixedText, optinmWkMap);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_ECK0251C010, TEMP_ID_DTL_ECK0251C010, IN_LIST_ECK0251C010, ERR_ECK0251C010);
			}

			// 最終更新年月日時分秒の更新
			String custLastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0141D010), ECK0141D010CBSMsg.UPD_DTM);
			inMap.put(HKTG_CUST_LAST_UPD_DTM, custLastUpdDtm);
		}
	}

	/**
	 * オプトインメール受信設定ワークの集約情報を取得します。
	 * 
	 * <br>
	 * @param eCK0251B010List
	 * @return 集約結果
	 */
	private HashMap<String, Object> getOptinmSetteiJushinWkInfo(List<HashMap> eCK0251B010List)
	{
		// オプトインメール受信設定ワークの情報集約
		HashMap optinmWkInfoMap = new HashMap();
		for (int i = 0; i < eCK0251B010List.size(); i++)
		{
			HashMap optinmWkChildMap = eCK0251B010List.get(i);
			if (optinmWkChildMap == null || optinmWkChildMap.size() == 0)
			{
				// オプトインメール受信設定ワークが存在しない場合
				continue;
			}

			if (MAIL_TTU_CFM_CD_003.equals(optinmWkChildMap.get((String)ECK0251B010CBSMsg1List.MAIL_TTU_CFM_CD)))
			{
				// メール到達確認コードが「003：確認済」である場合、読みとばす
				continue;
			}

			// キー：オプトインメール受信設定ワーク.オプトインメール番号
			// 値　：オプトインメール受信設定ワークマップ
			optinmWkInfoMap.put(optinmWkChildMap.get(ECK0251B010CBSMsg1List.OPTINM_NO), optinmWkChildMap);
		}

		return optinmWkInfoMap;
	}

	/**
	 * オプトインメール一覧照会処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return オプトインメールリスト
	 * @throws Exception 例外
	 */
	private List<HashMap> getOptinmList(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●ECK0141B002_オプトインメール一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_LIST_ECK0141B002);
		// 上りマッピング
		setECK0141B002(param, fixedText);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0141B002, TEMP_ID_DTL_ECK0141B002, IN_LIST_ECK0141B002, ERR_ECK0141B002);
		// 結果取得
		List<HashMap> eCK0141B002List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_ECK0141B002), TEMP_ID_DTL_ECK0141B002);

		return eCK0141B002List;
	}

	/**
	 * 連絡先の登録変更処理です。
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param eCK0201B002List 連絡先(コンテンツ用メールアドレス)リスト
	 * @throws Exception 例外
	 */
	private void addChgRrks(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, List<HashMap> eCK0201B002List)
		throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 連絡先(コンテンツ用メールアドレス)の登録変更
		if (eCK0201B002List == null || eCK0201B002List.size() == 0)
		{
			// 連絡先(コンテンツ用メールアドレス)が存在しない場合

			// ●連絡先登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_LIST_ECK0201D010);
			// 上りマッピング
			setECK0201D010(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMP_ID_ECK0201D010, TEMP_ID_DTL_ECK0201D010, IN_LIST_ECK0201D010, ERR_ECK0201D010);
		}
		else
		{
			// 連絡先(コンテンツ用メールアドレス)が存在する場合

			// コンテンツ用メールアドレスは1つだけの為、0番目を取得
			HashMap eCK0201B002Map = eCK0201B002List.get(0);

			if (eCK0201B002Map != null && eCK0201B002Map.size() > 0)
			{
				// 連絡先番号(コンテンツメールアドレス)の取得
				String rrksNoContMlad = (String)eCK0201B002Map.get(ECK0201B002CBSMsg1List.RRKS_NO);
				inMap.put(HKTG_RRKS_NO_CONT_MLAD, rrksNoContMlad);

				// ●連絡先メールアドレス本登録
				// ユーザデータ初期化
				initData(param, fixedText, IN_LIST_ECK0201C030);
				// 上りマッピング
				setECK0201C030(param, fixedText);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_ECK0201C030, TEMP_ID_DTL_ECK0201C030, IN_LIST_ECK0201C030, ERR_ECK0201C030);
			}
		}
	}

	// OM-2019-0001299 ADD START
	/**
	 * オプトインメール受信設定に登録する受信区分の取得処理
	 * 
	 * <br>
	 * @param optinmNo オプトインメール番号
	 * @param eCK0141B005List オプトインメール受信設定リスト
	 * @param shkValueFlg マスタ設定値
	 * @throws Exception 例外
	 */
	private String getOptinmSetteiJushinRcvDiv(String optinmNo, List<HashMap> eCK0141B005List, String shkValueFlg)
		throws Exception
	{
		
		// オプトインメール設定の存在チェック
		if (eCK0141B005List != null && eCK0141B005List.size() > 0)
		{
			for (int i = 0; i < eCK0141B005List.size(); i++)
			{
				HashMap eCK0141B005Map = eCK0141B005List.get(i);
				if (optinmNo.equals((String)eCK0141B005Map.get(ECK0141B005CBSMsg1List.OPTINM_NO)))
				{
					// オプトインメール設定が存在する場合
					// 現在設定されている値を設定
					return (String)eCK0141B005Map.get(ECK0141B005CBSMsg1List.RCV_DIV);
				}
			}
		}
		// オプトインメール設定が存在しない場合
		// マスタ設定値を設定
		return shkValueFlg;
	}
	// OM-2019-0001299 ADD END
}
