/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUTelOpMskmCheckCC
*   ソースファイル名：JFUTelOpMskmCheckCC.java
*   作成者          ：富士通
*   日付            ：2015年03月14日
*＜機能概要＞
*   電話オプションパック申込チェックコモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v14.00      2015/03/19   FJ) 西川    変更【OM-2015-0000218】撤去工事完了時のオプション申込受付不具合
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

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.AbstractCommonComponent;
import com.fujitsu.futurity.common.JSYLogBase;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0161A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK1681B001CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK2811B503CBSMsg;

/**
 * 電話オプションパック申込チェックコモンコンポーネント部品
 * <br>
 * @author 富士通
 */
public class JFUTelOpMskmCheckCC extends AbstractCommonComponent
{

	/** テンポラリテンプレート領域キー識別子 */
	private static final String TEMP_TEMPLATE_PRIFIX = "TEMP_TEMPLATE_";
	/** テンポラリテンプレート領域キー識別子区切文字 */
	private static final String TEMP_TEMPLATE_PRIFIX_SEP = "_";

	/** IN項目：IN_SYSID */
	private static final String IN_SYSID = "sysid";
	/** IN項目：IN_サービス契約番号 */
	private static final String IN_SVC_KEI_NO = "svc_kei_no";
	/** IN項目：IN_サービス契約内訳番号 */
	private static final String IN_SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** IN項目：IN_サービス契約回線内訳番号 */
	private static final String IN_SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";

