/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUNewAddKkopSvcKeiCC
*   ソースファイル名：JFUNewAddKkopSvcKeiCC.java
*   作成者          ：富士通
*   日付            ：2014年01月18日
*＜機能概要＞
*   VA機器キャンセルコモンコンポーネント部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v7.00       2014/01/18   FJ)岡井     新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.CCException;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0081B007CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081B007CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0241B003CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0241B003CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B005CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B005CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341B504CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341B504CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0341C230CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0341C330CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK2811D010CBSMsg;

/**
 * 機器オプションサービス契約登録フローコモンコンポーネント部品です。
 * <br>
 * @author 富士通
 */
public class JFUNewAddKkopSvcKeiCC extends JFUBaseCC
{

	// ■機器提供サービス契約一覧照会（サービス契約番号）
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String TMP_ID_EKK0341B002 = "EKK0341B002";
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約番号）明細) */
	private static final String TMP_ID_DTL_EKK0341B002 = EKK0341B002CBSMsg.EKK0341B002CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final List<String> IN_COL_LIST_EKK0341B002 =
			Arrays.asList(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, EKK0341B002CBSMsg.KEY_SVC_KEI_NO, EKK0341B002CBSMsg.KEY_KKTK_SVC_KEI_NO,
					EKK0341B002CBSMsg.KEY_SORT_KBN);
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（サービス契約番号）) */
	private static final String ERR_COL_EKK0341B002 = EKK0341B002CBSMsg.KEY_KKTK_SVC_CD_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK0341B002 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK0341B002 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■機器提供サービス契約キャンセル
	/** テンプレートID(機器提供サービス契約キャンセル) */
	private static final String TMP_ID_EKK0341C330 = "EKK0341C330";
	/** テンプレートID(機器提供サービス契約キャンセル明細) */
	private static final String TMP_ID_DTL_EKK0341C330 = null;
	/** IN項目リスト(機器提供サービス契約キャンセル) */
	private static final List<String> IN_COL_LIST_EKK0341C330 =
			Arrays.asList(EKK0341C330CBSMsg.KKTK_SVC_KEI_NO, EKK0341C330CBSMsg.MSKM_DTL_NO, EKK0341C330CBSMsg.SVC_CANCEL_RSN_CD,
					EKK0341C330CBSMsg.IDO_DIV, EKK0341C330CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(機器提供サービス契約キャンセル) */
	private static final String ERR_COL_EKK0341C330 = null;

	// ■機器オプションサービス契約登録
	/** テンプレートID(機器オプションサービス契約登録) */
	private static final String TMP_ID_EKK2811D010 = "EKK2811D010";
	/** テンプレートID(機器オプションサービス契約登録明細) */
	private static final String TMP_ID_DTL_EKK2811D010 = null;
	/** IN項目リスト(機器オプションサービス契約登録) */
	private static final List<String> IN_COL_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_COL_EKK2811D010 = null;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK2811D010 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK2811D010 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■機器提供サービス契約一覧照会（サービス契約回線内訳番号）
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約回線内訳番号）) */
	private static final String TMP_ID_EKK0341B504 = "EKK0341B504";
	/** テンプレートID(機器提供サービス契約一覧照会（サービス契約回線内訳番号）明細) */
	private static final String TMP_ID_DTL_EKK0341B504 = EKK0341B504CBSMsg.EKK0341B504CBSMSG1LIST;
	/** IN項目リスト(機器提供サービス契約一覧照会（サービス契約回線内訳番号）) */
	private static final List<String> IN_COL_LIST_EKK0341B504 =
			Arrays.asList(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO);
	/** 関連チェックエラー項目(機器提供サービス契約一覧照会（サービス契約回線内訳番号）) */
	private static final String ERR_COL_EKK0341B504 = EKK0341B002CBSMsg.KEY_KKTK_SVC_CD_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK0341B504 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK0341B504 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■回線対象サービス契約一覧照会（サービス契約番号）
	/** テンプレートID(回線対象サービス契約一覧照会（サービス契約番号）) */
	private static final String TMP_ID_EKK0241B003 = "EKK0241B003";
	/** テンプレートID(回線対象サービス契約一覧照会（サービス契約番号）明細) */
	private static final String TMP_ID_DTL_EKK0241B003 = EKK0241B003CBSMsg.EKK0241B003CBSMSG1LIST;
	/** IN項目リスト(回線対象サービス契約一覧照会（サービス契約番号）) */
	private static final List<String> IN_COL_LIST_EKK0241B003 =
			Arrays.asList(EKK0241B003CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(回線対象サービス契約一覧照会（サービス契約番号）) */
	private static final String ERR_COL_EKK0241B003 = EKK0241B003CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK0241B003 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK0241B003 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■機器提供サービス契約情報変更
	/** テンプレートID(機器提供サービス契約情報変更) */
	private static final String TMP_ID_EKK0341C230 = "EKK0341C230";
	/** テンプレートID(機器提供サービス契約情報変更明細) */
	private static final String TMP_ID_DTL_EKK0341C230 = null;
	/** IN項目リスト(機器提供サービス契約情報変更) */
	private static final List<String> IN_COL_LIST_EKK0341C230 =
			Arrays.asList(EKK0341C230CBSMsg.AD_MI_FIX_FLG, EKK0341C230CBSMsg.CAS_CARD_USE_KYODAK_YMD, EKK0341C230CBSMsg.EO_TV_KKST_SNN_STAT_CD,
					EKK0341C230CBSMsg.FTRIAL_KANYU_YMD, EKK0341C230CBSMsg.FTRIAL_PRD_ENDYMD, EKK0341C230CBSMsg.HAISO_DIV,
					EKK0341C230CBSMsg.HAISO_REQ_SHITEI_YMD, EKK0341C230CBSMsg.HAISO_WAY_CD, EKK0341C230CBSMsg.HAMBAI_SBT_CD,
					EKK0341C230CBSMsg.HDD_CAPA_CD, EKK0341C230CBSMsg.HONKANYU_IKO_KIGEN_YMD, EKK0341C230CBSMsg.HONKANYU_YMD,
					EKK0341C230CBSMsg.HOSHO_CD, EKK0341C230CBSMsg.IDO_DIV, EKK0341C230CBSMsg.KAISHU_KIKI_UM,
					EKK0341C230CBSMsg.KIKI_HKAT_SHITEI_SKDN_CD, EKK0341C230CBSMsg.KIKI_HKAT_SHITEI_SOKO_CD, EKK0341C230CBSMsg.KIKI_HUKA_INFO_CD,
					EKK0341C230CBSMsg.KIKI_ITENS_MV_JSSIS_SKCD, EKK0341C230CBSMsg.KIKI_SEIZO_NO, EKK0341C230CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG,
					EKK0341C230CBSMsg.KIKI_SHS_KBT_SHITEI_FLG, EKK0341C230CBSMsg.KIKI_SOHUS_AD_CD, EKK0341C230CBSMsg.KIKI_SOHUS_AD_CHK_LV,
					EKK0341C230CBSMsg.KIKI_SOHUS_ADRRM, EKK0341C230CBSMsg.KIKI_SOHUS_ADRTTM, EKK0341C230CBSMsg.KIKI_SOHUS_AZCHO_NM,
					EKK0341C230CBSMsg.KIKI_SOHUS_BNCHIGO, EKK0341C230CBSMsg.KIKI_SOHUS_CITY_NM, EKK0341C230CBSMsg.KIKI_SOHUS_KANA,
					EKK0341C230CBSMsg.KIKI_SOHUS_KSH_AD_SAI_FLG, EKK0341C230CBSMsg.KIKI_SOHUS_NM, EKK0341C230CBSMsg.KIKI_SOHUS_OAZTSU_NM,
					EKK0341C230CBSMsg.KIKI_SOHUS_PCD, EKK0341C230CBSMsg.KIKI_SOHUS_STATE_NM, EKK0341C230CBSMsg.KIKI_SOHUS_TELNO,
					EKK0341C230CBSMsg.KIKI_SORYO_SAKSEI_YMD, EKK0341C230CBSMsg.KIKI_SORYO_UM, EKK0341C230CBSMsg.KIKI_STC_AD_CHK_LV,
					EKK0341C230CBSMsg.KIKI_STC_SAKI_AD_CD, EKK0341C230CBSMsg.KIKI_STC_SAKI_ADRRM, EKK0341C230CBSMsg.KIKI_STC_SAKI_ADRTTM,
					EKK0341C230CBSMsg.KIKI_STC_SAKI_AZCHO_NM, EKK0341C230CBSMsg.KIKI_STC_SAKI_BNCHIGO, EKK0341C230CBSMsg.KIKI_STC_SAKI_CITY_NM,
					EKK0341C230CBSMsg.KIKI_STC_SAKI_KANA, EKK0341C230CBSMsg.KIKI_STC_SAKI_NM, EKK0341C230CBSMsg.KIKI_STC_SAKI_OAZTSU_NM,
					EKK0341C230CBSMsg.KIKI_STC_SAKI_PCD, EKK0341C230CBSMsg.KIKI_STC_SAKI_STATE_NM, EKK0341C230CBSMsg.KIKI_STC_SK_KSH_AD_SAI_FLG,
					EKK0341C230CBSMsg.KIKI_STC_SK_TELNO, EKK0341C230CBSMsg.KIKI_STI_JI_KOCOMP_CD, EKK0341C230CBSMsg.KIKI_STI_JI_KOCOMP_SLF_CD,
					EKK0341C230CBSMsg.KIKI_STI_JI_KRIPLACE_SKCD, EKK0341C230CBSMsg.KIKI_STI_JI_YTKSKOF_CD,
					EKK0341C230CBSMsg.KIKI_STI_JI_YTKSKOF_SLF_CD, EKK0341C230CBSMsg.KIKI_STS_KKK_SEIRI_CHU_FLG, EKK0341C230CBSMsg.KKST_SNN_YMD,
					EKK0341C230CBSMsg.KKTK_SBT_CD, EKK0341C230CBSMsg.KKTK_SVC_KEI_NO, EKK0341C230CBSMsg.LINK_STB_FLG,
					EKK0341C230CBSMsg.PNLTY_HASSEI_CD, EKK0341C230CBSMsg.SHKA_FIN_JI_SYRZM_FLG, EKK0341C230CBSMsg.SVC_STA_JI_HIS_JOKYO_SKCD,
					EKK0341C230CBSMsg.SVC_STA_KISAN_YMD, EKK0341C230CBSMsg.TAKNKIKI_MODEL_CD, EKK0341C230CBSMsg.TSUSHIN_KIKI_SET_CD,
					EKK0341C230CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(機器提供サービス契約情報変更) */
	private static final String ERR_COL_EKK0341C230 = EKK0341C230CBSMsg.KKTK_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK0341C230 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK0341C230 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■回線利用中サービス契約一覧照会
	/** テンプレートID(回線利用中サービス契約一覧照会) */
	private static final String TMP_ID_EKK0081B007 = "EKK0081B007";
	/** テンプレートID(回線利用中サービス契約一覧照会明細) */
	private static final String TMP_ID_DTL_EKK0081B007 = EKK0081B007CBSMsg.EKK0081B007CBSMSG1LIST;
	/** IN項目リスト(回線利用中サービス契約一覧照会) */
	private static final List<String> IN_COL_LIST_EKK0081B007 =
			Arrays.asList(EKK0081B007CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, EKK0081B007CBSMsg.KEY_OPE_YMD);
	/** 関連チェックエラー項目(回線利用中サービス契約一覧照会) */
	private static final String ERR_COL_EKK0081B007 = EKK0081B007CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK0081B007 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK0081B007 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■課金先一覧照会（サービス契約番号）
	/** テンプレートID(課金先一覧照会（サービス契約番号）) */
	private static final String TMP_ID_EKK0321B005 = "EKK0321B005";
	/** テンプレートID(課金先一覧照会（サービス契約番号）明細) */
	private static final String TMP_ID_DTL_EKK0321B005 = EKK0321B005CBSMsg.EKK0321B005CBSMSG1LIST;
	/** IN項目リスト(課金先一覧照会（サービス契約番号）) */
	private static final List<String> IN_COL_LIST_EKK0321B005 =
			Arrays.asList(EKK0321B005CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(課金先一覧照会（サービス契約番号）) */
	private static final String ERR_COL_EKK0321B005 = EKK0321B005CBSMsg.KEY_SVC_KEI_NO;
	/** SC実行結果取得キー */
	private static final String TEMP_TEMPLATE_KEY_EKK0321B005 = TEMP_TEMPLATE_PRIFIX + TMP_ID_EKK0321B005 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	// ■IN項目
	/** IN項目：ファミリーパック申込有無 */
	private static final String IN_FAMIPA_MSKM_UM = "in_famipa_mskm_um";
	/** IN項目：サービス契約番号(電話) */
	private static final String IN_SVC_KEI_NO_TEL = "in_svc_kei_no_tel";
	/** IN項目：異動区分 */
	private static final String IN_IDO_DIV = "in_ido_div";
	/** IN項目：SYSID */
	private static final String IN_SYSID = "in_sysid";
	///** IN項目：請求契約番号 */
	//private static final String IN_SEIKY_KEI_NO = "in_seiky_kei_no";
	/** IN項目：申込明細番号 */
	private static final String IN_MSKM_DTL_NO = "in_mskm_dtl_no";
	/** IN項目：販売タイプ */
	private static final String IN_HANBAI_TYPE = "in_hanbai_type";
	/** IN項目：加入契約申込条件コード */
	private static final String IN_KNYKEI_MSKM_JOKEN_CD = "in_knykei_mskm_joken_cd";
	/** IN項目：選択中サービス(電話) */
	private static final String IN_SELECT_SVC_TEL = "in_select_svc_tel";
	/** IN項目：サービス契約回線内訳番号 */
	private static final String IN_SVC_KEI_KAISEN_UW_NO = "in_svc_kei_kaisen_uw_no";

	// ■OUT項目
	/** OUT項目：登録フラグ */
	private static final String OUT_KKOP_ADD_FLG = "out_kkop_add_flg";

	// ■その他
	/** 請求契約番号(ネット) */
	private static final String SEIKY_KEI_NO_NET = "seiky_kei_no_net";
	/** 全戸一括マンション回線内訳番号取得キー */
	private static final String MANS_ZENKO_KAISEN_UE_NO_KEY = "svc_kei_kaisen_ucwk_no";
	/** 全戸一括マンション回線内訳番号取得マップ */
	private static final String MANS_ZENKO_KAISEN_UE_NO_MAP = "JFUAddUsePlaceInfoCCWork";
	/** 該当データなしエラー */
	private static final String NOTHING_ERR_MSG = "該当データなしエラー";

	/**
	 * 機器オプション登録処理です<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite execute(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// ファミリーパック申込有無(設定値が「1」の場合は申込有り)
		boolean famipaMskmUm = JFUStrConst.CD00002_1.equals((String)dataMap.get(IN_FAMIPA_MSKM_UM));
		// サービス契約番号(電話)
		String svcKeiNoTel = (String)dataMap.get(IN_SVC_KEI_NO_TEL);
		// サービス契約番号(電話)
		String selSvcTel = (String)dataMap.get(IN_SELECT_SVC_TEL);
		// 販売タイプ
		String hanbaiType = (String)dataMap.get(IN_HANBAI_TYPE);
		// 加入契約申込条件コード
		String knykeiMskmJokenCd = (String)dataMap.get(IN_KNYKEI_MSKM_JOKEN_CD);

		// ●全戸一括マンション機器提供サービス契約情報更新対応
		if(JFUStrConst.HNBAI_TYPE_CON.equals(hanbaiType) && JFUStrConst.KNYKEI_MSKM_JOKEN_IKT.equals(knykeiMskmJokenCd)
				&& famipaMskmUm && (!JFUBPCommon.isNull(svcKeiNoTel) || JFUStrConst.NOW_SVC_TEL_KEI_CHU.equals(selSvcTel)))
		{
			updKktkInfo(handle, param, fixedText);
			return param;
		}

		// ●実行判定
		if(!famipaMskmUm || JFUBPCommon.isNull(svcKeiNoTel))
		{
			// ファミパ申込がない、または、電話のサービス契約番号がNULLの場合、処理を実行しない
			return param;
		}

		// ●回線内訳番号取得
		getKaisenInfo(handle, param, fixedText);

		// ●請求契約(ネット)情報取得
		getSeikyKeiInfoNet(handle, param, fixedText);

		// ●機器オプション登録処理(ファミパ申込有り)
		// ※この処理が動く場合、JFUFamipaRouterCCは動かない
		if(famipaMskmUm)
		{
			// 機器オプションサービス契約登録処理
			addKkop(handle, param, fixedText);
		}

		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;
	}

	/**
	 * VA機器情報取得処理です。
	 * 
	 * <br>
	 * @param handle ハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ文字列
	 * @param svcKeiNoTel サービス契約番号(電話)
	 * @return VA機器情報マップ
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private HashMap getVaKikiInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, String svcKeiNoTel) throws Exception
	{
		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// ステータス
		HashMap vaKikiInfo = new HashMap();

		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0341B002);
		// 上りマッピング
		setEKK0341B002(param, fixedText, svcKeiNoTel, JFUStrConst.CD00132_C004);
		// データなしエラーなし
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TMP_ID_EKK0341B002, TMP_ID_DTL_EKK0341B002, IN_COL_LIST_EKK0341B002, ERR_COL_EKK0341B002);
		// 明細取得
		List<HashMap> vaKikiList = getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_EKK0341B002), TMP_ID_DTL_EKK0341B002);

		if(vaKikiList != null && vaKikiList.size() > 0)
		{
			for(HashMap childMap : vaKikiList)
			{
				String vaKikiStat = JFUStrConst.EMPTY;
				if(!JFUBPCommon.isNull(childMap.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT)))
				{
					// 機器提供サービス契約ステータス
					vaKikiStat = (String)childMap.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT);
				}

				if(!JFUStrConst.CD00056_910.equals(vaKikiStat) && !JFUStrConst.CD00056_920.equals(vaKikiStat))
				{
					vaKikiInfo = childMap;
					break;
				}
			}
		}

		return vaKikiInfo;
	}

	/**
	 * サービス契約(ネット)情報取得処理です。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void getSeikyKeiInfoNet(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 料金グループコード(ネット)対象リスト
		List<String> netPrcGrpCdList = Arrays.asList(JFUStrConst.CD00133_02,JFUStrConst.CD00133_03,JFUStrConst.CD00133_04);
		// サービス契約ステータス(ネット)対象外リスト
		List<String> netSvcKeiStatList = Arrays.asList(JFUStrConst.CD01616_910,JFUStrConst.CD01616_920);

		// ●回線利用中サービス契約一覧照会
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0081B007);
		// 上りマッピング
		setEKK0081B007(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TMP_ID_EKK0081B007, TMP_ID_DTL_EKK0081B007, IN_COL_LIST_EKK0081B007, ERR_COL_EKK0081B007);
		// 明細取得
		List<HashMap> kaisenSvcKeiInfoList = getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_EKK0081B007), TMP_ID_DTL_EKK0081B007);

		// 一時格納用変数
		String svcKeiNoNet = JFUStrConst.EMPTY;
		String seiKyKeiNoNet = JFUStrConst.EMPTY;

		if(kaisenSvcKeiInfoList != null && kaisenSvcKeiInfoList.size() > 0)
		{
			for(HashMap childMap : kaisenSvcKeiInfoList)
			{
				String prcGrpCd = JFUStrConst.EMPTY;
				String svcKeiStat = JFUStrConst.EMPTY;

				// 料金グループコード
				if(childMap.containsKey(EKK0081B007CBSMsg1List.PRC_GRP_CD) && !JFUBPCommon.isNull(childMap.get(EKK0081B007CBSMsg1List.PRC_GRP_CD)))
				{
					prcGrpCd = (String)childMap.get(EKK0081B007CBSMsg1List.PRC_GRP_CD);
				}
				// サービス契約ステータス
				if(childMap.containsKey(EKK0081B007CBSMsg1List.SVC_KEI_STAT) && !JFUBPCommon.isNull(childMap.get(EKK0081B007CBSMsg1List.SVC_KEI_STAT)))
				{
					svcKeiStat = (String)childMap.get(EKK0081B007CBSMsg1List.SVC_KEI_STAT);
				}

				// 一致する情報を取得
				if(!netSvcKeiStatList.contains(svcKeiStat) && netPrcGrpCdList.contains(prcGrpCd))
				{
					// サービス契約番号
					if(childMap.containsKey(EKK0081B007CBSMsg1List.SVC_KEI_NO) && !JFUBPCommon.isNull(childMap.get(EKK0081B007CBSMsg1List.SVC_KEI_NO)))
					{
						svcKeiNoNet = (String)childMap.get(EKK0081B007CBSMsg1List.SVC_KEI_NO);
					}

					break;
				}
			}
		}

		if(!JFUBPCommon.isNull(svcKeiNoNet))
		{
			// ●課金先一覧照会（サービス契約番号）
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK0321B005);
			// 上りマッピング
			setEKK0321B005(param, fixedText, svcKeiNoNet);
			// サービスIF実行
			executeSC(handle, param, fixedText, TMP_ID_EKK0321B005, TMP_ID_DTL_EKK0321B005, IN_COL_LIST_EKK0321B005, ERR_COL_EKK0321B005);
			// 明細取得
			List<HashMap> seiKyKeiInfoList = getTemplateList(dataMap, getMaxTempTempleteKey(dataMap, TEMP_TEMPLATE_KEY_EKK0321B005), TMP_ID_DTL_EKK0321B005);

			if(seiKyKeiInfoList != null && seiKyKeiInfoList.size() > 0)
			{
				for(HashMap childMap : seiKyKeiInfoList)
				{
					// 請求契約番号
					if(childMap.containsKey(EKK0321B005CBSMsg1List.SEIKY_KEI_NO) 
							&& !JFUBPCommon.isNull(childMap.get(EKK0321B005CBSMsg1List.SEIKY_KEI_NO)))
					{
						seiKyKeiNoNet = (String)childMap.get(EKK0321B005CBSMsg1List.SEIKY_KEI_NO);
						break;
					}
				}
			}

			if(JFUBPCommon.isNull(seiKyKeiNoNet))
			{
				// 値がNULLの場合エラー
				throw new CCException(NOTHING_ERR_MSG, new Exception());
			}
			else
			{
				dataMap.put(SEIKY_KEI_NO_NET, seiKyKeiNoNet);
			}
		}
	}

	/**
	 * 上りマッピング処理(機器提供サービス契約一覧照会（サービス契約番号）)です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @param kktkSvcCd 機器提供サービスコード
	 * @throws RequestParameterException 
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0341B002(IRequestParameterReadWrite param, String fixedText, String svcKeiNo, String kktkSvcCd) throws Exception
	{
		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_3);

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);
		// ＫＥＹ＿機器提供サービスコード
		dataMap.put(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD, kktkSvcCd);
		// ＫＥＹ＿サービス契約番号
		dataMap.put(EKK0341B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング処理(課金先一覧照会（サービス契約番号）)です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0321B005(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws Exception
	{
		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機能コード設定
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ＫＥＹ＿サービス契約番号
		dataMap.put(EKK0321B005CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * VA機器キャンセル処理です。
	 * 
	 * <br>
	 * @param handle ハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ文字列
	 * @param vaKikiInfo VA機器情報マップ
	 * @param idoDiv 異動区分
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private void vaKikiCancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap vaKikiInfo, String idoDiv)
			throws Exception
	{
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0341C330);
		// 上りマッピング
		setEKK0341C330(param, fixedText, vaKikiInfo, idoDiv);
		// データなしエラーなし
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TMP_ID_EKK0341C330, TMP_ID_DTL_EKK0341C330, IN_COL_LIST_EKK0341C330, ERR_COL_EKK0341C330);
	}

	/**
	 * 上りマッピング処理(機器提供サービス契約キャンセル)です。
	 * 
	 * <br>
	 * @param param ハンドル
	 * @param fixedText ユーザ文字列
	 * @param vaKikiInfo VA機器情報マップ
	 * @param idoDiv 異動区分
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0341C330(IRequestParameterReadWrite param, String fixedText, HashMap vaKikiInfo, String idoDiv) throws Exception
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機器提供サービス契約番号
		dataMap.put(EKK0341C330CBSMsg.KKTK_SVC_KEI_NO, (String)vaKikiInfo.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO));
		// 申込明細番号
		dataMap.put(EKK0341C330CBSMsg.MSKM_DTL_NO, (String)vaKikiInfo.get(EKK0341B002CBSMsg1List.MSKM_DTL_NO));
		// 異動区分
		dataMap.put(EKK0341C330CBSMsg.IDO_DIV, idoDiv);
		// 更新年月日時分秒(更新前)
		dataMap.put(EKK0341C330CBSMsg.UPD_DTM_BF, (String)vaKikiInfo.get(EKK0341B002CBSMsg1List.LAST_UPD_DTM));
	}

	/**
	 * 上りマッピング処理(機器提供サービス契約一覧照会（サービス契約回線内訳番号）)です。
	 * 
	 * <br>
	 * @param param ハンドル
	 * @param fixedText ユーザ文字列
	 * @param vaKikiInfo VA機器情報マップ
	 * @param idoDiv 異動区分
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0341B504(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機器提供サービス契約番号
		dataMap.put(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)dataMap.get(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
	}

	/**
	 * 上りマッピング処理(機器提供サービス契約一覧照会（サービス契約回線内訳番号）)(全戸一括マンション用)です。
	 * 
	 * <br>
	 * @param param ハンドル
	 * @param fixedText ユーザ文字列
	 * @param vaKikiInfo VA機器情報マップ
	 * @param idoDiv 異動区分
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0341B504MansZenko(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// 機器提供サービス契約番号
		String svcKeiKaiUwNo = (String)dataMap.get(IN_SVC_KEI_KAISEN_UW_NO);
		if(JFUBPCommon.isNull(svcKeiKaiUwNo))
		{
			dataMap.put(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, getWorkMapValue(param, MANS_ZENKO_KAISEN_UE_NO_KEY, MANS_ZENKO_KAISEN_UE_NO_MAP));
		}
		else
		{
			dataMap.put(EKK0341B504CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, svcKeiKaiUwNo);
		}
	}

	/**
	 * 機器オプションサービス契約登録処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void addKkop(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●機器提供サービス契約一覧照会（サービス契約回線内訳番号）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0341B504);
		// 上りマッピング
		setEKK0341B504(param, fixedText);
		// データなしエラーなし
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TMP_ID_EKK0341B504, TMP_ID_DTL_EKK0341B504, IN_COL_LIST_EKK0341B504, ERR_COL_EKK0341B504);
		// 明細取得
		List<HashMap> kikiList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341B504), TMP_ID_DTL_EKK0341B504);

		// 必要情報取得
		HashMap kikiInfoMap = new HashMap(); 
		if(kikiList != null && kikiList.size() > 0)
		{
			for(HashMap childMap : kikiList)
			{
				String kktkSvcCd = (String)childMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_CD);
				if(JFUStrConst.CD00132_C024.equals(kktkSvcCd))
				{
					kikiInfoMap.putAll(childMap);
					break;
				}
			}
		}

		// 多機能ルーター契約チェック(契約している場合、情報変更＆登録処理を実行する)
		if(kikiInfoMap != null && kikiInfoMap.size() > 0)
		{
			// 最終更新年月日時分秒を取得
			String lastUpdDtm = (String)kikiInfoMap.get(EKK0341B504CBSMsg1List.LAST_UPD_DTM);
			// 機器提供サービス契約ステータス
			String kktkSvcKeiStat = (String)kikiInfoMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT);

			// 機器提供サービス契約ステータス判定
			if(JFUStrConst.CD00056_010.equals(kktkSvcKeiStat) || JFUStrConst.CD00056_020.equals(kktkSvcKeiStat)
					|| JFUStrConst.CD00056_030.equals(kktkSvcKeiStat))
			{
				// ●機器提供サービス契約情報変更
				// ファミリーパック申込がある為、機器提供サービス契約の情報変更を行う
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0341C230);
				// 上りマッピング
				setEKK0341C230(param, fixedText, kikiInfoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TMP_ID_EKK0341C230, TMP_ID_DTL_EKK0341C230, IN_COL_LIST_EKK0341C230, ERR_COL_EKK0341C230);
				// 更新年月日時分秒取得
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341C230), EKK0341C230CBSMsg.UPD_DTM);

				// 最終更新年月日時分秒を設定(電話・テレビ)
				JFUBPCommon.setTelSvkeiLastUpdDtm(param, lastUpdDtm);
				JFUBPCommon.setTvSvkeiLastUpdDtm(param, lastUpdDtm);
			}

			// ●機器オプションサービス契約登録
			// ユーザデータ初期化
			initData(param, fixedText, IN_COL_LIST_EKK2811D010);
			// 上りマッピング
			setInMapKkopAdd(param, fixedText, kikiInfoMap, lastUpdDtm);
			// サービスIF実行
			executeSC(handle, param, fixedText, TMP_ID_EKK2811D010, TMP_ID_DTL_EKK2811D010, IN_COL_LIST_EKK2811D010, ERR_COL_EKK2811D010);
			// 更新年月日時分秒取得
			lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK2811D010), EKK2811D010CBSMsg.UPD_DTM);

			// 最終更新年月日時分秒を設定(ネット)
			JFUBPCommon.setNetSvkeiLastUpdDtm(param, lastUpdDtm);

			// ●登録フラグ設定
			// 機器オプションサービス契約にデータを登録した実績を示すフラグ
			inMap.put(OUT_KKOP_ADD_FLG, JFUStrConst.CD00002_1);
		}
	}

	/**
	 * 機器オプションサービス契約登録の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param kkopSvcCd 機器オプションサービスコード
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param kktkSvcKeiNo 機器提供サービス契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @param vaUm VA有無
	 * @param sysid SYSID
	 * @param idoDiv 異動区分
	 * @param seikyKeiNo 請求契約番号
	 * @param updDtmBf 更新年月日時分秒
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setInMapKkopAdd(IRequestParameterReadWrite param, String fixedText, HashMap kikiInfoMap, String lastUpdDtm)
			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);
		// 料金コースコード
		inMap.put(EKK2811D010CBSMsg.PCRS_CD, JFUStrConst.CD00134_G02);
		// 料金プランコード
		inMap.put(EKK2811D010CBSMsg.PPLAN_CD, JFUStrConst.CD00565_PG0201);
		// 機器提供サービス契約番号
		inMap.put(EKK2811D010CBSMsg.KKTK_SVC_KEI_NO, (String)kikiInfoMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO));
		// SYSID
		inMap.put(EKK2811D010CBSMsg.SYSID, (String)inMap.get(IN_SYSID));
		// 申込明細番号
		inMap.put(EKK2811D010CBSMsg.MSKM_DTL_NO, (String)inMap.get(IN_MSKM_DTL_NO));
		// 予約適用年月日
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_YMD, JFUBPCommon.getOpeDate(null));
		// 予約適用コード
		inMap.put(EKK2811D010CBSMsg.RSV_APLY_CD, JFUStrConst.CD00343_2);
		// 異動区分
		inMap.put(EKK2811D010CBSMsg.IDO_DIV, (String)inMap.get(IN_IDO_DIV));
		// 請求契約番号
		inMap.put(EKK2811D010CBSMsg.SEIKY_KEI_NO, (String)inMap.get(SEIKY_KEI_NO_NET));
		// 更新年月日時分秒(更新前)
		inMap.put(EKK2811D010CBSMsg.UPD_DTM_BF, lastUpdDtm);
		// 機器連帯契約変更手続中フラグ
		inMap.put(EKK2811D010CBSMsg.KIKI_RNTAI_KEI_CHGECHU_FLG, JFUStrConst.KK2811_KIKI_RNTAI_KEI_CHGECHU_FLG_0);
	}

	/**
	 * 回線情報取得処理です。
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void getKaisenInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●回線対象サービス契約一覧照会（サービス契約番号）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0241B003);
		// 上りマッピング
		setEKK0241B003(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TMP_ID_EKK0241B003, TMP_ID_DTL_EKK0241B003, IN_COL_LIST_EKK0241B003, ERR_COL_EKK0241B003);
		// 明細取得
		List<HashMap> kaisenInfoList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0241B003), TMP_ID_DTL_EKK0241B003);

		if(kaisenInfoList != null && kaisenInfoList.size() > 0)
		{
			String kaisenUwNo = JFUStrConst.EMPTY;
			for (HashMap childMap : kaisenInfoList)
			{
				if(!JFUBPCommon.isNull((String)childMap.get(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO)))
				{
					kaisenUwNo = (String)childMap.get(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
					break;
				}
			}

			// サービス契約回線内訳番号を設定
			inMap.put(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO, kaisenUwNo);
		}
	}

	/**
	 * 回線対象サービス契約一覧照会（サービス契約番号）の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0241B003(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// サービス契約番号(電話)
		inMap.put(EKK0241B003CBSMsg.KEY_SVC_KEI_NO, inMap.get(IN_SVC_KEI_NO_TEL));
	}

	/**
	 * 機器提供サービス契約情報変更の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @param kikiInfoMap
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0341C230(IRequestParameterReadWrite param, String fixedText, HashMap kikiInfoMap, String lastUpdDtm) throws Exception
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 同一項目を移送
		super.copyProperties(inMap, kikiInfoMap);

		// 機器提供サービス契約番号
		inMap.put(EKK0341C230CBSMsg.KKTK_SVC_KEI_NO, kikiInfoMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_NO));
		// 機器付加情報コード
		inMap.put(EKK0341C230CBSMsg.KIKI_HUKA_INFO_CD, JFUStrConst.CD00866_030);
		// 機器送付先住所手動入力フラグ
		inMap.put(EKK0341C230CBSMsg.KIKI_SHS_AD_MAN_INPUT_FLG, JFUStrConst.CD01239_0);
		// 配送方法コード
		inMap.put(EKK0341C230CBSMsg.HAISO_WAY_CD, JFUStrConst.CD01148_1);
		// 異動区分
		inMap.put(EKK0341C230CBSMsg.IDO_DIV, (String)inMap.get(IN_IDO_DIV));
		// 更新年月日時分秒(更新前)
		inMap.put(EKK0341C230CBSMsg.UPD_DTM_BF, lastUpdDtm);
	}

	/**
	 * 全戸一括マンション機器提供サービス契約情報変更処理です
	 * 
	 * <br>
	 * @param handle
	 * @param param
	 * @param fixedText
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void updKktkInfo(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ●機器提供サービス契約一覧照会（サービス契約回線内訳番号）
		// ユーザデータ初期化
		initData(param, fixedText, IN_COL_LIST_EKK0341B504);
		// 上りマッピング
		setEKK0341B504MansZenko(param, fixedText);
		// データなしエラーなし
		ignoreSearchError(param, fixedText);
		// サービスIF実行
		executeSC(handle, param, fixedText, TMP_ID_EKK0341B504, TMP_ID_DTL_EKK0341B504, IN_COL_LIST_EKK0341B504, ERR_COL_EKK0341B504);
		// 明細取得
		List<HashMap> kikiList = getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341B504), TMP_ID_DTL_EKK0341B504);

		// 必要情報取得
		HashMap kikiInfoMap = new HashMap(); 
		if(kikiList != null && kikiList.size() > 0)
		{
			for(HashMap childMap : kikiList)
			{
				String kktkSvcCd = (String)childMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_CD);
				if(JFUStrConst.CD00132_C024.equals(kktkSvcCd))
				{
					kikiInfoMap.putAll(childMap);
					break;
				}
			}
		}

		// 多機能ルーター契約チェック(契約している場合、情報変更＆登録処理を実行する)
		if(kikiInfoMap != null && kikiInfoMap.size() > 0)
		{
			// 最終更新年月日時分秒を取得
			String lastUpdDtm = (String)kikiInfoMap.get(EKK0341B504CBSMsg1List.LAST_UPD_DTM);
			// 機器提供サービス契約ステータス
			String kktkSvcKeiStat = (String)kikiInfoMap.get(EKK0341B504CBSMsg1List.KKTK_SVC_KEI_STAT);

			// 機器提供サービス契約ステータス判定
			if(JFUStrConst.CD00056_010.equals(kktkSvcKeiStat) || JFUStrConst.CD00056_020.equals(kktkSvcKeiStat)
					|| JFUStrConst.CD00056_030.equals(kktkSvcKeiStat))
			{
				// ●機器提供サービス契約情報変更
				// ファミリーパック申込がある為、機器提供サービス契約の情報変更を行う
				// ユーザデータ初期化
				initData(param, fixedText, IN_COL_LIST_EKK0341C230);
				// 上りマッピング
				setEKK0341C230(param, fixedText, kikiInfoMap, lastUpdDtm);
				// サービスIF実行
				executeSC(handle, param, fixedText, TMP_ID_EKK0341C230, TMP_ID_DTL_EKK0341C230, IN_COL_LIST_EKK0341C230, ERR_COL_EKK0341C230);
				// 更新年月日時分秒取得
				lastUpdDtm = getTemplateValue(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_EKK0341C230), EKK0341C230CBSMsg.UPD_DTM);

				// 最終更新年月日時分秒を設定(電話・テレビ)
				JFUBPCommon.setNetSvkeiLastUpdDtm(param, lastUpdDtm);
				JFUBPCommon.setTelSvkeiLastUpdDtm(param, lastUpdDtm);
				JFUBPCommon.setTvSvkeiLastUpdDtm(param, lastUpdDtm);
			}
		}
	}

	/**
	 * 指定のキーでワーク情報から値を取得します。
	 * 
	 * <br>
	 * @param param
	 * @param key
	 * @param fixText
	 * @return
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private String getWorkMapValue(IRequestParameterReadWrite param, String key, String fixText) throws RequestParameterException
	{
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();

		HashMap inMap = null;
		// 作業項目情報
		if (workMap != null)
		{
			inMap = (HashMap)workMap.get(fixText);
		}
		else
		{
			inMap = null;
		}

		String result = null;
		if (inMap != null)
		{
			result = (String)inMap.get(key);
		}

		if (JFUStrConst.EMPTY.equals(result))
		{
			result = null;
		}

		return result;
	}
	
	/**
	 * VA機器キャンセル処理です。<br>
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception 例外
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeVaCancel(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// ユーザデータ取得
		HashMap dataMap = (HashMap)param.getData(fixedText);

		// ファミリーパック申込有無(設定値が「1」の場合は申込有り)
		boolean famipaMskmUm = JFUStrConst.CD00002_1.equals((String)dataMap.get(IN_FAMIPA_MSKM_UM));
		// サービス契約番号(電話)
		String svcKeiNoTel = (String)dataMap.get(IN_SVC_KEI_NO_TEL);
		// 異動区分
		String idoDiv = (String)dataMap.get(IN_IDO_DIV);

		// ●実行判定
		if(!famipaMskmUm || JFUBPCommon.isNull(svcKeiNoTel))
		{
			// ファミパ申込がない、または、電話のサービス契約番号がNULLの場合、処理を実行しない
			return param;
		}

		// ●VA機器情報取得処理
		HashMap vaKikiInfo = getVaKikiInfo(handle, param, fixedText, svcKeiNoTel);

		// 旧VAを契約している場合キャンセル処理を実行する
		if(vaKikiInfo != null && vaKikiInfo.size() > 0)
		{
			// 機器提供サービス契約ステータス取得
			String vaKikiStat = (String)vaKikiInfo.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT);

			// ステータス判定
			if(JFUStrConst.CD00056_010.equals(vaKikiStat))
			{
				// ●VA機器キャンセル処理(受付済の場合のみキャンセルする)
				vaKikiCancel(handle, param, fixedText, vaKikiInfo, idoDiv);
			}
		}

		return param;
	}

	/**
	 * 回線利用中サービス契約一覧照会の上りマッピング処理です。
	 * 
	 * <br>
	 * @param param
	 * @param fixedText
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void setEKK0081B007(IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		// 機能コード設定(2)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約回線内訳番号
		inMap.put(EKK0081B007CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO, (String)inMap.get(EKK0241B003CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO));
		// ＫＥＹ＿運用日付
		inMap.put(EKK0081B007CBSMsg.KEY_OPE_YMD, JFUBPCommon.getOpeDate(null));
	}

}