/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUOptinMailRsvSetAddCC
*   ソースファイル名：JFUOptinMailRsvSetAddCC.java
*   作成者          ：富士通
*   日付            ：2013年03月05日
*＜機能概要＞
*   オプトインメール受信設定の登録処理を行うCC
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v5.00       2013/03/07   FJ）谷本    フロント「オプトインメール受信設定」設定漏れ対応
*   v9.00       2014/07/30   FJ）中谷    変更【OM-2014-0002586】オプトインメール受信設定登録時の排他エラー不具合対応
*   
**********************************************************************/

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 com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

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.ECK0141B020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0141C030CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0141D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;

/**
 * オプトインメール受信設定の登録処理を行うCC
 * <BR>
 * @ author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUOptinMailRsvSetAddCC extends JFUBaseCC
{

	/** IN項目：オプションサービス契約解約リスト */
	private static final String IN_OP_SVC_KEI_DSL_LIST = "op_svc_kei_dsl_list";
	/** IN項目: SYSID */
	private static final String IN_PARAM_CMP_SYSID = "sysId";
	/** IN項目: メールアドレス（変更前） */
	private static final String IN_PARAM_CMP_MLAD_BF = "mlad_bf";
	/** IN項目: メールアドレス（変更後） */
	private static final String IN_PARAM_CMP_MLAD_AF = "mlad_af";
	/** IN項目: サービス契約番号 */
	private static final String IN_PARAM_CMP_SVC_KEI_NO = "svc_kei_no";

	/** オプトインメール番号 */
	private static final String OPTINM_NO = "optinm_no";
	/** 受信区分 */
	private static final String RCV_DIV = "rcv_div";
	/** メールアドレス */
	private static final String MLAD = "mlad";
	/** 初期値フラグ */
	private static final String SHK_VALUE_FLG = "shk_value_flg";

	/* ■□ ECK0011A010_お客様一意照会 ■□ */
	/** テンプレートID(ECK0011A010_お客様一意照会) */
	private static final String TEMPLATE_ID_ECK0011A010 = "ECK0011A010";
	/** テンプレートID(ECK0011A010_お客様一意照会明細) */
	private static final String TEMPLATE_ID_LIST_ECK0011A010 = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	/** IN項目リスト(ECK0011A010_お客様一意照会) */
	private static final List<String> IN_COLUMN_LIST_ECK0011A010 =
			Arrays.asList(ECK0011A010CBSMsg.KEY_SYSID, ECK0011A010CBSMsg.KEY_GENE_ADD_DTM, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）) */
	private static final String ERROR_COLUMN_ECK0011A010 = ECK0011A010CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(ECK0011A010_お客様一意照会) */
	private static final String TEMP_TEMPLATE_KEY_ECK0011A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECK0011A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用） ■□ */
	/** テンプレートID(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）) */
	private static final String TEMPLATE_ID_ECK0141B020 = "ECK0141B020";
	/** テンプレートID(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）明細) */
	private static final String TEMPLATE_ID_LIST_ECK0141B020 = ECK0141B020CBSMsg.ECK0141B020CBSMSG1LIST;
	/** IN項目リスト(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）) */
	private static final List<String> IN_COLUMN_LIST_ECK0141B020 = Arrays.asList(ECK0141B020CBSMsg.KEY_SYSID);
	/** 関連チェックエラー項目(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）) */
	private static final String ERROR_COLUMN_ECK0141B020 = ECK0141B020CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）) */
	private static final String TEMP_TEMPLATE_KEY_ECK0141B020 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECK0141B020 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141C030_オプトインメール受信設定無効 ■□ */
	/** テンプレートID(ECK0141C030_オプトインメール受信設定無効) */
	private static final String TEMPLATE_ID_ECK0141C030 = "ECK0141C030";
	/** IN項目リスト(ECK0141C030_オプトインメール受信設定無効) */
	private static final List<String> IN_COLUMN_LIST_ECK0141C030 =
			Arrays.asList(ECK0141C030CBSMsg.OPTINM_NO, ECK0141C030CBSMsg.SYSID, ECK0141C030CBSMsg.MLAD, ECK0141C030CBSMsg.UPD_DTM_BF);
	/** SC実行結果取得キー(ECK0141C030_オプトインメール受信設定無効) */
	private static final String TEMP_TEMPLATE_KEY_ECK0141C030 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECK0141C030 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141B002_オプトインメール一覧照会 ■□ */
	/** テンプレートID(ECK0141B002_オプトインメール一覧照会) */
	private static final String TEMPLATE_ID_ECK0141B002 = "ECK0141B002";
	/** テンプレートID(ECK0141B002_オプトインメール一覧照会明細) */
	private static final String TEMPLATE_ID_LIST_ECK0141B002 = ECK0141B002CBSMsg.ECK0141B002CBSMSG1LIST;
	/** IN項目リスト(ECK0141B002_オプトインメール一覧照会) */
	private static final List<String> IN_COLUMN_LIST_ECK0141B002 = Arrays.asList(ECK0141B002CBSMsg.KEY_OPE_YMD);
	/** 関連チェックエラー項目(ECK0141B002_オプトインメール一覧照会) */
	private static final String ERROR_COLUMN_ECK0141B002 = ECK0141B002CBSMsg.KEY_OPE_YMD;
	/** SC実行結果取得キー(ECK0141B002_オプトインメール一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_ECK0141B002 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECK0141B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ ECK0141D010_オプトインメール受信設定登録 ■□ */
	/** テンプレートID(ECK0141D010_オプトインメール受信設定登録) */
	private static final String TEMPLATE_ID_ECK0141D010 = "ECK0141D010";
	/** IN項目リスト(ECK0141D010_オプトインメール受信設定登録) */
	private static final List<String> IN_COLUMN_LIST_ECK0141D010 =
			Arrays.asList(ECK0141D010CBSMsg.OPTINM_NO, ECK0141D010CBSMsg.SYSID, ECK0141D010CBSMsg.MLAD, ECK0141D010CBSMsg.RCV_DIV,
					ECK0141D010CBSMsg.RCV_SETTE_YMD, ECK0141D010CBSMsg.UPD_DTM_BF);
	/** SC実行結果取得キー(ECK0141D010_オプトインメール受信設定登録) */
	private static final String TEMP_TEMPLATE_KEY_ECK0141D010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_ECK0141D010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0081A010_サービス契約一意照会 ■□ */
	/** テンプレートID(EKK0081A010_サービス契約一意照会) */
	private static final String TEMPLATE_ID_EKK0081A010 = "EKK0081A010";
	/** テンプレートID(EKK0081A010_サービス契約一意照会) */
	private static final String TEMPLATE_ID_LIST_EKK0081A010 = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** IN項目リスト(EKK0081A010_サービス契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0081A010 =
			Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(EKK0081A010_サービス契約一意照会) */
	private static final String ERROR_COLUMN_EKK0081A010 = EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(EKK0081A010_サービス契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0081A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0081A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * オプトインメール受信設定解約<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite delUpdOptinmRcvSette(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// 開始ログ
		outDebugLog("----- delUpdOptinmRcvSette Start  -----");

		//機能コード
		String funcCd = getFuncCode(param, fixedText);

		// ☆機能コード＝1（なにもしない)
		if (JPCModelConstant.FUNC_CD_1.equals(funcCd))
		{
			return param;
		}

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ○オプションサービス契約解約一覧取得
		ArrayList opSvcKeiDslList = (ArrayList)inMap.get(IN_OP_SVC_KEI_DSL_LIST);

		// INパラメータがなければエラーをスロー
		if (opSvcKeiDslList == null || opSvcKeiDslList.size() == 0)
		{
			// 終了ログ
			outDebugLog("----- delUpdOptinmRcvSette Error  -----");
			throw new SCCallException(String.valueOf(param.getControlMapData(SCControlMapKeys.RETURN_MESSAGE)), String.valueOf(RETURN_CODE_NORMAL),
					JPCModelConstant.RELATION_ERR);
		}

		// オプションサービス契約解約一覧の件数分、解約処理を行う。
		for (int i = 0; i < opSvcKeiDslList.size(); i++)
		{

			// オプションサービス契約解約情報取得
			HashMap opSvcKeiDslMap = (HashMap)opSvcKeiDslList.get(i);

			// ○IN項目: SYSID
			String inParamSysId = (String)opSvcKeiDslMap.get(IN_PARAM_CMP_SYSID);
			// ○IN項目: メールアドレス（変更前）
			String inParamMladBf = (String)opSvcKeiDslMap.get(IN_PARAM_CMP_MLAD_BF);

			// 更新年月日時分秒
			String updDtmBf = "";

			// ●ECK0011A010_お客様一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_ECK0011A010);
			// 上りマッピング
			setInMapECK0011A010(param, fixedText, inParamSysId);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0011A010, TEMPLATE_ID_LIST_ECK0011A010, IN_COLUMN_LIST_ECK0011A010,
					ERROR_COLUMN_ECK0011A010);
			// 更新年月日時分秒
			updDtmBf =
					getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0011A010), TEMPLATE_ID_LIST_ECK0011A010,
							ECK0011A010CBSMsg1List.LAST_UPD_DTM, 0);

			// ●ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_ECK0141B020);
			// 上りマッピング
			setInMapECK0141B020(param, fixedText, inParamSysId);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141B020, TEMPLATE_ID_LIST_ECK0141B020, IN_COLUMN_LIST_ECK0141B020,
					ERROR_COLUMN_ECK0141B020);

			List<String> mailInfoList = new ArrayList<String>();

			// ●ECK0141C030_オプトインメール受信設定無効
			for (HashMap mailMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141B020), TEMPLATE_ID_LIST_ECK0141B020))
			{
				// メールアドレスが異なる場合処理を行わない。
				if (!inParamMladBf.equals(mailMap.get(MLAD)))
				{
					continue;
				}
				//リストに含まれるかチェック
				if (mailInfoList.contains((String)mailMap.get(OPTINM_NO) + (String)mailMap.get(MLAD)))
				{
					continue;
				}

				// オプトインメール番号
				String optinmNo = (String)mailMap.get(OPTINM_NO);

				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_ECK0141C030);
				// 上りマッピング
				setInMapECK0141C030(param, fixedText, optinmNo, inParamSysId, inParamMladBf, updDtmBf);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141C030, BLANK, IN_COLUMN_LIST_ECK0141C030, BLANK);
				//

				// 更新年月日時分秒
				updDtmBf = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141C030), ECK0141C030CBSMsg.UPD_DTM);

				//リストに格納
				mailInfoList.add((String)mailMap.get(OPTINM_NO) + (String)mailMap.get(MLAD));
			}
		}

		// 終了ログ
		outDebugLog("----- delUpdOptinmRcvSette End  -----");

		return param;
	}

	/**
	 * オプトインメール受信設定登録更新<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	public IRequestParameterReadWrite addUpdOptinmRcvSette(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		//機能コード
		String funcCd = getFuncCode(param, fixedText);

		// ☆機能コード＝1（なにもしない)
		if (JPCModelConstant.FUNC_CD_1.equals(funcCd))
		{
			return param;
		}

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ○IN項目: SYSID
		String inParamSysId = (String)inMap.get(IN_PARAM_CMP_SYSID);
		// ○IN項目: メールアドレス（変更前）
		String inParamMladBf = (String)inMap.get(IN_PARAM_CMP_MLAD_BF);
		// ○IN項目: メールアドレス（変更後）
		String inParamMladAf = (String)inMap.get(IN_PARAM_CMP_MLAD_AF);
		// ○IN項目: サービス契約番号
		String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_CMP_SVC_KEI_NO);

		// 更新年月日時分秒
		String updDtmBf = "";

		// ☆機能コード＝4（ファミリー会員の場合) 
		if (JPCModelConstant.FUNC_CD_4.equals(funcCd))
		{
			// ●EKK0081A010_サービス契約一意照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_EKK0081A010);
			// 上りマッピング
			setInMapEKK0081A010(param, fixedText, inParamSvcKeiNo);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0081A010, TEMPLATE_ID_LIST_EKK0081A010, IN_COLUMN_LIST_EKK0081A010,
					ERROR_COLUMN_EKK0081A010);
			inParamSysId =
					getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0081A010), TEMPLATE_ID_LIST_EKK0081A010,
							EKK0081A010CBSMsg1List.SYSID, 0);
		}

		// ●ECK0011A010_お客様一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_ECK0011A010);
		// 上りマッピング
		setInMapECK0011A010(param, fixedText, inParamSysId);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0011A010, TEMPLATE_ID_LIST_ECK0011A010, IN_COLUMN_LIST_ECK0011A010,
				ERROR_COLUMN_ECK0011A010);
		// 更新年月日時分秒
		updDtmBf =
				getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0011A010), TEMPLATE_ID_LIST_ECK0011A010,
						ECK0011A010CBSMsg1List.LAST_UPD_DTM, 0);

		// ☆機能コード＝2（変更の場合) 無効処理の後に登録処理を行います。（受信区分の値は引き継ぎます。）
		if (JPCModelConstant.FUNC_CD_2.equals(funcCd) || JPCModelConstant.FUNC_CD_4.equals(funcCd))
		{
			// ●ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_ECK0141B020);
			// 上りマッピング
			setInMapECK0141B020(param, fixedText, inParamSysId);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141B020, TEMPLATE_ID_LIST_ECK0141B020, IN_COLUMN_LIST_ECK0141B020,
					ERROR_COLUMN_ECK0141B020);

			List<String> mailInfoList = new ArrayList<String>();

			// ●ECK0141C030_オプトインメール受信設定無効
			for (HashMap mailMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141B020), TEMPLATE_ID_LIST_ECK0141B020))
			{
				// メールアドレスが異なる場合処理を行わない。
				if (!inParamMladBf.equals(mailMap.get(MLAD)))
				{
					continue;
				}
				//リストに含まれるかチェック
				if (mailInfoList.contains((String)mailMap.get(OPTINM_NO) + (String)mailMap.get(MLAD)))
				{
					continue;
				}

				// オプトインメール番号
				String optinmNo = (String)mailMap.get(OPTINM_NO);

				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_ECK0141C030);
				// 上りマッピング
				setInMapECK0141C030(param, fixedText, optinmNo, inParamSysId, inParamMladBf, updDtmBf);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141C030, BLANK, IN_COLUMN_LIST_ECK0141C030, BLANK);
				//

				// 更新年月日時分秒
				updDtmBf = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141C030), ECK0141C030CBSMsg.UPD_DTM);

				//リストに格納
				mailInfoList.add((String)mailMap.get(OPTINM_NO) + (String)mailMap.get(MLAD));
			}

			List<String> mailInfoListTouroku = new ArrayList<String>();

			// ●ECK0141D010_オプトインメール受信設定登録
			for (HashMap mailMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141B020), TEMPLATE_ID_LIST_ECK0141B020))
			{
				// メールアドレスが異なる場合処理を行わない。
				if (!inParamMladBf.equals(mailMap.get(MLAD)))
				{
					continue;
				}
				//リストに含まれるかチェック
				if (mailInfoListTouroku.contains((String)mailMap.get(OPTINM_NO) + (String)mailMap.get(MLAD)))
				{
					continue;
				}

				// オプトインメール番号
				String optinmNo = (String)mailMap.get(OPTINM_NO);
				// 受信区分
				String rcvDiv = (String)mailMap.get(RCV_DIV);

				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_ECK0141D010);
				// 上りマッピング
				setInMapECK0141D010(param, fixedText, optinmNo, inParamSysId, inParamMladAf, rcvDiv, updDtmBf);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141D010, BLANK, IN_COLUMN_LIST_ECK0141D010, BLANK);
				// 更新年月日時分秒
				updDtmBf = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141D010), ECK0141D010CBSMsg.UPD_DTM);

				//リストに格納
				mailInfoListTouroku.add((String)mailMap.get(OPTINM_NO) + (String)mailMap.get(MLAD));
			}
		}

		// ☆機能コード＝3（新規の場合)  新規にオプトインメール登録処理を行います。
		if (JPCModelConstant.FUNC_CD_3.equals(funcCd))
		{
			// ●ECK0141B002_オプトインメール一覧照会
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_ECK0141B002);
			// 上りマッピング
			setInMapECK0141B002(param, fixedText);
			// サービスIF実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141B002, TEMPLATE_ID_LIST_ECK0141B002, IN_COLUMN_LIST_ECK0141B002,
					ERROR_COLUMN_ECK0141B002);

			// ●ECK0141D010_オプトインメール受信設定登録
			for (HashMap mailMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141B002), TEMPLATE_ID_LIST_ECK0141B002))
			{
				// オプトインメール番号
				String optinmNo = (String)mailMap.get(OPTINM_NO);
				// 受信区分
				String rcvDiv = (String)mailMap.get(SHK_VALUE_FLG);

				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_ECK0141D010);
				// 上りマッピング
				setInMapECK0141D010(param, fixedText, optinmNo, inParamSysId, inParamMladAf, rcvDiv, updDtmBf);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_ECK0141D010, BLANK, IN_COLUMN_LIST_ECK0141D010, BLANK);
				// 更新年月日時分秒
				updDtmBf = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_ECK0141D010), ECK0141D010CBSMsg.UPD_DTM);
			}
		}

		return param;
	}

	/**
	 * 上りマッピング項目設定(ECK0011A010_お客様一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapECK0011A010(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		// ＫＥＹ＿SYSID
		inMap.put(ECK0011A010CBSMsg.KEY_SYSID, sysId);
		// ＫＥＹ＿予約適用年月日
		inMap.put(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(ECK0141B020_オプトインメール受信設定一覧照会（PMP連携用）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapECK0141B020(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_3); // 3:オプトインメール受信設定一覧照会（全て）

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(ECK0141B020CBSMsg.KEY_SYSID, sysId);

	}

	/**
	 * 上りマッピング項目設定(ECK0141C030_オプトインメール受信設定無効)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param optinmNo オプトインメールの番号
	 * @param sysid SYSID
	 * @param mlad メールアドレス
	 * @param updDtmBf 更新年月日時分秒(更新前)
	 * @throws RequestParameterException
	 */
	private void setInMapECK0141C030(IRequestParameterReadWrite param, String fixedText, String optinmNo, String sysId, String mlad, String updDtmBf)
			throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1); // 1:チェック＆登録

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(ECK0141C030CBSMsg.OPTINM_NO, optinmNo); // オプトインメール番号
		inMap.put(ECK0141C030CBSMsg.SYSID, sysId); // SYSID
		inMap.put(ECK0141C030CBSMsg.MLAD, mlad); // メールアドレス
		inMap.put(ECK0141C030CBSMsg.UPD_DTM_BF, updDtmBf); // 更新年月日時分秒(更新前)

	}

	/**
	 * 上りマッピング項目設定(ECK0141B002_オプトインメール一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapECK0141B002(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2); // 2:オプトインメール一覧照会（非公開含む）

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(ECK0141B002CBSMsg.KEY_OPE_YMD, JFUBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(ECK0141D010_オプトインメール受信設定登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param optinmNo オプトインメールの番号
	 * @param sysid SYSID
	 * @param mlad メールアドレス
	 * @param rcvDiv 受信区分
	 * @param updDtmBf 更新年月日時分秒(更新前)
	 * @throws RequestParameterException
	 */
	private void setInMapECK0141D010(IRequestParameterReadWrite param, String fixedText, String optinmNo, String sysId, String mlad, String rcvDiv,
			String updDtmBf) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1); // 1:チェック＆登録

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(ECK0141D010CBSMsg.OPTINM_NO, optinmNo); // オプトインメール番号
		inMap.put(ECK0141D010CBSMsg.SYSID, sysId); // SYSID
		inMap.put(ECK0141D010CBSMsg.MLAD, mlad); // メールアドレス

		inMap.put(ECK0141D010CBSMsg.RCV_DIV, rcvDiv); // 受信区分
		inMap.put(ECK0141D010CBSMsg.RCV_SETTE_YMD, JFUBPCommon.getOpeDate(null)); // 受信設定年月日

		inMap.put(ECK0141D010CBSMsg.UPD_DTM_BF, updDtmBf); // 更新年月日時分秒(更新前)

	}

	/**
	 * 上りマッピング項目設定(EKK0081A010_サービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param Svc_Kei_No サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0081A010(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ●機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2); // 2:サービス契約一意照会(カレント)

		// ユーザデータ取得
		HashMap<String, Object> inMap = (HashMap<String, Object>)param.getData(fixedText);

		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);//サービス契約番号
		inMap.put(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));//予約適用年月日

	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}

	/**
	 * デバッグ出力処理です。
	 * 
	 * <br>
	 * @param obj 出力内容
	 */
	private void outDebugLog(Object obj)
	{
		// デバッグ出力
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), obj, null, null, null);
	}

}