/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUBmpTelNoAddChkCC
*   ソースファイル名：JFUBmpTelNoAddChkCC.java
*   作成者          ：富士通
*   日付            ：2013年12月6日
*＜機能概要＞
*   機器オプションサービス契約登録コモンコンポーネント部品
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v14.00      2015/06/17   FJ) 西川    変更【OM-2015-0001454】2番号申込時の機器オプション誤登録
*   v55.00      2021/10/06   FJ) 西川  新規作成【ANK-4146-00-00】【eo定期】多機能ルーター枯渇対応 STEP2
*   v61.00      2023/05/10   FJ) 張本    変更【ANK-4315-00-00】【eo定期】eoホームゲートウェイ導入対応
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

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 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.EDK0451A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EDK0451A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081B025CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B025CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0251A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EZM0411A010CBSMsg1List;

/**
 * 機器オプションサービス契約登録コモンコンポーネント部品です。
 *
 * <br>
 * @author 富士通
 */
public class JFUAddKkopSvcKeiCC extends JFUBaseCC
{
	// ■サービス契約一覧照会（整理番号）
	/** テンプレートID */
	private static final String TEMP_ID_EKK0081B025 = "EKK0081B025";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_DTL_EKK0081B025 = EKK0081B025CBSMsg.EKK0081B025CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0081B025 =
		Arrays.asList(EKK0081B025CBSMsg.FUNC_CODE, EKK0081B025CBSMsg.KEY_SEIRI_NO);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EKK0081B025 = EKK0081B025CBSMsg.KEY_SEIRI_NO_ERR;
	/** SC実行結果取得キー(サービス契約内訳一覧照会（eo光テレビ情報取得）) */
	private static final String TEMP_TEMPLATE_EKK0081B025 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0081B025 + TEMP_TEMPLATE_PRIFIX_SEP;