	/* ■□ EKK0191A010_サービス契約内訳<eo光電話>一意照会SC ■□ */
	/** テンプレートID(サービス契約内訳<eo光電話>一意照会) */
	private static final String TEMP_ID_EKK0191A010 = "EKK0191A010";
	/** テンプレートID(サービス契約内訳<eo光電話>一意照会明細) */
	private static final String TEMP_ID_DTL_EKK0191A010 = EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約内訳<eo光電話>一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0191A010 = Arrays.asList(EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO);
	/** 関連チェック,エラー項目(サービス契約内訳<eo光電話>一意照会) */
	private static final String ERR_COLUMN_EKK0191A010 = EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR;
	/** SC実行結果取得キー(サービス契約内訳<eo光電話>一意照会) */
	private static final String TEMP_TEMP_KEY_EKK0191A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0191A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK0341B002_機器提供サービス契約一覧照会(サービス契約番号)SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final String TEMP_ID_EKK0341B002 = "EKK0341B002";
	/** テンプレートID(機器提供サービス契約一覧照会(サービス契約番号)明細) */
	private static final String TEMP_ID_DTL_EKK0341B002 = EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final List<String> IN_COLUMN_LIST_EKK0341B002 =
			Arrays.asList(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO,
					EKK0341B002CBSMsg.KEY_SORT_KBN);
	/** 関連チェック,エラー項目(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final String ERR_COLUMN_EKK0341B002 = EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final String TEMP_TEMP_KEY_EKK0341B002 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0341B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ EKK2811B503_機器提供サービス契約一覧照会(サービス契約番号)SC ■□ */
	/** テンプレートID(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final String TEMP_ID_EKK2811B503 = "EKK2811B503";
	/** テンプレートID(機器提供サービス契約一覧照会(サービス契約番号)明細) */
	private static final String TEMP_ID_DTL_EKK2811B503 = EKK2811B503CBSMsg.EKK2811B503CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final List<String> IN_COLUMN_LIST_EKK2811B503 =
			Arrays.asList(EKK2811B503CBSMsg.KEY_SYSID, EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, EKK2811B503CBSMsg.KEY_TAKNKIKI_SBT_CD);
	/** 関連チェック,エラー項目(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final String ERR_COLUMN_EKK2811B503 = EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR;
	/** SC実行結果取得キー(機器提供サービス契約一覧照会(サービス契約番号)) */
	private static final String TEMP_TEMP_KEY_EKK2811B503 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK2811B503 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器提供サービス契約一意照会SC ■□ */
	/** テンプレートID(機器提供サービス契約一意照会) */
	private static final String TEMPLATE_ID_EKK0341A010 = "EKK0341A010";
	/** テンプレートID(機器提供サービス契約一意照会明細) */
	private static final String TEMPLATE_ID_EKK0341A010_DETAIL = EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_EKK0341A010 =
			Arrays.asList(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, EKK0341A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(機器提供サービス契約一意照会) */
	private static final String ERROR_COLUMN_EKK0341A010 = EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(機器提供サービス契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_EKK0341A010 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK0341A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 異動予約一覧照会SC ■□ */
	/** テンプレートID(異動予約一覧照会) */
	private static final String TEMPLATE_ID_EKK1681B001 = "EKK1681B001";
	/** テンプレートID(異動予約一覧照会明細) */
	private static final String TEMPLATE_ID_EKK1681B001_DETAIL = EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST;
	/** IN項目リスト(異動予約一覧照会) */
	private static final List<String> IN_COLUMN_LIST_EKK1681B001 =
			Arrays.asList(EKK1681B001CBSMsg.KEY_IDO_DIV, EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, EKK1681B001CBSMsg.KEY_RSV_APLY_YMD,
					EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD, EKK1681B001CBSMsg.KEY_MSKM_DTL_NO, EKK1681B001CBSMsg.KEY_SYSID,
					EKK1681B001CBSMsg.KEY_SEIKY_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO,
					EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO,
					EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO, EKK1681B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, EKK1681B001CBSMsg.KEY_HEIGO_SK_SYSID,
					EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SYSID, EKK1681B001CBSMsg.KEY_HEIGO_SK_SEIKY_KEI_NO,
					EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SEIKY_KEI_NO, EKK1681B001CBSMsg.KEY_KOJIAK_NO, EKK1681B001CBSMsg.KEY_OP_HKTGI_SK_SVC_KEI_NO,
					EKK1681B001CBSMsg.KEY_SORT_ITEM_NO, EKK1681B001CBSMsg.KEY_SORT_KBN);
	/** 関連チェックエラー項目(異動予約一覧照会) */
	private static final String ERROR_COLUMN_EKK1681B001 = "pcrs_chg_incomp_err";
	/** SC実行結果取得キー(異動予約一覧照会)(プラン変更中チェック) */
	private static final String TEMP_TEMPLATE_KEY_EKK1681B001 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_EKK1681B001 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * 電話オプションパック申込チェックコモンコンポーネント部品実行処理<br>
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Throwable 例外
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{

		// 開始ログ
		outDebugLog("----- checkTelOpMskmData Start  -----");

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ==============================================================================================================
		// ■ 対象機器情報の存在確認
		// ==============================================================================================================

		// ===== VA機器変更番号の取得 =====

		// ●EKK0191A010_サービス契約内訳<eo光電話>一意照会
		// ユーザデータ初期化
		JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EKK0191A010);
		// 検索エラーなし設定
		JFUBPCommon.ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0191A010(param, fixedText, inMap);

		// サービスIF実行
		JFUBPCommon.executeSC(handle, param, fixedText, TEMP_ID_EKK0191A010, TEMP_ID_DTL_EKK0191A010, IN_COLUMN_LIST_EKK0191A010,
				ERR_COLUMN_EKK0191A010);

		// サービス契約内訳番号情報
		HashMap svcKeiUcwkInfoTelMap =
				JFUBPCommon
						.getTemplateListMap(inMap, JFUBPCommon.getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0191A010), TEMP_ID_DTL_EKK0191A010, 0);

		// VA機器変更番号を取得
		String vaKikiChgNo = (String)svcKeiUcwkInfoTelMap.get(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO);

		// ===== 電話の機器（VA機器又は、多機能ルーター）情報の取得 =====

		ArrayList<HashMap> kikiDataList = new ArrayList<HashMap>();

		// ●IN項目
		// ○SYSID
		String inSysId = (String)inMap.get(IN_SYSID);
		// ○サービス契約番号
		String inSvcKeiNo = (String)inMap.get(IN_SVC_KEI_NO);
		// ○サービス契約回線内訳番号
		String inSvcKeiKaisenUcwkNo = (String)inMap.get(IN_SVC_KEI_KAISEN_UCWK_NO);

		// ○EKK0341B002_機器提供サービス契約一覧照会(サービス契約番号)
		// ユーザデータ初期化
		JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EKK0341B002);
		//検索エラーなし設定
		JFUBPCommon.ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0341B002(param, fixedText, inSvcKeiNo);
		// サービスIF実行
		JFUBPCommon.executeSC(handle, param, fixedText, TEMP_ID_EKK0341B002, TEMP_ID_DTL_EKK0341B002, IN_COLUMN_LIST_EKK0341B002,
				ERR_COLUMN_EKK0341B002);
		List<HashMap> kikiVaList =
				JFUBPCommon.getTemplateList(inMap, JFUBPCommon.getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK0341B002), TEMP_ID_DTL_EKK0341B002);
		kikiDataList.addAll(kikiVaList);

		// ○EKK2811B503_機器オプションサービス契約一覧照会（フロント）
		// ユーザデータ初期化
		JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EKK2811B503);
		//検索エラーなし設定
		JFUBPCommon.ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK2811B503(param, fixedText, inSysId, inSvcKeiKaisenUcwkNo);
		// サービスIF実行
		JFUBPCommon.executeSC(handle, param, fixedText, TEMP_ID_EKK2811B503, TEMP_ID_DTL_EKK2811B503, IN_COLUMN_LIST_EKK2811B503,
				ERR_COLUMN_EKK2811B503);
		List<HashMap> kikiTknList =
				JFUBPCommon.getTemplateList(inMap, JFUBPCommon.getMaxTempTempleteKey(inMap, TEMP_TEMP_KEY_EKK2811B503), TEMP_ID_DTL_EKK2811B503);

		for (HashMap dataMap : kikiTknList)
		{

			// 電話オプション以外の場合はスキップ
			if (!JFUStrConst.KK2801_KKOP_SVC_CD_G02.equals(dataMap.get("kkop_svc_cd")))
			{
				continue;
			}

			kikiDataList.add(dataMap);
		}

		Set<String> vaKikiChgNoSet = new HashSet<String>();
		for (HashMap kikiMap : kikiDataList)
		{

			if (!JFUBPCommon.isNull(vaKikiChgNo))
			{
				// VA機器変更番号が存在する場合

				// 機器提供サービス契約番号
				String kktkSvcKeiNo = (String)kikiMap.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO);

				// ●機器提供サービス契約一意照会
				// ユーザデータ初期化
				JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EKK0341A010);
				// 検索エラーなし設定
				JFUBPCommon.ignoreSearchError(param, fixedText);
				// 上りマッピング
				setInMapEKK0341A010(param, fixedText, kktkSvcKeiNo);
				// サービスIF実行
				JFUBPCommon.executeSC(handle, param, fixedText, TEMPLATE_ID_EKK0341A010, TEMPLATE_ID_EKK0341A010_DETAIL, IN_COLUMN_LIST_EKK0341A010,
						ERROR_COLUMN_EKK0341A010);

				// 機器提供サービス契約情報
				HashMap kktkInfoMap =
						JFUBPCommon.getTemplateListMap(inMap, JFUBPCommon.getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341A010),
								TEMPLATE_ID_EKK0341A010_DETAIL, 0);

				// 機器変更番号
				String kikiChgNo = (String)kktkInfoMap.get(EKK0341A010CBSMsg1List.KIKI_CHG_NO);
				if (!vaKikiChgNo.equals(kikiChgNo) || vaKikiChgNoSet.contains(kikiChgNo))
				{
					// サービス契約内訳＜eo光電話＞のVA機器変更番号と機器提供サービス契約と異なる場合はスキップする。
					continue;
				}
				else
				{
					vaKikiChgNoSet.add(kikiChgNo);
				}
			}
		}

		// 結果マップ
		HashMap<String, Object> resultMap = new HashMap<String, Object>();
		if (vaKikiChgNoSet.size() == 0)
		{
			//VA機器変更番号に紐づく機器が存在しない場合
			// 申込み不可

			outDebugLog("VA機器変更番号に紐づく機器が存在しない為、電話のオプション申込みを規制する。");
			resultMap.put("mskmKhFlg", "1");
		}
		else
		{
			//VA機器変更番号に紐づく機器が存在する場合

			// ==============================================================================================================
			// ■ 電話番号の変更中確認
			// ==============================================================================================================

			// ===== 対象機器情報の存在確認 =====

			// ●異動予約一覧照会
			// ユーザデータ初期化
			JFUBPCommon.initData(param, fixedText, IN_COLUMN_LIST_EKK1681B001);
			// 検索エラーなし設定
			JFUBPCommon.ignoreSearchError(param, fixedText);
			// 上りマッピング
			setInMapEKK1681B001(param, fixedText, (String)inMap.get(IN_SVC_KEI_UCWK_NO), JFUStrConst.CD00576_00042, JFUStrConst.CD01167_007);

			// サービスIF実行
			JFUBPCommon.executeSC(handle, param, fixedText, TEMPLATE_ID_EKK1681B001, TEMPLATE_ID_EKK1681B001_DETAIL, IN_COLUMN_LIST_EKK1681B001,
					ERROR_COLUMN_EKK1681B001);

			List<HashMap> idoRsvListPcrs =
					JFUBPCommon.getTemplateList((HashMap)param.getData(fixedText), JFUBPCommon.getMaxTempTempleteKey(inMap,
							TEMP_TEMPLATE_KEY_EKK1681B001), TEMPLATE_ID_EKK1681B001_DETAIL);

			boolean isErrIdoRsv = false;
			for (HashMap idoRsvMap : idoRsvListPcrs)
			{
				String idoRsvStatCd = (String)idoRsvMap.get(EKK1681B001CBSMsg1List.IDO_RSV_STAT_CD);
				// 「00:未反映」、または、「03：予約手続き中」はエラー
				if (JFUStrConst.CD01168_00.equals(idoRsvStatCd) || JFUStrConst.CD01168_03.equals(idoRsvStatCd))
				{
					isErrIdoRsv = true;
					break;
				}
			}

			if (isErrIdoRsv)
			{
				// 電話番号の番ポ変更中の場合
				// 申込み不可

				outDebugLog("電話番号の番ポ変更中の為、電話のオプション申込みを規制する。");
				resultMap.put("mskmKhFlg", "1");
			}
			else
			{
				//VA機器変更番号が存在し、且つ番ポ変更中でない

				resultMap.put("mskmKhFlg", "0");
			}
		}

		// 一度ユーザデータを削除し、再度設定する
		param.removeData(fixedText);
		param.setData(fixedText, resultMap);

		// 終了ログ
		outDebugLog("----- checkTelOpMskmData End  -----");
		return param;
	}

	/**
	 * チェック処理
	 *
	 * <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(JSYLogBase.DEBUG, this.getClass(), obj, null, null, null);
	}

	/**
	 * 上りマッピング項目設定(サービス契約内訳<eo光電話>一意照会)
	 *
	 * <br>
	 *
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param dataMap
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0191A010(IRequestParameterReadWrite param, String fixedText, HashMap dataMap) throws RequestParameterException
	{

		// ユーザデータ取得
		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(fixedText);

		// 機能コード設定(4:カレント)
		JFUBPCommon.setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_4);

		// ＫＥＹ＿サービス契約内訳番号
		inMap.put(EKK0191A010CBSMsg.KEY_SVC_KEI_UCWK_NO, (String)dataMap.get(IN_SVC_KEI_UCWK_NO));

	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約一覧照会(サービス契約番号))
	 *
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param svcKeiNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0341B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(fixedText);

		// 機能コード設定(1:)
		JFUBPCommon.setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// サービス契約番号
		inMap.put(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

	}

	/**
	 * 上りマッピング項目設定(機器オプションサービス契約一覧照会（フロント）)
	 *
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param sysId
	 * @param svcKeiKaisenUcwkNo
	 * @throws RequestParameterException
	 */
	private void setInMapEKK2811B503(IRequestParameterReadWrite param, String fixedText, String sysId, String svcKeiKaisenUcwkNo)
			throws RequestParameterException
	{
		// ユーザデータ取得
		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(fixedText);

		// 機能コード設定(1:)
		JFUBPCommon.setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// SYSID
		inMap.put(EKK2811B503CBSMsg.KEY_SYSID, sysId);
		// サービス契約回線内訳番号
		inMap.put(EKK2811B503CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約一意照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0341A010(IRequestParameterReadWrite param, String fixedText, String kktkSvcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(2)
		JFUBPCommon.setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(fixedText);

		// ＫＥＹ＿機器提供サービス契約番号
		inMap.put(EKK0341A010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		// 予約適用年月日
		inMap.put(EKK0341A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(異動予約一覧照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約内訳番号
	 * @param idoDiv 異動区分
	 * @param idoRsvDtlCd 異動予約詳細コード
	 * @throws RequestParameterException
	 */
	private void setInMapEKK1681B001(IRequestParameterReadWrite param, String fixedText, String svcKeiUcwkNo, String idoDiv, String idoRsvDtlCd)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		JFUBPCommon.setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap<String, String> inMap = (HashMap<String, String>)param.getData(fixedText);

		// ＫＥＹ＿サービス契約内訳番号
		inMap.put(EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO, svcKeiUcwkNo);
		// ＫＥＹ＿異動区分
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_DIV, idoDiv);
		// ＫＥＹ＿異動予約詳細コード
		inMap.put(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD, idoRsvDtlCd);
	}

}