	// ■サービス契約回線内訳一意照会
	/** テンプレートID */
	private static final String TEMP_ID_EKK0251A010 = "EKK0251A010";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_DTL_EKK0251A010 = EKK0251A010CBSMsg.EKK0251A010CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0251A010 =
		Arrays.asList(EKK0251A010CBSMsg.FUNC_CODE, EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EKK0251A010 = EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR;
	/** SC実行結果取得キー(サービス契約内訳一覧照会（eo光テレビ情報取得）) */
	private static final String TEMP_TEMPLATE_EKK0251A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0251A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 引当棚一意照会SC ■□ */
	/** テンプレートID */
	private static final String TEMP_ID_EDK0451A010 = "EDK0451A010";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_EDK0451A010_DETAIL = EDK0451A010CBSMsg.EDK0451A010CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EDK0451A010 = Arrays.asList(EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, EDK0451A010CBSMsg.KEY_UNYO_YMD);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EDK0451A010 = EDK0451A010CBSMsg.KEY_UNYO_YMD_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_EDK0451A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EDK0451A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 課金先一覧照会（請求契約番号/サービス契約番号）SC ■□ */
	/** テンプレートID */
	private static final String TEMP_ID_EKK0321B002 = "EKK0321B002";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_EKK0321B002_DETAIL = EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0321B002 = Arrays.asList(EKK0321B002CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EKK0321B002 = EKK0321B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_EKK0321B002 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0321B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ お客様一意照会SC ■□ */
	/** テンプレートID */
	private static final String TEMP_ID_ECK0011A010 = "ECK0011A010";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_ECK0011A010_DETAIL = ECK0011A010CBSMsg.ECK0011A010CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_ECK0011A010 =
			Arrays.asList(ECK0011A010CBSMsg.KEY_SYSID, ECK0011A010CBSMsg.KEY_GENE_ADD_DTM, ECK0011A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_ECK0011A010 = ECK0011A010CBSMsg.KEY_SYSID_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_ECK0011A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_ECK0011A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器提供サービス契約登録SC ■□ */
	/** テンプレートID */
	private static final String TEMP_ID_EKK0341D010 = "EKK0341D010";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_EKK0341D010_DETAIL = null;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0341D010 =
		Arrays.asList(EKK0341D010CBSMsg.KKTK_SVC_CD,
				EKK0341D010CBSMsg.PCRS_CD,
				EKK0341D010CBSMsg.PPLAN_CD,
				EKK0341D010CBSMsg.KKTK_SBT_CD,
				EKK0341D010CBSMsg.HAMBAI_SBT_CD,
				EKK0341D010CBSMsg.TAKNKIKI_SBT_CD,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_PLACE_NO,
				EKK0341D010CBSMsg.OYA_KEI_SKBT_CD,
				EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO,
				EKK0341D010CBSMsg.SYSID,
				EKK0341D010CBSMsg.MSKM_DTL_NO,
				EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD,
				EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD,
				EKK0341D010CBSMsg.KIKI_SOHUS_NM,
				EKK0341D010CBSMsg.KIKI_SOHUS_KANA,
				EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD,
				EKK0341D010CBSMsg.KIKI_SOHUS_PCD,
				EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM,
				EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM,
				EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM,
				EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM,
				EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO,
				EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM,
				EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM,
				EKK0341D010CBSMsg.KIKI_SOHUS_TELNO,
				EKK0341D010CBSMsg.MANSION_BUKKEN_NO,
				EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG,
				EKK0341D010CBSMsg.AD_MI_FIX_FLG,
				EKK0341D010CBSMsg.HAISO_DIV,
				EKK0341D010CBSMsg.IDO_DIV,
				EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD,
				EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG,
				EKK0341D010CBSMsg.SEIKY_KEI_NO, EKK0341D010CBSMsg.UPD_DTM_BF,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD	,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM,
				EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM,
				EKK0341D010CBSMsg.KIKI_STC_SK_TELNO,
				EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EKK0341D010 = null;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_EKK0341D010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0341D010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器提供サービス契約一覧照会（サービス契約番号）SC ■□ */
	/** テンプレートID */
	private static final String TEMP_ID_EKK0341B002 = "EKK0341B002";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_EKK0341B002_DETAIL = EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EKK0341B002 = Arrays.asList(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, EKK0341B002CBSMsg.KEY_KKTK_SVC_CD);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EKK0341B002 = EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_EKK0341B002 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0341B002 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 宅内機器型式一意照会SC ■□ */
	/** テンプレートID */
	private static final String TEMP_ID_EZM0411A010 = "EZM0411A010";
	/** テンプレートID(明細) */
	private static final String TEMP_ID_EZM0411A010_DETAIL = EZM0411A010CBSMsg.EZM0411A010CBSMSG1LIST;
	/** IN項目リスト */
	private static final List<String> IN_COLUMN_LIST_EZM0411A010 = Arrays.asList(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD);
	/** 関連チェックエラー項目 */
	private static final String ERR_COLUMN_EZM0411A010 = EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_EZM0411A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EZM0411A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/* ■□ 機器オプションサービス契約登録SC ■□ */
	/** テンプレートID(機器オプションサービス契約登録) */
	private static final String TEMP_ID_EKK2811D010 = "EKK2811D010";
	/** テンプレートID(機器オプションサービス契約登録明細) */
	private static final String TEMP_ID_EKK2811D010_DETAIL = null;
	/** IN項目リスト(機器オプションサービス契約登録) */
	private static final List<String> IN_COLUMN_LIST_EKK2811D010 =
		Arrays.asList(EKK2811D010CBSMsg.KKOP_SVC_CD, EKK2811D010CBSMsg.PCRS_CD, EKK2811D010CBSMsg.PPLAN_CD, EKK2811D010CBSMsg.KKTK_SVC_KEI_NO,
				EKK2811D010CBSMsg.SYSID, EKK2811D010CBSMsg.MSKM_DTL_NO, EKK2811D010CBSMsg.RSV_APLY_YMD, EKK2811D010CBSMsg.RSV_APLY_CD,
				EKK2811D010CBSMsg.PNLTY_HASSEI_CD, EKK2811D010CBSMsg.IDO_DIV, EKK2811D010CBSMsg.SEIKY_KEI_NO,
				EKK2811D010CBSMsg.KIKI_RNTAI_KEI_CHGECHU_FLG, EKK2811D010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(機器オプションサービス契約登録) */
	private static final String ERR_COLUMN_EKK2811D010 = null;
	/** SC実行結果取得キー(機器オプションサービス契約登録) */
	private static final String TEMP_TEMPLATE_EKK2811D010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK2811D010 + TEMP_TEMPLATE_PRIFIX_SEP;

	// ■IN項目
	/** IN項目:整理番号 */
	private static final String IN_SEIRI_NO = "key_seiri_no";
	/** IN項目:サービス契約回線内訳番号 */
	private static final String IN_SVC_KEI_KAISEN_UCWK_NO = "svc_kei_kaisen_ucwk_no";
	/** IN項目:SYSID */
	private static final String IN_SYSID = "sysid";
	/** IN項目:申込明細番号 */
	private static final String IN_MSKM_DTL_NO = "mskm_dtl_no";
	/** IN項目:更新年月日時分秒（更新前） */
	private static final String IN_UPD_DTM_BF = "upd_dtm_bf";
	/** 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";

	// ■OUT項目
	/** OUT項目:保有ルーター保有VA区分 */
	private static final String OUT_HOYU_RUTER_HOYU_VA = "out_hoyu_ruter_hoyu_va";
	/** OUT項目:ルーター保有区分 */
	private static final String OUT_ROUTER_HOYU_KBN = "out_router_hoyu_kbn";
	/** OUT項目:2ポートVA保有区分 */
	private static final String OUT_TOW_PORT_VA_HOYU_KB = "out_tow_port_va_hoyu_kb";

	/* ■□ 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_EKK0191A010 = TEMP_TEMPLATE_PRIFIX + TEMP_ID_EKK0191A010 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * eo光ルーター保有有無判定
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite getNetKiki(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// IN項目:整理番号
		String inParamKeySeiriNo = (String)inMap.get(IN_SEIRI_NO);

		// ●サービスI/F(2)(サービス契約一覧照会（整理番号）)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0081B025);
		// 上りマッピング
		setInMapEKK0081B025(param, fixedText, inParamKeySeiriNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081B025, TEMP_ID_DTL_EKK0081B025, IN_COLUMN_LIST_EKK0081B025, ERR_COLUMN_EKK0081B025);
		List<HashMap>  ekk0081b025List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0081B025), TEMP_ID_DTL_EKK0081B025);

		// ●ローカル変数
		// サービス契約番号（ネット）
		String svcKeiNoNet = null;
		// ルーター保有
		String routerHoyu = null;

		// ●繰り返し処理(3)
		for(HashMap svcKeiMap : ekk0081b025List)
		{
			// 料金グループコード
			String prcGrpCd = (String)svcKeiMap.get(EKK0081B025CBSMsg1List.PRC_GRP_CD);

			// ●判定(4)
			// 料金グループコードが「02：eo光ネットホームタイプ」、「03：eo光ネットメゾンタイプ」、
			// 「04：eo光ネットマンションタイプ」（ネット）の場合
			if (JFUStrConst.CD00133_02.equals(prcGrpCd)
					|| JFUStrConst.CD00133_03.equals(prcGrpCd)
					|| JFUStrConst.CD00133_04.equals(prcGrpCd))
			{
				// ●変数設定(5)
				svcKeiNoNet = (String)svcKeiMap.get(EKK0081B025CBSMsg1List.SVC_KEI_NO);

				// ●サービスI/F(15)(機器提供サービス契約一覧照会（サービス契約番号）)
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_EKK0341B002);
				ignoreSearchError(param, fixedText);
				// 上りマッピング
				setInMapEKK0341B002(param, fixedText, svcKeiNoNet, JFUStrConst.KK0771_KKTK_SVC_CD_C014);
				// サービスIF実行
				executeSC(handle,
						param,
						fixedText,
						TEMP_ID_EKK0341B002,
						TEMP_ID_EKK0341B002_DETAIL,
						IN_COLUMN_LIST_EKK0341B002,
						ERR_COLUMN_EKK0341B002);
				List<HashMap>  ekk0341b002list =
					getTemplateList(inMap,
							getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0341B002),
							TEMP_ID_EKK0341B002_DETAIL);

				if(null != ekk0341b002list && 0 != ekk0341b002list.size())
				{
					// eo光ルーター保有
					routerHoyu = JFUStrConst.CD00002_1;
				}
			}
			// ●判定(6)
			// 料金グループコードが「10：eo光電話」（電話）の場合
			else
			{
				// ●変数設定(7)
				continue;
			}
		}

		if (null == routerHoyu || JFUStrConst.EMPTY.equals(routerHoyu))
		{
			// eo光ルーター未保有
			routerHoyu = JFUStrConst.CD00002_0;
		}

		// OUT項目:認証ID
		inMap.put(OUT_ROUTER_HOYU_KBN, routerHoyu);

		// VA機器が2ポートかをチェックする。
		String portCnt = getVaPortCnt(handle, param, fixedText, inMap);

		if ("2".equals(portCnt))
		{
			// OUT項目:2ポートVA保有区分
			inMap.put(OUT_TOW_PORT_VA_HOYU_KB, JFUStrConst.CD00002_1);
		}
		else
		{
			// OUT項目:2ポートVA保有区分
			inMap.put(OUT_TOW_PORT_VA_HOYU_KB, JFUStrConst.CD00002_0);
		}

		return param;
	}


	/**
	 * 機器提供サービス契約、機器オプションサービス契約の登録処理を行う。
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite addKktSvcKei(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 前提：多機能ルータ保有の場合はこの処理は呼び出されない。

		// 機能コード
		String funcCd = getFuncCode(param, fixedText);

		// 機能コードが設定されている場合、且つ、機能コードが"2"(チェックのみ)の場合は、登録・更新処理を実行しない。
		if (null != funcCd && JPCModelConstant.FUNC_CD_2.equals(funcCd))
		{
			return param;
		}

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// IN項目:整理番号
		String inParamKeySeiriNo = (String)inMap.get(IN_SEIRI_NO);
		// IN項目:サービス契約回線内訳番号
		String inParamSvcKeiKaisenUcwkNo = (String)inMap.get(IN_SVC_KEI_KAISEN_UCWK_NO);
		// IN項目:SYSID
		String inParamSysid = (String)inMap.get(IN_SYSID);
		// IN項目:申込明細番号
		String inParamMskmDtlNo = (String)inMap.get(IN_MSKM_DTL_NO);
		// IN項目:更新年月日時分秒(更新前)
		String inParamUpdDtmBf = (String)inMap.get(IN_UPD_DTM_BF);

		// ●ローカル変数
		// サービス契約番号（ネット）
		String svcKeiNoNet = null;
		// サービス契約番号（電話）
		String svcKeiNoTel = null;


		// VA機器が2ポートかをチェックする。
		String portCnt = getVaPortCnt(handle, param, fixedText, inMap);

		if ("2".equals(portCnt))
		{
			// OUT項目:2ポートVA保有区分
			inMap.put(OUT_TOW_PORT_VA_HOYU_KB, JFUStrConst.CD00002_1);

			// 保有契約がVA機器が2ポートVA対応機器の場合
			return param;
		}
		else
		{
			// OUT項目:2ポートVA保有区分
			inMap.put(OUT_TOW_PORT_VA_HOYU_KB, JFUStrConst.CD00002_0);
		}

		// ●サービスI/F(2)(サービス契約一覧照会（整理番号）)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0081B025);
		// 上りマッピング
		setInMapEKK0081B025(param, fixedText, inParamKeySeiriNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0081B025, TEMP_ID_DTL_EKK0081B025, IN_COLUMN_LIST_EKK0081B025, ERR_COLUMN_EKK0081B025);
		List<HashMap>  ekk0081b025List = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0081B025), TEMP_ID_DTL_EKK0081B025);

		// ●繰り返し処理(3)
		for(HashMap svcKeiMap : ekk0081b025List)
		{
			// 料金グループコード
			String prcGrpCd = (String)svcKeiMap.get(EKK0081B025CBSMsg1List.PRC_GRP_CD);

			// ●判定(4)
			// 料金グループコードが「02：eo光ネットホームタイプ」、「03：eo光ネットメゾンタイプ」、
			// 「04：eo光ネットマンションタイプ」（ネット）の場合
			if (JFUStrConst.CD00133_02.equals(prcGrpCd)
					|| JFUStrConst.CD00133_03.equals(prcGrpCd)
					|| JFUStrConst.CD00133_04.equals(prcGrpCd))
			{
				// ●変数設定(5)
				svcKeiNoNet = (String)svcKeiMap.get(EKK0081B025CBSMsg1List.SVC_KEI_NO);
			}
			// ●判定(6)
			// 料金グループコードが「10：eo光電話」（電話）の場合
			else if  (JFUStrConst.CD00133_10.equals(prcGrpCd))
			{
				// ●変数設定(7)
				svcKeiNoTel = (String)svcKeiMap.get(EKK0081B025CBSMsg1List.SVC_KEI_NO);
			}
		}

		// ●サービスI/F(8)(サービス契約回線内訳一意照会)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0251A010);
		// 上りマッピング
		setInMapEKK0251A010(param, fixedText, inParamSvcKeiKaisenUcwkNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0251A010, TEMP_ID_DTL_EKK0251A010, IN_COLUMN_LIST_EKK0251A010, ERR_COLUMN_EKK0251A010);
		HashMap kaisenUwUniqueMap = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0251A010), TEMP_ID_DTL_EKK0251A010).get(0);

		// ●サービスI/F(9)(引当棚一意照会)
		// ユーザデータ初期化
		// ●引当棚一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EDK0451A010);
		// 上りマッピング
		setInMapEDK0451A010(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EDK0451A010, TEMP_ID_EDK0451A010_DETAIL, IN_COLUMN_LIST_EDK0451A010, ERR_COLUMN_EDK0451A010);
		// 棚コード
		String shelfCd = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EDK0451A010), TEMP_ID_EDK0451A010_DETAIL, EDK0451A010CBSMsg1List.SHELF_CD, 0);

		String svcKeiNo = null;
		if (null == svcKeiNoNet || JFUStrConst.EMPTY.equals(svcKeiNoNet))
		{
			svcKeiNo = svcKeiNoTel;
		}
		else
		{
			svcKeiNo = svcKeiNoNet;
		}

		// ●サービスI/F(10)(課金先一覧照会（請求契約番号/サービス契約番号）)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0321B002);
		// 上りマッピング
		setInMapEKK0321B002(param, fixedText, svcKeiNo);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0321B002, TEMP_ID_EKK0321B002_DETAIL, IN_COLUMN_LIST_EKK0321B002, ERR_COLUMN_EKK0321B002);
		// 請求契約番号
		String seikyKeiNoNet =
			getTemplateListValue(inMap,
					getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0321B002),
					TEMP_ID_EKK0321B002_DETAIL,
					EKK0321B002CBSMsg1List.SEIKY_KEI_NO,
					0);

		// ●サービスI/F(11)(お客様一意照会)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_ECK0011A010);
		// 上りマッピング
		setInMapECK0011A010(param, fixedText, inParamSysid);
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_ECK0011A010, TEMP_ID_ECK0011A010_DETAIL, IN_COLUMN_LIST_ECK0011A010, ERR_COLUMN_ECK0011A010);
		String custName = getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_ECK0011A010), TEMP_ID_ECK0011A010_DETAIL, ECK0011A010CBSMsg1List.CUST_NM, 0);
		String custNameKana =
			getTemplateListValue(inMap,
					getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_ECK0011A010),
					TEMP_ID_ECK0011A010_DETAIL,
					ECK0011A010CBSMsg1List.CUST_KANA,
					0);

		// ●サービスI/F(12) 機器提供サービス契約登録
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0341D010);
		// 上りマッピング
		setInMapEKK0341D010(param,
				fixedText,
				inParamSvcKeiKaisenUcwkNo,  // サービス契約回線内訳番号
				inParamSysid, 				// SYSID
				inParamMskmDtlNo, 			// 申込明細番号
				shelfCd,					// 引当棚一意照会.棚コード
				custName,					// お客様一意照会.お客様名
				custNameKana,				// お客様一意照会.お客様カナ名
				kaisenUwUniqueMap,			// サービス契約回線内訳一意照会Map
				seikyKeiNoNet,				// 請求契約番号
				inParamUpdDtmBf);			// 更新年月日時分秒(更新前)
		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0341D010, TEMP_ID_EKK0341D010_DETAIL, IN_COLUMN_LIST_EKK0341D010, ERR_COLUMN_EKK0341D010);
		// 処理結果取得
		HashMap kktkRegistMap = (HashMap)inMap.get(getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0341D010));

		// 機器提供サービス契約番号
		String kktkSvcKeiNo = (String)kktkRegistMap.get(EKK0341D010CBSMsg.KKTK_SVC_KEI_NO);
		// 更新年月日時分秒
		String lastUpdDtm = (String)kktkRegistMap.get(EKK0341D010CBSMsg.UPD_DTM);

		String hoyuRuter = null;
		String hoyuVa = null;

		// ●繰り返し処理(13)
		for(HashMap svcKeiMap : ekk0081b025List)
		{
			// 料金グループコード
			String prcGrpCd = (String)svcKeiMap.get(EKK0081B025CBSMsg1List.PRC_GRP_CD);

			// ●判定(14)
			// 料金グループコードが「02：eo光ネットホームタイプ」、「03：eo光ネットメゾンタイプ」、
			// 「04：eo光ネットマンションタイプ」（ネット）の場合
			if (JFUStrConst.CD00133_02.equals(prcGrpCd)
					|| JFUStrConst.CD00133_03.equals(prcGrpCd)
					|| JFUStrConst.CD00133_04.equals(prcGrpCd))
			{
				// ●サービスI/F(15)(機器提供サービス契約一覧照会（サービス契約番号）)
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_EKK0341B002);
				ignoreSearchError(param, fixedText);
				// 上りマッピング
				setInMapEKK0341B002(param, fixedText, svcKeiNoNet, JFUStrConst.KK0771_KKTK_SVC_CD_C014);
				// サービスIF実行
				executeSC(handle,
						param,
						fixedText,
						TEMP_ID_EKK0341B002,
						TEMP_ID_EKK0341B002_DETAIL,
						IN_COLUMN_LIST_EKK0341B002,
						ERR_COLUMN_EKK0341B002);
				List<HashMap>  ekk0341b002list =
					getTemplateList(inMap,
							getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0341B002),
							TEMP_ID_EKK0341B002_DETAIL);
				if(null != ekk0341b002list && 0 != ekk0341b002list.size())
				{
					// 宅内機器型式コード
					String taknkikiModelCd =
						getTemplateListValue(inMap,
								getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0341B002),
								TEMP_ID_EKK0341B002_DETAIL,
								EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD,
								0);
					// 機器提供ステータス
					String kktkSvcKeiStat =
						getTemplateListValue(inMap,
								getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0341B002),
								TEMP_ID_EKK0341B002_DETAIL,
								EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT,
								0);

					if (JFUStrConst.CD00056_020.equals(kktkSvcKeiStat) ||
							JFUStrConst.CD00056_030.equals(kktkSvcKeiStat) ||
							JFUStrConst.CD00056_100.equals(kktkSvcKeiStat))
					{

						// ●サービスI/F(16)(宅内機器型式一意照会)
						// ユーザデータ初期化
						initData(param, fixedText, IN_COLUMN_LIST_EZM0411A010);
						// 上りマッピング
						setInMapEZM0411A010(param, fixedText, taknkikiModelCd);
						// サービスIF実行
						executeSC(handle,
								param,
								fixedText,
								TEMP_ID_EZM0411A010,
								TEMP_ID_EZM0411A010_DETAIL,
								IN_COLUMN_LIST_EZM0411A010,
								ERR_COLUMN_EZM0411A010);

						// 保有ルーターコード
						String hoyuRouterCd =
							getTemplateListValue(inMap,
									getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EZM0411A010),
									TEMP_ID_EZM0411A010_DETAIL,
									EZM0411A010CBSMsg1List.HOYU_ROUTER_CD, 0);

						if (!(JFUStrConst.CD01313_01.equals(hoyuRouterCd)
								|| JFUStrConst.CD01313_02.equals(hoyuRouterCd)
								|| JFUStrConst.CD01313_03.equals(hoyuRouterCd)
								|| JFUStrConst.CD01313_04.equals(hoyuRouterCd) 
								|| JFUStrConst.CD01313_05.equals(hoyuRouterCd) 
								|| JFUStrConst.CD01313_06.equals(hoyuRouterCd))) {
							// 保有ルーターコードが対象外の場合は、機器オプションの登録処理を行わない。
							// 対象保有ルーターコード(01:ベーシック,02:ベーシックギガ,03:旧無線,04:新無線,05:新無線ギガ,06:新無線10ギガ)
							continue;
						}

						// ●サービスI/F(17)機器オプションサービス契約登録（ネット）
						// ユーザデータ初期化
						initData(param, fixedText, IN_COLUMN_LIST_EKK2811D010);
						// 上りマッピング
						setInMapEKK2811D010_1(param,
								fixedText,
								inParamSysid,
								inParamMskmDtlNo,
								seikyKeiNoNet,
								hoyuRouterCd,
								kktkSvcKeiNo,
								lastUpdDtm);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMP_ID_EKK2811D010, TEMP_ID_EKK2811D010_DETAIL, IN_COLUMN_LIST_EKK2811D010,
								ERR_COLUMN_EKK2811D010);
						// 更新年月日時分秒
						lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK2811D010), EKK2811D010CBSMsg.UPD_DTM);

						hoyuRuter = "1";
					}
				}

			}
			// ●判定(18)
			// 料金グループコードが「10：eo光電話」（電話）の場合
			else if  (JFUStrConst.CD00133_10.equals(prcGrpCd))
			{
				// ●サービスI/F(19)機器オプションサービス契約登録（電話）
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_EKK2811D010);
				// 上りマッピング
				setInMapEKK2811D010_2(param,
						fixedText,
						inParamSysid,
						inParamMskmDtlNo,
						seikyKeiNoNet,
						kktkSvcKeiNo,
						lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMP_ID_EKK2811D010, TEMP_ID_EKK2811D010_DETAIL, IN_COLUMN_LIST_EKK2811D010,
						ERR_COLUMN_EKK2811D010);
				// 更新年月日時分秒
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK2811D010), EKK2811D010CBSMsg.UPD_DTM);
				hoyuVa = "1";
			}
		}

		// 多機能ルーター保有時はこのクラスは呼ばれない為、画面上はnullとなる
		// ネットのルーターが未保有かつ電話のVA保有（2番号申し込みなので必ずVAは持っている）
		if (null == hoyuRuter && hoyuVa.equals(JFUStrConst.CD00002_1))
		{
			// OUT項目:保有ルーター保有VA区分
			inMap.put(OUT_HOYU_RUTER_HOYU_VA, JFUStrConst.CD00002_0);
		}
		// ネットのルーターが保有かつ電話のVA保有（2番号申し込みなので必ずVAは持っている）
		else if (JFUStrConst.CD00002_1.equals(hoyuRuter) && JFUStrConst.CD00002_1.equals(hoyuVa))
		{
			// OUT項目:保有ルーター保有VA区分
			inMap.put(OUT_HOYU_RUTER_HOYU_VA, JFUStrConst.CD00002_1);
		}


		return param;
	}

	/**
	 * VA機器がポート数を取得する。
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param inMap
	 * @return
	 * @return VAのポート数
	 * @throws Exception
	 */
	private String getVaPortCnt(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap inMap)
			throws RequestParameterException, Exception
	{
		// ===== VA機器変更番号の取得 =====

		// ●EKK0191A010_サービス契約内訳<eo光電話>一意照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0191A010);
		// 検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0191A010(param, fixedText, inMap);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0191A010, TEMP_ID_DTL_EKK0191A010, IN_COLUMN_LIST_EKK0191A010,
				ERR_COLUMN_EKK0191A010);

		// サービス契約内訳番号情報
		HashMap svcKeiUcwkInfoTelMap =
				JFUBPCommon
						.getTemplateListMap(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMP_EKK0191A010), TEMP_ID_DTL_EKK0191A010, 0);

		// VA機器変更番号を取得
		String vaKikiChgNo = (String)svcKeiUcwkInfoTelMap.get(EKK0191A010CBSMsg1List.VA_KIKI_CHG_NO);

		// ===== 電話の機器（VA機器）情報の取得 =====

		// ●IN項目
		// ○サービス契約番号
		String inSvcKeiNo = (String)inMap.get(IN_SVC_KEI_NO);

		// ○EKK0341B002_機器提供サービス契約一覧照会(サービス契約番号)
		// ユーザデータ初期化
		initData(param, fixedText, IN_COLUMN_LIST_EKK0341B002);
		//検索エラーなし設定
		ignoreSearchError(param, fixedText);
		// 上りマッピング
		setInMapEKK0341B002(param, fixedText, inSvcKeiNo, JFUStrConst.KK0771_KKTK_SVC_CD_C004);

		// サービスIF実行
		executeSC(handle, param, fixedText, TEMP_ID_EKK0341B002, TEMP_ID_EKK0341B002_DETAIL, IN_COLUMN_LIST_EKK0341B002, ERR_COLUMN_EKK0341B002);

		List<HashMap> kikiVaList =
				getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EKK0341B002), TEMP_ID_EKK0341B002_DETAIL);

		String portCnt = null;

		Set<String> vaKikiChgNoSet = new HashSet<String>();
		for (HashMap kikiMap : kikiVaList)
		{

			if (!JFUBPCommon.isNull(vaKikiChgNo))
			{
				// VA機器変更番号が存在する場合

				// 機器変更番号
				String kikiChgNo = (String)kikiMap.get(EKK0341B002CBSMsg1List.KIKI_CHG_NO);
				if (vaKikiChgNo.equals(kikiChgNo) || vaKikiChgNoSet.contains(kikiChgNo))
				{
					// サービス契約内訳＜eo光電話＞のVA機器変更番号と機器提供サービス契約と同じ場合

					// 宅内機器型式コード
					String taknkikiModelCd = (String)kikiMap.get(EKK0341B002CBSMsg1List.TAKNKIKI_MODEL_CD);
					// ●サービスI/F(宅内機器型式一意照会)
					// ユーザデータ初期化
					initData(param, fixedText, IN_COLUMN_LIST_EZM0411A010);
					// 検索エラーなし設定
					ignoreSearchError(param, fixedText);
					// 上りマッピング
					setInMapEZM0411A010(param, fixedText, taknkikiModelCd);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMP_ID_EZM0411A010, TEMP_ID_EZM0411A010_DETAIL, IN_COLUMN_LIST_EZM0411A010,
							ERR_COLUMN_EZM0411A010);

					// VA機器のポート数
					portCnt =
							getTemplateListValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_EZM0411A010), TEMP_ID_EZM0411A010_DETAIL,
									EZM0411A010CBSMsg1List.PORT_CNT, 0);
					break;
				}
			}
		}
		return portCnt;
	}

	/**
	 * 上りマッピング項目設定(サービス契約一覧照会（整理番号）)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param inParamKeySeiriNo 整理番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0081B025(IRequestParameterReadWrite param, String fixedText, String inParamKeySeiriNo)
			throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 整理番号
		inMap.put(EKK0081B025CBSMsg.KEY_SEIRI_NO, inParamKeySeiriNo);
	}

	/**
	 * 上りマッピング項目設定(サービス契約内訳<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:カレント)
		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 keySvcKeiKaisenUcwkNo サービス契約回線内訳
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0251A010(IRequestParameterReadWrite param, String fixedText, String keySvcKeiKaisenUcwkNo)
			throws RequestParameterException
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約回線内訳番号
		inMap.put(EKK0251A010CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, keySvcKeiKaisenUcwkNo);
	}

	/**
	 * 上りマッピング項目設定(引当棚一意照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @throws RequestParameterException
	 */
	private void setInMapEDK0451A010(IRequestParameterReadWrite param, String fixedText) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿販売種別コード
		inMap.put(EDK0451A010CBSMsg.KEY_HAMBAI_SBT_CD, JFUStrConst.CD00348_10);
		// ＫＥＹ＿運用日付
		inMap.put(EDK0451A010CBSMsg.KEY_UNYO_YMD, JCCBPCommon.getOpeDate(null));

	}

	/**
	 * 上りマッピング項目設定(課金先一覧照会（請求契約番号/サービス契約番号）)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0321B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		inMap.put(EKK0321B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(お客様一意照会）
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @throws RequestParameterException
	 */
	private void setInMapECK0011A010(IRequestParameterReadWrite param, String fixedText, String sysId) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// SYSID
		inMap.put(ECK0011A010CBSMsg.KEY_SYSID, sysId);
		// 予約適用年月日
		inMap.put(ECK0011A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約登録)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param inParamSvcKeiKaisenUcwkNo サービス契約回線内訳番号
	 * @param inParamSysid 				SYSID
	 * @param inParamMskmDtlNo 			申込明細番号
	 * @param shelfCd 					引当棚一意照会.棚コード
	 * @param custName 					お客様一意照会.お客様名
	 * @param custNameKana 				お客様一意照会.お客様カナ名
	 * @param kaisenUwMap		 		サービス契約回線内訳一意照会Map
	 * @param seikyKeiNoNet				請求契約番号
	 * @param inParamUpdDtmBf			更新年月日時分秒
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0341D010(IRequestParameterReadWrite param,
				String fixedText,
				String inParamSvcKeiKaisenUcwkNo,
				String inParamSysid,
				String inParamMskmDtlNo,
				String shelfCd,
				String custName,
				String custNameKana,
				HashMap kaisenUwMap,
				String seikyKeiNoNet,
				String inParamUpdDtmBf) throws RequestParameterException
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 機器提供サービスコード
		inMap.put(EKK0341D010CBSMsg.KKTK_SVC_CD, JFUStrConst.KK0771_KKTK_SVC_CD_C024);	// 固定値("C024":多機能ルーター)
		// 料金コースコード
		inMap.put(EKK0341D010CBSMsg.PCRS_CD, JFUStrConst.CD00134_C94);					// 固定値("C94":ｅｏ光多機能ルーター（レンタル）)
		// 料金プランコード
		inMap.put(EKK0341D010CBSMsg.PPLAN_CD, JFUStrConst.CD00565_PC9401);				// 固定値("PC9401":ｅｏ光多機能ルーター（レンタル）)
		// 機器提供種別コード
		inMap.put(EKK0341D010CBSMsg.KKTK_SBT_CD, JFUStrConst.CD00212_02);				// 固定値("02":レンタル )
		// 販売種別コード
		inMap.put(EKK0341D010CBSMsg.HAMBAI_SBT_CD, JFUStrConst.CD00348_10);				// 固定値("10":標準（新品）)
		// 宅内機器種別コード
		inMap.put(EKK0341D010CBSMsg.TAKNKIKI_SBT_CD, JFUStrConst.CD01262_R0);			// 固定値("R0":多機能ルーター)
		// 機器設置先場所番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_PLACE_NO, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_NO));
		// 親契約識別コード
		inMap.put(EKK0341D010CBSMsg.OYA_KEI_SKBT_CD, JFUStrConst.CD00804_02);			// 固定値("02":サービス契約回線内訳)
		// サービス契約回線内訳番号
		inMap.put(EKK0341D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, inParamSvcKeiKaisenUcwkNo);
		// SYSID
		inMap.put(EKK0341D010CBSMsg.SYSID, inParamSysid);
		// 申込明細番号
		inMap.put(EKK0341D010CBSMsg.MSKM_DTL_NO, inParamMskmDtlNo);
		// 機器引当指定倉庫コード
		inMap.put(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, JFUStrConst.DK0091_SOKO_CD_000001);
		// 機器引当指定倉庫棚コード
		inMap.put(EKK0341D010CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD, shelfCd);

		// 機器送付先名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_NM, custName);
		// 機器送付先カナ名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_KANA, custNameKana);
		// 機器送付先住所コード
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_AD_CD, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD));
		// 機器送付先郵便番号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_PCD, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
		// 機器送付先都道府県名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_STATE_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
		// 機器送付先市区町村名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_CITY_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
		// 機器送付先大字通称名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_OAZTSU_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
		// 機器送付先字丁目名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_AZCHO_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
		// 機器送付先番地号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_BNCHIGO, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
		// 機器送付先住所補記・建物名
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_ADRTTM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
		// 機器送付先住所補記・部屋番号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_ADRRM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
		// 機器送付先電話番号
		inMap.put(EKK0341D010CBSMsg.KIKI_SOHUS_TELNO, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO));
		// マンション物件番号
		inMap.put(EKK0341D010CBSMsg.MANSION_BUKKEN_NO, kaisenUwMap.get(EKK0251A010CBSMsg1List.MANSION_BUKKEN_NO));
		// 機器送付先個別指定フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_SHS_KBT_SHITEI_FLG, JFUStrConst.KK0341_KIKI_SHS_KBT_SHITEI_FLG_1);
		// 配送区分
		inMap.put(EKK0341D010CBSMsg.HAISO_DIV, JFUStrConst.CD00020_00);
		// 異動区分
		inMap.put(EKK0341D010CBSMsg.IDO_DIV, JFUStrConst.CD00576_00041);
		// 機器送付先住所手動入力フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, JFUStrConst.CD01239_0);
		// 請求契約番号
		inMap.put(EKK0341D010CBSMsg.SEIKY_KEI_NO, seikyKeiNoNet);
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0341D010CBSMsg.UPD_DTM_BF, inParamUpdDtmBf);
		// 住所未確定フラグ
		inMap.put(EKK0341D010CBSMsg.AD_MI_FIX_FLG, JFUStrConst.CD00467_0);
		// 機器付加情報コード
		inMap.put(EKK0341D010CBSMsg.KIKI_HUKA_INFO_CD, JFUStrConst.CD00866_004);

		// 機器設置先住所コード
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_AD_CD, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_AD_CD));
		// 機器設置先郵便番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_PCD, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_PCD));
		// 機器設置先都道府県名
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_STATE_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_STATE_NM));
		// 機器設置先市区町村名
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_CITY_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_CITY_NM));
		// 機器設置先大字通称名
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_OAZTSU_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_OAZTSU_NM));
		// 機器設置先字丁目名
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_AZCHO_NM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_AZCHO_NM));
		// 機器設置先番地号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_BNCHIGO, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_BNCHIGO));
		// 機器設置先住所補記・建物名
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRTTM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRTTM));
		// 機器設置先住所補記・部屋番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SAKI_ADRRM, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_ADRRM));
		// 機器設置先電話番号
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SK_TELNO, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLACE_TELNO));
		// 機器設置先_契約者住所差異フラグ
		inMap.put(EKK0341D010CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG, kaisenUwMap.get(EKK0251A010CBSMsg1List.KAISEN_PLC_KSH_AD_SAI_FLG));


	}

	/**
	 * 上りマッピング項目設定(機器提供サービス契約一覧照会（サービス契約番号）)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapEKK0341B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo,String kktkSvcCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿機器提供サービスコード
		inMap.put(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, kktkSvcCd);
	}

	/**
	 * 上りマッピング項目設定(宅内機器型式一意照会)
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param taknkikiModelCd 宅内機器型式コード
	 * @throws RequestParameterException
	 */
	private void setInMapEZM0411A010(IRequestParameterReadWrite param, String fixedText, String taknkikiModelCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿宅内機器型式コード
		inMap.put(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD, taknkikiModelCd);
	}

	/**
	 * 機器オプションサービス契約登録(ネット)の上りマッピング処理です。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @param mskmDtlNo 申込明細番号
	 * @param seikyKeiNo 請求契約番号
	 * @param hoyuRouterCd 保有ルーターコード
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param updDtm 更新年月日時分秒
	 * @throws RequestParameterException
	 */
	private void setInMapEKK2811D010_1(IRequestParameterReadWrite param, String fixedText,
			String sysid,
			String mskmDtlNo,
			String seikyKeiNo,
			String hoyuRouterCd,
			String kktkSvcKeiNo,
			String updDtm) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機器オプションサービスコード
		inMap.put(EKK2811D010CBSMsg.KKOP_SVC_CD, JFUStrConst.KK2801_KKOP_SVC_CD_G01);	// 固定値("G01":ｅｏ光多機能ルーター　ルーター機能)

		// 料金コースコード
		String pcrsCd = null;
		// 料金プランコード
		String pplanCd = null;
		// 01:ベーシック　02:ベーシックギガの場合
		if (JFUStrConst.CD01313_01.equals(hoyuRouterCd) || JFUStrConst.CD01313_02.equals(hoyuRouterCd))
		{
			pcrsCd = JFUStrConst.CD01613_G01;
			pplanCd = JFUStrConst.CD00565_PG0101;
		}
		// 無線機能の場合
		else if(JFUStrConst.CD01313_03.equals(hoyuRouterCd) || JFUStrConst.CD01313_04.equals(hoyuRouterCd) || JFUStrConst.CD01313_05.equals(hoyuRouterCd) || JFUStrConst.CD01313_06.equals(hoyuRouterCd))
		{
			pcrsCd = JFUStrConst.CD01613_G02;
			pplanCd = JFUStrConst.CD00565_PG0201;
		}
		// 料金コースコード
		inMap.put(EKK2811D010CBSMsg.PCRS_CD, pcrsCd);
		// 料金プランコード
		inMap.put(EKK2811D010CBSMsg.PPLAN_CD, pplanCd);
		// 機器提供サービス契約番号
		inMap.put(EKK2811D010CBSMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		// SYSID
		inMap.put(EKK2811D010CBSMsg.SYSID, sysid);
		// 申込明細番号
		inMap.put(EKK2811D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		// 予約適用年月日
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		// 予約適用コード
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_CD, JFUStrConst.CD00343_2);	// 固定値("2"：予約適用コード 予約確定)
		// 違約金発生コード
		inMap.put(EKK2811D010CBSMsg.PNLTY_HASSEI_CD, JFUStrConst.CD01375_1); // 固定値("1"：違約金発生)
		// 異動区分
		inMap.put(EKK2811D010CBSMsg.IDO_DIV, JFUStrConst.CD00576_00041);	// 固定値("00041"：光電話・番号追加)
		// 請求契約番号
		inMap.put(EKK2811D010CBSMsg.SEIKY_KEI_NO, seikyKeiNo);
		// 機器連帯契約変更手続中フラグ
		inMap.put(EKK2811D010CBSMsg.KIKI_RNTAI_KEI_CHGECHU_FLG, JFUStrConst.KK2811_KIKI_RNTAI_KEI_CHGECHU_FLG_1);	// 固定値("1":連帯)
		// 更新年月日時分秒(更新前)
		inMap.put(EKK2811D010CBSMsg.UPD_DTM_BF, updDtm);
	}

	/**
	 * 機器オプションサービス契約登録(電話)の上りマッピング処理です。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysid SYSID
	 * @param mskmDtlNo 申込明細番号
	 * @param seikyKeiNo 請求契約番号
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param updDtm 更新年月日時分秒
	 * @throws RequestParameterException
	 */
	private void setInMapEKK2811D010_2(IRequestParameterReadWrite param, String fixedText,
			String sysid,
			String mskmDtlNo,
			String seikyKeiNo,
			String kktkSvcKeiNo,
			String updDtm) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 機器オプションサービスコード
		inMap.put(EKK2811D010CBSMsg.KKOP_SVC_CD, JFUStrConst.KK2801_KKOP_SVC_CD_G02);	// 固定値("G02":ｅｏ光多機能ルーター　電話アダプター機能)

		// 料金コースコード
		inMap.put(EKK2811D010CBSMsg.PCRS_CD, JFUStrConst.CD01614_G04);		// 固定値("G04":電話アダプター機能（２番号）)
		// 料金プランコード
		inMap.put(EKK2811D010CBSMsg.PPLAN_CD, JFUStrConst.CD00565_PG0401);	// 固定値("PG0401":電話アダプター機能（２番号）)
		// 機器提供サービス契約番号
		inMap.put(EKK2811D010CBSMsg.KKTK_SVC_KEI_NO, kktkSvcKeiNo);
		// SYSID
		inMap.put(EKK2811D010CBSMsg.SYSID, sysid);
		// 申込明細番号
		inMap.put(EKK2811D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		// 予約適用年月日
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		// 予約適用コード
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_CD, JFUStrConst.CD00343_2);	// 固定値("2"：予約適用コード 予約確定)
		// 違約金発生コード
		inMap.put(EKK2811D010CBSMsg.PNLTY_HASSEI_CD, JFUStrConst.CD01375_1); // 固定値("1"：違約金発生)
		// 異動区分
		inMap.put(EKK2811D010CBSMsg.IDO_DIV, JFUStrConst.CD00576_00041);	// 固定値("00041"：光電話・番号追加)
		// 請求契約番号
		inMap.put(EKK2811D010CBSMsg.SEIKY_KEI_NO, seikyKeiNo);
		// 機器連帯契約変更手続中フラグ
		inMap.put(EKK2811D010CBSMsg.KIKI_RNTAI_KEI_CHGECHU_FLG, JFUStrConst.KK2811_KIKI_RNTAI_KEI_CHGECHU_FLG_0);	// 固定値("0"：主契約)
		// 更新年月日時分秒(更新前)
		inMap.put(EKK2811D010CBSMsg.UPD_DTM_BF, updDtm);
	}

	/**
	 * チェック処理
	 *
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return チェック処理用マップ
	 * @throws Exception
	 */
	@Override
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}
}
